lvs+keepalived实现高可用的负载均衡
2015-11-22 23:28
525 查看
实验环境:ubuntu14.10,
准备4台服务器(互相可以访问)
lvs_master 192.168.142.145
lvs_slave 192.168.142.137
real_server_1 192.168.142.143
real_server_2 192.168.142.146
(下面配置过程中会将VIP设为192.168.142.144)
hostname lvs-master
永久修改主机名
vi /etc/hostname(ubuntu)
vi /etc/sysconfig/network(其他)
IP地址与主机名的绑定
vi /etc/hosts
添加一行
192.168.142.145 lvs-master
重启网络
/etc/init.d/networking restart(ubuntu)
service network restart(其他)
验证
ping lvs-master(未通过)
关闭防火墙
ufw disable(ubuntus)
service iptables stop(其他)
执行关闭防火墙自动运行命令
(ubuntu不用,上一步已关闭)
chkconfig iptables off(其他)
chkconfig –list | grep iptables(其他)
进入指定文件夹
cd /etc/init.d/
编辑脚本文件:vim realserver
SNS_VIP=192.168.142.144
/etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
保存脚本文件后更改该文件权限
chmod 755 realserver
开启realserver服务
service realserver start
apt-get install keepalived
进入keepalived.conf所在目录
cd /etc/keepalived
首先清除掉keepalived原有配置
> keepalived.conf
重新编辑keepalived配置文件
vi keepalived.conf
global_defs {
notification_email {
edisonchou@hotmail.com
}
notification_email_from sns-lvs@gmail.com
smtp_server 192.168.80.1
smtp_connection_timeout 30
router_id LVS_DEVEL # 设置lvs的id,在一个网络内应该是唯一的
}
vrrp_instance VI_1 {
state MASTER #指定Keepalived的角色,MASTER为主,BACKUP为备
interface eth0 #指定Keepalived的角色,MASTER为主,BACKUP为备
virtual_router_id 51 #虚拟路由编号,主备要一致
priority 100 #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
advert_int 1 #检查间隔,默认为1s
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.142.144 #定义虚拟IP(VIP)为192.168.2.33,可多设,每行一个
}
}
# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.142.144 80 {
delay_loop 6 # 设置健康检查时间,单位是秒
lb_algo wrr # 设置负载调度的算法为wlc
lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.142.143 80 { # 指定real server1的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.142.146 80 { # 指定real server2的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
开启keepalived服务
service keepalived start
将state由MASTER改为BACKUP
将priority由100改为99
2.Web服务器发生故障时:再来看看这时从外部访问VIP时是否可以获得另一个realserver返回的内容;
3.主负载均衡服务器发生故障时,备机立即充当主机角色提供请求转发服务;(暂停其keepalived服务:service keepalived stop)
准备4台服务器(互相可以访问)
lvs_master 192.168.142.145
lvs_slave 192.168.142.137
real_server_1 192.168.142.143
real_server_2 192.168.142.146
(下面配置过程中会将VIP设为192.168.142.144)
配置4台服务器
修改当前会话中的主机名hostname lvs-master
永久修改主机名
vi /etc/hostname(ubuntu)
vi /etc/sysconfig/network(其他)
IP地址与主机名的绑定
vi /etc/hosts
添加一行
192.168.142.145 lvs-master
重启网络
/etc/init.d/networking restart(ubuntu)
service network restart(其他)
验证
ping lvs-master(未通过)
关闭防火墙
ufw disable(ubuntus)
service iptables stop(其他)
执行关闭防火墙自动运行命令
(ubuntu不用,上一步已关闭)
chkconfig iptables off(其他)
chkconfig –list | grep iptables(其他)
配置2台realserver
装上nginx,访问80端口返回不同内容进入指定文件夹
cd /etc/init.d/
编辑脚本文件:vim realserver
SNS_VIP=192.168.142.144
/etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
保存脚本文件后更改该文件权限
chmod 755 realserver
开启realserver服务
service realserver start
配置主lvs
安装keepalivedapt-get install keepalived
进入keepalived.conf所在目录
cd /etc/keepalived
首先清除掉keepalived原有配置
> keepalived.conf
重新编辑keepalived配置文件
vi keepalived.conf
global_defs {
notification_email {
edisonchou@hotmail.com
}
notification_email_from sns-lvs@gmail.com
smtp_server 192.168.80.1
smtp_connection_timeout 30
router_id LVS_DEVEL # 设置lvs的id,在一个网络内应该是唯一的
}
vrrp_instance VI_1 {
state MASTER #指定Keepalived的角色,MASTER为主,BACKUP为备
interface eth0 #指定Keepalived的角色,MASTER为主,BACKUP为备
virtual_router_id 51 #虚拟路由编号,主备要一致
priority 100 #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
advert_int 1 #检查间隔,默认为1s
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.142.144 #定义虚拟IP(VIP)为192.168.2.33,可多设,每行一个
}
}
# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.142.144 80 {
delay_loop 6 # 设置健康检查时间,单位是秒
lb_algo wrr # 设置负载调度的算法为wlc
lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.142.143 80 { # 指定real server1的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.142.146 80 { # 指定real server2的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
开启keepalived服务
service keepalived start
配置从lvs
配置文件只需修改2两处将state由MASTER改为BACKUP
将priority由100改为99
验证性测试
1.指定请求的均衡转发:因为两个Web服务器的权重都一样,所以会依次转发给两个Web服务器;2.Web服务器发生故障时:再来看看这时从外部访问VIP时是否可以获得另一个realserver返回的内容;
3.主负载均衡服务器发生故障时,备机立即充当主机角色提供请求转发服务;(暂停其keepalived服务:service keepalived stop)
相关文章推荐
- Android display架构分析
- 平民架构的春天――UCloud数据方舟实战记
- 大型分布式网站架构设计与实践《概述与大纲》
- 统一监控报警平台架构设计思路
- 阿里云飞天系统的技术架构
- 背景相关与系统架构分析
- 使用Android库项目时适用的架构模式
- 网站浮动窗口 备忘
- IIS发布网站遇到的异常
- 推荐几个配色和图标网站
- 支付宝手机网站支付私钥公钥生成(window环境)
- 腾讯微信技术总监周颢:一亿用户增长背后的架构秘密
- Extjs的架构设计思考,单页面应用 or 多页面?
- 架构那些事3--架构演进
- 架构的那些事2--安卓的奋进
- 架构的那些事1--分层框架
- 卢松松博客加入360网站认证
- 一个统计网站访问IP的实例
- 第一次撰写个人网站的一点技术总结
- (转)RabbitMQ 集群与高可用配置