Keepalived高可用集群来实现web服务器负载均衡集群
一、Keepalived的介绍
Keepalived是一个提供HA重要的底层工具,最早期的作用是为ipvs提供HA功能的,还是一个可以提供vrrp已经health-check功能的服务软件,可以只用它提供双机浮动的vip(vrrp虚拟路由功能),这样可以简单实现一个双机热备高可用功能。同时我们还可以利用LVS+Keepalived基于完整开源软件的架构可以为你提供一个负载均衡及高可用的服务器。Keepalived是一个基于VRRP协议来实现的WEB服务高可用方案,可以利用其来避免单点故障。一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
二、VRRP的介绍
VRRP:VirtualRouterRedundancyProtocol,是虚拟路由冗余协议,通过此协议我们可以把多个路由器做成一个虚拟路由器,从而来保证其中某个路由宕掉的时候不会造成我们内部外出网络的全部中断。VRRP中的各个路由器都有一个唯一的标识VRID,其范围为0-255,路由器对外表现为唯一的虚拟MAC地址,地址的格式为00-00-5E-00-01-[VRID]。主控路由器负责对ARP请求用该MAC地址做应答。这样,无论如何切换,保证给终端设备的是唯一一致的IP和MAC地址,减少了切换对终端设备的影响。其中的VRID中的0和255是保留的,0用于IP地址所有者主动放弃主控者角色时使用,255用于VRRP路由器的IP地址和虚拟路由器的接口IP地址相同时所拥有
三、LVS的配置与安装,
启用四台虚拟机,我选择是192.168.0.x.的网段,虚拟主机是172.16.9.1,由于不在一个网段,需要加一个路由Routddeadddefaultgw172.16.0.1
RealServer1:192.168.0.54RealServer2:192.168.0.55
HA1:192.168.0.53HA2;192.168.0.57
VIP:172.16.9.1
配置之前keepalived之前,先下载好yum软件包,配置好http的软件安装,解决好依赖关系,更有利于后面的进行
RIP不能被外部主机解析使用脚本vipset.sh进行设置,要用vipset.sh脚本如配置VIP和arp参数
测试一下
RealServer1
RealServer2
Vipset.sh脚本如下所示:
#!/bin/bash##ScripttostartLVSDRrealserver.#description:LVSDRrealserver#./etc/rc.d/init.d/functionsVIP=172.16.9.1#VIP地址host=`/bin/hostname`#定义host变量case"$1"instart)#start的时候设置本机arp不被外部主机解析#StartLVS-DRrealserveronthismachine./sbin/ifconfiglodown/sbin/ifconfigloupecho1>/proc/sys/net/ipv4/conf/lo/arp_ignoreecho2>/proc/sys/net/ipv4/conf/lo/arp_announceecho1>/proc/sys/net/ipv4/conf/all/arp_ignoreecho2>/proc/sys/net/ipv4/conf/all/arp_announce/sbin/ifconfiglo:0$VIPbroadcast$VIPnetmask255.255.255.255up#配置vip在lo:0,并且设置广播地址和子网掩码,此处使用32位是保证此vip不能与其他地址通信。/sbin/routeadd-host$VIPdevlo:0#增加路由;;stop)#stop的时候恢复到系统的初始化arp参数#StopLVS-DRrealserverloopbackdevice(s)./sbin/ifconfiglo:0downecho0>/proc/sys/net/ipv4/conf/lo/arp_ignoreecho0>/proc/sys/net/ipv4/conf/lo/arp_announceecho0>/proc/sys/net/ipv4/conf/all/arp_ignoreecho0>/proc/sys/net/ipv4/conf/all/arp_announce;;status)#StatusofLVS-DRrealserver.islothere=`/sbin/ifconfiglo:0|grep$VIP`isrothere=`netstat-rn|grep"lo:0"|grep$VIP`if[!"$islothere"-o!"isrothere"];then#Eithertherouteorthelo:0device#notfound.echo"LVS-DRrealserverStopped."elseecho"LVS-DRrealserverRunning."fi;;*)#Invalidentry.echo"$0:Usage:$0{start|status|stop}"exit1;;Esac
四、DR上的相关软件的配置和安装
(1)下载keepalived-1.2.7-5.el5.i386.rpm
(2)安装keepalived软件,一定要解决依赖关系
安装之前一定要与服务器时间同步ntpdate172.16.9.1
(3)、ipvsadm软件安装
五、LVS的配置包括两部分,虚拟主机组和虚拟主机
virtual_server192.168.200.100443{#设置VIPportdelay_loop6#多少秒检查一次realserver的健康状态lb_algorr#调度算法lb_kindNAT#lvs模型nat_mask255.255.255.0#虚拟VIP的掩码persistence_timeout50#长连接时间protocolTCP#协议类型real_server192.168.201.100443{#定义realserverweight1#定义权重SSL_GET{#检查web服务的SSL状况url{path/digestff20ad2481f97b1754ef3e12ecd3a9cc}url{#检查服务器的web服务状况path/mrtg/digest9b3a0c85a887a256d6939da88aabd8cd}connect_timeout3#连接超时时间nb_get_retry3#重试次数delay_before_retry3#重试连接时间间隔}}}
六、keepalived配置文件的详解
(1)RS1里面的keepalived.conf上的配置
Keepalived.conf的脚本!ConfigurationFileforkeepalivedglobal_defs{notification_email{root@localhost}notification_email_fromroot@localhostsmtp_server127.0.0.1smtp_connect_timeout30router_idLVS_DEVEL}vrrp_instanceVI_1{stateMASTERinterfaceeth0virtual_router_id51priority101advert_int1authentication{auth_typePASSauth_passkeepalivedpass}virtual_ipaddress{172.16.9.1}}virtual_server172.16.9.180{delay_loop6lb_algorrlb_kindNATnat_mask255.255.0.0persistence_timeout50protocolTCPreal_server192.168.0.5480{weight1SSL_GET{url{path/status_code200}connect_timeout3nb_get_retry3delay_before_retry3}}}virtual_server172.16.9.180{delay_loop6lb_algorrlb_kindDRnat_mask255.255.0.0#persistence_timeout50protocolTCPreal_server192.168.0.5480{weight2TCP_CHECK{connect_timeout3nb_get_retry3delay_before_retry1}}real_server192.168.0.55{weight2TCP_CHECK{connect_timeout3nb_get_retry3delay_before_retry1connect_port80}}}
然后把RS1上的复制到RS2上,并把其中的stata改成BACKUP,priority修改为100,其他内容不变
RS2里面的keepalived.conf脚本
!ConfigurationFileforkeepalivedglobal_defs{notification_email{root@localhost}notification_email_fromroot@localhostsmtp_server127.0.0.1smtp_connect_timeout30router_idLVS_DEVEL}vrrp_instanceVI_1{stateBACKUPinterfaceeth0virtual_router_id51priority100advert_int1authentication{auth_typePASSauth_passkeepalivedpass}virtual_ipaddress{172.16.9.1}}virtual_server172.16.9.180{delay_loop6lb_algorrlb_kindDRnat_mask255.255.0.0#persistence_timeout50protocolTCPreal_server192.168.0.5480{weight2TCP_CHECK{connect_timeout3nb_get_retry3delay_before_retry1}}real_server192.168.0.55{weight2TCP_CHECK{connect_timeout3nb_get_retry3delay_before_retry1connect_port80}}}
启动keepalived服务;
访问虚拟IP地址
主备转换测试
#cd/etc/keepalived/
#touchdown
在备用节点node2上查看
访问虚拟IP
现在把down文件删除,MASTER节点会夺回资源,因为在node1上的优先级(101)比nod2上的优先级(100)高
双主模式实现
两个主机web服务同时开启,配置的VIP不同,让他们互为主从
修改keepalived.conf配置文件(只需修改配置文件末尾“vrrp_instanceVI_2”中的内容)
vrrp_instanceVI_2{interfaceeth0stateBACKUP#BACKUPforslaverouterspriority100#100forBACKUPvirtual_router_id52garp_master_delay1authentication{auth_typePASSauth_passpassword}track_interface{eth0}virtual_ipaddress{172.16.51.80/16deveth0labeleth0:1}track_script{chk_httpdchk_schedown}notify_master"/etc/keepalived/notify.shmastereth0:1"notify_backup"/etc/keepalived/notify.shbackupeth0:1"notify_fault"/etc/keepalived/notify.shfaulteth0:1"}
在node2上启用“vrrp_instanceVI_2”中的内容后,修改一下第二VIP地址与脚本名称(track_httpd,chk_schedown)
修改完成后,启动keepalived服务,查看node1与node2上的VIP地址配置
node1主机
node2主机
测试
模拟node1出现故障
#cd/etc/keepalived/
#touchdown
查看node2上虚拟IP地址
此时,访问172.16..9.1与192.16.53都是由node2主机返回结果
如果觉得《Keepalived高可用集群来实现web服务器负载均衡集群》对你有帮助,请点赞、收藏,并留下你的观点哦!