Keepalived热备

一、Keepalived

1.带健康检查的LVS工具

keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived是自动完成,不需人工干涉.Keepalived自带健康检查,LVS自带的ipvsdm软件不具备健康检查功能.

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

2.Keepalived工作层

Layer3,4,5工作在IP/TCP协议栈的IP层,TCP层,及会话层,原理分别如下:

Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。

Layer4:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除

Layer5:Layer5对指定的URL执行HTTP GET。然后使用MD5算法对HTTP GET结果进行求和。如果这个总数与预期值不符,那么测试是错误的,服务器将从服务器池中移除。该模块对同一服务实施多URL获取检查。如果您使用承载多个应用程序服务器的服务器,则此功能很有用。此功能使您能够检查应用程序服务器是否正常工作。MD5摘要是使用genhash实用程序(包含在keepalived软件包中)生成的。

补充:MD5算法虽然是个加密算法,但是它也可以用于检测文件是否变化,我们将某个文件通过md5算法加密后得到一串密文,我们改变了文件的内容再做md5加密后又会得到一串密文,如果第二次密文不等于第一串密文可以反推出文件内容发生变化.

五层正是利用这个特性做的检查,如果一个服务器是健康的我们要求它的文件内容不被篡改,否则Keepalived将它从服务池中删除.

二、使用Keepalived

1.拓扑图

准备三台Linux服务器,两台做Web服务器,并部署Keepalived高可用软件.这个实验用web1作为主服务器,用web2作为备份服务器,但是他们两者也是Web服务器,没有在他们的前面加入一个调度服务器,下一个实验将会补充

  • 使用Keepalived实现web服务器的高可用
  • Web服务器IP地址分别为192.168.4.100和192.168.4.200
  • Web服务器的浮动VIP地址(vrrp)为192.168.4.80
  • 客户端通过访问VIP地址访问Web页面

2.Web服务器配置

 1)创建Web服务

  1. [root@web1 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.100/24 connection.autoconnect yes   
  2. [root@web1 ~]# nmcli connection up eth0  //配置并激活ip地址
  3. [root@web1 ~]# yum -y install httpd     //装web服务用于测试访问效果哦
  4. [root@web1 ~]# echo "192.168.4.100" > /var/www/html/index.html
  5. [root@web1 ~]# systemctl restart httpd

 2)修改Keepalived配置文件

  keepalived文件分为3个部分,第一部分是定义了收发邮件人 global_defs{...}

  第二部分定义了vrrp虚拟接口 vrrp_instance xx{..}

  第三部分定义了虚拟服务器virtual_server x.x.x.x {...}

  标注了实验需要修改的须修改

web1:

  1. [root@web1 ~]#yum install -y keepalived                //装服务
  2. [root@web1 ~]# vim /etc/keepalived/keepalived.conf  //修改配置文件 
  3. //第一部分
  4. global_defs {
  5. notification_email {
  6. root@localhost                                                    #设置报警收件人邮箱
  7. }
  8. notification_email_from root@localhost              #设置发件人
  9. smtp_server 127.0.0.1                                        #定义邮件服务器,为本机
  10. smtp_connect_timeout 30
  11. router_id web1                                                   #设置路由ID号(实验需要修改),修改成本机主机名
  12. }
  13. //第二部分
  14. vrrp_instance VI_1 {
  15. state MASTER                                                 #主服务器为MASTER(备服务器web2需要修改为BACKUP)
  16. interface eth0                                                   # 定义网络接口,默认是本机第一张网卡
  17. virtual_router_id 51                                          #主备服务器VRID号必须一致
  18. priority 100                                                       #服务器优先级,优先级高优先获取VIP,Web2需要调低这个优先级
  19. advert_int 1
  20. authentication {
  21. auth_type pass
  22. auth_pass 1111                                                #主备服务器密码必须一致
  23. }
  24. virtual_ipaddress {                                         #为这个网络接口(网卡)配置VIP(实验需要修改)
  25. 192.168.4.80
  26. }
  27. }

web2:

  1. [root@web2 ~]#yum install -y keepalived                    //装服务
  2. [root@web2 ~]# vim /etc/keepalived/keepalived.conf  //修改配置文件 
  3. //第一部分
  4. global_defs {
  5. notification_email {
  6. root@localhost                                                       #设置报警收件人邮箱
  7. }
  8. notification_email_from root@localhost                 #设置发件人
  9. smtp_server 127.0.0.1                                           #定义邮件服务器
  10. smtp_connect_timeout 30
  11. router_id web2                                                       #设置路由ID号(实验需要修改),修改成本机主机名
  12. }
  13. //第二部分
  14. vrrp_instance VI_1 {
  15. state BACKUP                                                      #备服务器web2需要修改为BACKUP
  16. interface eth0                                                        #定义网络接口,默认是本机第一张网卡
  17. virtual_router_id 51                                               #主备服务器VRID号必须一致
  18. priority 80                                                      #服务器优先级,优先级高优先获取VIP,Web2需要调低这个优先级
  19. advert_int 1
  20. authentication {
  21. auth_type pass
  22. auth_pass 1111                                                      #主备服务器密码必须一致
  23. }
  24. virtual_ipaddress {                                               #为这个网络接口(网卡)配置VIP(实验需要修改)
  25. 192.168.4.80
  26. }
  27. }

3)启动并测试

  1. [root@web1 ~]# systemctl start keepalived
  2. [root@web2 ~]# systemctl start keepalived
  3. [root@web1 ~]# iptables -F   //启动keepalived会自动添加一个drop的防火墙规则,需要清空!
  4. [root@web1 ~]# setenforce 0
  5. [root@web2 ~]# iptables -F
  6. [root@web1 ~]# setenforce 0
  7. [root@web1 ~]# ip addr show eth0  //查看一下 红色标记的就是VIP 确认你修改的是哪一张网卡
  8. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 52:54:00:24:81:b8 brd ff:ff:ff:ff:ff:ff
        inet 192.168.4.100/24 brd 192.168.4.255 scope global noprefixroute eth0
           valid_lft forever preferred_lft forever
        inet 192.168.4.80/32 scope global eth0
           valid_lft forever preferred_lft forever
  9. [root@web1~]# ip addr show eth0
  10. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 52:54:00:24:81:b8 brd ff:ff:ff:ff:ff:ff
        inet 192.168.4.200/24 brd 192.168.4.255 scope global noprefixroute eth0
           valid_lft forever preferred_lft forever
        inet 192.168.4.80/32 scope global eth0
           valid_lft forever preferred_lft forever
     

 4)客户端访问

客户端使用curl命令连接http://192.168.4.80,查看Web页面;关闭Web1服务器的网卡,客户端再次访问http://192.168.4.80,验证是否可以正常访问服务。若关闭Web1后仍然可以访问,说明实验成功

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值