设为首页 收藏本站
查看: 1978|回复: 0

[经验分享] Keepalived 之 Keepalived + LVS 实现负载均衡

[复制链接]

尚未签到

发表于 2018-12-29 08:33:30 | 显示全部楼层 |阅读模式
一、Keepalived 与 LVS 简单工作原理了解
  1、Keepalived 管理LVS负载均衡软件,Keepalived 可以通过读取自身的配置文件,实现通过更底层的接口直接管理LVS的配置以及控制服务的启动、停止等功能,这使用LVS的应用更加简单方便了。
  2、Keepalived 实现对LVS集群节点健康检查功能,当LVS集群中的某一个甚至是几个节点服务器同时发生故障无法提供服务时,Keepalived 服务会自动将失效的节点服务器从LVS 的正常转发队列中清除出去,并将请求调度到别的正常节点服务器上,从而保证最终用户的访问不受影响,并且故障恢复时,又可以加到正常转发队列中。
  3、Keepalived 作为系统网络服务的高可用功能,可以实现任意两台主机之间的故障转移和自动切换。
  4、LVS 负责数据转发,基于第层网络传输层,使用ARP协议,修改目的地MAC地址,实现数据的高速转发,相对于NGINX的第七层转发,有一定的优势。

二、实现拓扑图


三、实验步骤

1、分别设置好各台主机的IP地址,如:

主机-负载均衡:10.3.150.196
备机-负载均衡:10.3.150.197
web01:10.3.150.198
web02:10.3.150.199
2、在两台web主机里,分别设置绑定 Local Loopback IP地址(VIP:10.3.150.200)

[root@web01 ~]# vi /etc/init.d/realserver
#!/bin/bash
#
# realserver
#
# chkconfig: 2345 24 76
# description: realserver ip
SNS_VIP=10.3.150.200
/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
[root@web01 ~]# chmod +x /etc/init.d/realserver
[root@web01 ~]# chkconfig --add /etc/init.d/realserver
[root@web01 ~]# chkconfig realserver on
[root@web01 ~]# /etc/init.d/realserver start
3、检查web服务器绑定local loopback ip 是否正常。

[root@web01 ~]# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:50:56:AA:51:29  
inet addr:10.3.150.198  Bcast:10.3.150.255  Mask:255.255.255.0
inet6 addr: fe80::250:56ff:feaa:5129/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:52847 errors:0 dropped:0 overruns:0 frame:0
TX packets:3322 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4160205 (3.9 MiB)  TX bytes:272504 (266.1 KiB)
lo        Link encap:Local Loopback  
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:65536  Metric:1
RX packets:80 errors:0 dropped:0 overruns:0 frame:0
TX packets:80 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5200 (5.0 KiB)  TX bytes:5200 (5.0 KiB)
lo:0      Link encap:Local Loopback  
inet addr:10.3.150.200  Mask:255.255.255.255
UP LOOPBACK RUNNING  MTU:65536  Metric:1
4、配置主机-负载均衡的keepalived.conf配置文件

! Configuration File for keepalived
global_defs {
notification_email {
345619885@qq.com
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id lb01
}
vrrp_instance VI_1 {
state MASTER       #指定Keepalived角色,MASTER为主
interface eth1         #Keepalived 绑定的网络
virtual_router_id 53    #虚拟路由编号,主备必须要一致
priority 150      #定义优先级,数字越大,优先级越高
advert_int 1
authentication {
auth_type PASS
auth_pass 3333
}
virtual_ipaddress {
10.3.150.200/24 dev eth1 label eth1:1     #定义虚拟IP(VIP)为10.3.150.200   
}
}
# 定义对外提供服务的LVS的VIP以及port
virtual_server 10.3.150.200 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 10.3.150.198 80 {  # 指定real server1的IP地址
weight 3   # 配置节点权值,数字越大权重越高              
TCP_CHECK {  
connect_timeout 10         
nb_get_retry 3  
delay_before_retry 3  
connect_port 80  
}  
}  
real_server 10.3.150.199 80 {  # 指定real server2的IP地址
weight 3  # 配置节点权值,数字越大权重越高  
TCP_CHECK {  
connect_timeout 10  
nb_get_retry 3  
delay_before_retry 3  
connect_port 80  
}  
}  
}
5、配置备机-负载均衡的keepalived.conf配置文件

与主机-负载均衡一致,只需修改以下两处:
1、state MASTER   改为 state BACKUP
2、priority 150    改为  priority 100
6、启动两台负载均衡的keepalived服务

[root@lb01 keepalived]# service keepalived start
在主机-负载均衡器上,查看是否获取了VIP(10.3.150.200)
[root@lb01 keepalived]# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:50:56:AA:B1:25  
inet addr:10.3.150.196  Bcast:10.3.150.255  Mask:255.255.255.0
inet6 addr: fe80::250:56ff:feaa:b125/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:89077 errors:0 dropped:0 overruns:0 frame:0
TX packets:14028 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7242746 (6.9 MiB)  TX bytes:982746 (959.7 KiB)
eth1:1    Link encap:Ethernet  HWaddr 00:50:56:AA:B1:25  
inet addr:10.3.150.200  Bcast:0.0.0.0  Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
lo        Link encap:Local Loopback  
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:65536  Metric:1
RX packets:80 errors:0 dropped:0 overruns:0 frame:0
TX packets:80 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5120 (5.0 KiB)  TX bytes:5120 (5.0 KiB)
四、验证故障切换是否成功
  1、访问VIP,是否能正常访问得到web01和web02的内容(web01和web02为不一致的静态文件内容,以方便区别,检查是否生效)。
  2、停止web01服务,访问VIP,看是否还能正常访问web02的内容,同时又不会提示web01无法访问的错误信息,因LVS能做端口健康检查。
  3、启动web01,访问VIP,是否可以同时访问web01和web02的内容。
  4、停止lb01主机-负载均衡的keepalived服务,检查VIP是否漂移到备机-负载负载器的主机上,同时访问VIP,是否正常访问web01与web02的内容。
  5、启动lb01主机-负载均衡的keepalived服务,检查VIP是否漂移到主机-负载均衡器,同时访问VIP,是否能正常访问web01与web02的内容。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-657039-1-1.html 上篇帖子: Keepalived+LVS DR 下篇帖子: Lvs+Keepalived+Bind+web构建高可用负载均衡系统
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表