使用Keepalived实现双机热备


1Keepalived

keepalived是专为LVSHA设计的一款健康检查工具,支持故障自动切换和节点健康状态检查,可判断LVS负载调度器和节点服务器的可用性,构建高可用性的LVS负载均衡群集

②官方网站:http://www.keepalived.org/

     Snip20190221_1.pngSnip20190221_2.pngkl-logo-30.gif

2VRRPVirtual Router Redundancy Protocol,虚拟路由冗余协议)

VRRP是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,其工作原理与CISCOHSRP类似,即由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务,每个热备组内同一时刻只有一台主路由器(master)提供服务,其他路由器处于冗余状态(backup),若当前主路由器失效,则处于冗余状态的路由器会自动接替虚拟IP地址,继续提供服务

VRRPHSRP主要区别在于:HSRPCISCO私有,而VRRP是公有的,目前厂商都支持;HSRP中不允许虚拟IP地址使用HSRP组内设备的真实IP地址,而VRRP中允许使用VRRP组内设置的IP地址

③虚拟IP地址,即虚拟路由器的IP地址可以在热备组内的路由器之间进行转移,因此也称为漂移IP地址,其不需要手动配置,Keepalived会自动建立进行配置管理

3keepalived主配置文件/etc/keepalived/keepalived.conf

全局设置:global_defs { ... }

热备设置:vrrp_instance 实例名称 { ... }

样例文件位于:/etc/keepalived/samples/...

state:设置本节点状态,MASTERSLAVE

priority:设置竞选优先级,数值越大优先级越高

virtual_ipaddress { ... }:设置漂移IP地址

 

 

实验一:使用Keepalived实现双机热备

 

Snip20190221_3.png

一、基本配置

1、配置各Linux主机名

vi /etc/sysconfig/network

HOSTNAME=master.benet.com

vi /etc/hosts

172.16.16.173   master.benet.com

2、配置IP地址、关闭iptables

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=static

IPADDR=172.16.16.173

NETMASK=255.255.255.0

rm -f /etc/udev/rules.d/70-persistent-net.rules

reboot          --------重新启动虚拟机,其他虚拟机配置与之类似

 

二、配置主服务器

1、安装支持软件

yum -y install kernel-devel openssl-devel popt-devel

2、编译安装Keepalived

tar zxf keepalived-1.2.2.tar.gz -C /usr/src

cd /usr/src/keepalived-1.2.2/

./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-131.0.15.el6.i686/

                              ------keepalived安装到根目录,同时指定Linux内核位置

make & make install

chkconfig --add keepalived      ----keepalived添加为系统服务,方便管理

chkconfig keepalived on

3、修改主配置文件/etc/keepalived/keepalived.conf

vi /etc/keepalived/keepalived.conf

      global_defs {

   router_id master.benet.com            -----指定本服务器的主机名

      }

    vrrp_instance VI_1 {                                -----定义VRRP实例

    state MASTER                   ---- MASTER为主路由器,SLAVE为备用路由器

    interface eth0                                    -----承载VIP地址的物理接口

    virtual_router_id 51                         -----热备组ID号,每个组应保持一致

    priority 100                                         -----优先级,越大优先级越高

    advert_int 1                                        -----心跳频率

    authentication {                                 -----认证信息

        auth_type PASS                         -----认证类型为密码

        auth_pass 123456                    ----密码字符串

    }

    virtual_ipaddress {                      -----指定漂移IP地址

        172.16.16.172

    }

      }
service keepalived start
ip addr show dev eth0                 -----
通过ip命令查看自动添加的虚拟IP地址

 

三、配置备用服务器

备用服务器的配置与主服务器基本类似,只有主配置文件keepalived.conf的部分配置项有所不同

1、安装支持软件

yum -y install kernel-devel openssl-devel popt-devel

2、编译安装Keepalived

tar zxf keepalived-1.2.2.tar.gz -C /usr/src

cd /usr/src/keepalived-1.2.2/

./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-131.0.15.el6.i686/

                                     ------keepalived安装到根目录,同时指定Linux内核位置

make & make install

chkconfig --add keepalived        ----keepalived添加为系统服务,方便管理

chkconfig keepalived on

3、修改主配置文件/etc/keepalived/keepalived.conf

vi /etc/keepalived/keepalived.conf

      global_defs {

   router_id backup.benet.com

      }

    vrrp_instance VI_1 {

    state SLAVE                                      ----- SLAVE表示备用路由器

    priority 90                                            -----优先级数值应小于主服务器

    authentication {

        auth_type PASS

        auth_pass 123456                    ----密码字符串与主服务器相同

    }

    virtual_ipaddress {

        172.16.16.172                          -----指定漂移IP地址

    }

      }
service keepalived start
ip addr show dev eth0

 

四、测试双机热备

Keepalived的日志消息保存在/var/log/messages中,可查看此日志文件观察热备状态的变化

1、连通性测试

步骤:在客户机上持续ping虚拟IP地址====>禁用主服务器的eth0网卡===>启用主服务器的eth0网卡,观察变化

ping -t 172.16.16.172

2、访问Web服务测试

步骤:在主服务器和备用服务器上分别安装httpd服务,并提供不同的web页面====>禁用主服务器的eth0网卡===>启用主服务器的eth0网卡,访问测试

http://172.16.16.172

3、查看日志文件

观察日志文件的变化

more /var/log/messages

 

 

实验二:构建LVS+Keepalived高可用性群集

 

Snip20190221_4.png

本实验案例以DR模式的LVS群集为基础,通过LVS+Keepalived实现Web站点的负载均衡和高可用性,其中包括两台热备的负载调度器、两台Web节点服务器、一台NFS服务器、一台客户机

 

一、基本配置

配置各Linux主机名、关闭iptables

二、配置主调度器

1、为eth0eth1eth0:0配置IP地址

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=static

IPADDR=172.16.16.253

NETMASK=255.255.255.0

vi /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

ONBOOT=yes

IPADDR=192.168.7.253

NETMASK=255.255.255.0

vi /etc/sysconfig/network-scripts/ifcfg-eth0:0

DEVICE=eth0:0

ONBOOT=yes

IPADDR=172.16.16.172

NETMASK=255.255.255.0

rm -f /etc/udev/rules.d/70-persistent-net.rules

reboot                --------重新启动虚拟机

2、调整/proc内核参数,关闭重定向响应

由于负载调度器和各节点共用VIP地址,为避免ARP解析异常,故关闭内核的重定向响应

vi /etc/sysctl.conf

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.eth0.send_redirects = 0

net.ipv4.conf.eth1.send_redirects = 0

sysctl –p

3、加载模块、安装LVS群集管理工具

modprobe ip_vs

rpm -ivh /mnt/iso/Packages/ipvsadm-1.25-9.el6.i686.rpm

yum -y install vsftpd        -----配置yum仓库,方便安装软件包

vi /etc/vsftpd/vsftpd.conf

anon_root=/mnt

service vsftpd start

chkconfig vsftpd on

4、编译安装Keepalived

yum -y install kernel-devel openssl-devel popt-devel

tar zxvf keepalived-1.2.2.tar.gz -C /usr/src

cd /usr/src/keepalived-1.2.2/

./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-131.0.15.el6.i686/

                              -----keepalived安装到根目录,同时指定Linux内核位置

make & make install

chkconfig --add keepalived      ----keepalived添加为系统服务,方便管理

chkconfig keepalived on

5、修改主配置文件/etc/keepalived/keepalived.conf

vi /etc/keepalived/keepalived.conf

      global_defs {

    router_id master.benet.com                        -----指定本服务器的主机名

      }

    vrrp_instance VI_1 {                                              -----定义VRRP实例

    state MASTER                 ----- MASTER为主路由器,SLAVE为备用路由器

    interface eth0                                                  -----承载VIP地址的物理接口

    virtual_router_id 51                           -----热备组ID号,每个组应保持一致

    priority 100                                                       -----优先级,越大优先级越高

    advert_int 1                                                      -----心跳频率

    authentication {                                               -----认证信息

        auth_type PASS                                       -----认证类型为密码

        auth_pass 123456                                  ----密码字符串

    }

    virtual_ipaddress {                                    -----指定漂移IP地址

        172.16.16.172

    }

   }

virtual_server 172.16.16.172 80 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

    nat_mask 255.255.255.0

    persistence_timeout 50

    protocol TCP

    real_server  172.16.16.21 80 {

        weight 1

        TCP_CHECK {

            connect_port 80

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }

    real_server  172.16.16.22 80 {

        weight 1

        TCP_CHECK {

            connect_port 80

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }

}
service keepalived start

 

三、配置从调度器

从调度器折配置与主调度器基本相同,不同之处主要在于router_idstatepriority参数

vi /etc/keepalived/keepalived.conf

      global_defs {

     router_id master.benet.com

      }

    vrrp_instance VI_1 {

    state SLAVE

    priority 90

   }

service keepalived start

 

四、配置NFS服务器

1、为eth0配置IP地址

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.7.250

NETMASK=255.255.255.0

rm -f /etc/udev/rules.d/70-persistent-net.rules

reboot

2、安装ntf-utilsrpcbind软件包

yum -y install nfs-utils rpcbind

3、设置共享目录

mkdir -p /opt/wwwroot

vi /etc/exports

/opt/wwwroot    192.168.7.0/24(rw,sync,no_root_squash)

4、启动服务并查看发布的共享目录

service rpcbind start

service nfs start

chkconfig rpcbind on

chkconfig nfs on

netstat -anpt | grep rpcbind             -----使用111端口

showmount -e 127.0.0.1

 

五、配置节点服务器

1、为eth0eth1lo:0配置IP地址,并添加路由记录

①配置IP地址

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=static

IPADDR=172.16.16.21

NETMASK=255.255.255.0

vi /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

ONBOOT=yes

IPADDR=192.168.7.21

NETMASK=255.255.255.0

vi /etc/sysconfig/network-scripts/ifcfg-lo:0

DEVICE=lo:0

ONBOOT=yes

IPADDR=172.16.16.172          -----此地址仅用作响应数据包的源地址

NETMASK=255.255.255.255      -----子网掩码必须全为1

rm -f /etc/udev/rules.d/70-persistent-net.rules

reboot             -------重新启动虚拟机,节点2的配置与之类似

②添加VIP本地访问路由

vi /etc/rc.local

/sbin/route add -host 172.16.16.172 dev lo:0

route add -host 172.16.16.172 dev lo:0

2、调整/proc内核参数,关闭重定向响应

vi /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.default.arp_ignore = 1

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

sysctl –p

3、安装rpcbind软件包以实现访问NFS共享资源

yum -y install nfs-utils rpcbind

service rpcbind start

chkconfig rpcbind on

showmount -e 192.168.7.250

4、挂载NFS共享目录

mkdir -p /var/www/html

mount 192.168.7.250:/opt/wwwroot /var/www/html

vi /etc/fstab

192.168.7.250:/opt/wwwroot /var/www/html   nfs     defaults,_netdev 0 0

5、安装httpd软件包并创建测试页面

yum –y install httpd

echo welcome to web! > /var/www/html/index.html

service httpd start

chkconfig httpd on

 

六、测试LVS群集

在外网客户机中访问http://172.16.16.172可以看到Web页面内容

当主调度器失效时Web站点仍可以访问(可能需要刷新或重新打开浏览器),实现高可用性;只要有两台或以上Web节点服务器可用,则可实现负载均衡

只要保持至少一个Web节点服务器可用,则整个站点依然可用

more /var/log/messages     ----查看日志,跟踪故障切换过程

ipvsadm -Ln                    -----查看节点状态

ipvsadm -Lnc                         -----查看负载连接情况

 

补充:启用邮件通知功能(主、从调度器)

当节点状态异常时发送通知

notification_email:设置收信人地址

notification_email_from:设置发信人地址

smtp_server:指定SMTP发信服务器

smtp_connect_timeoutSMTP连接超时

1、安装sendmail软件包

yum -y install sendmail

service sendmail start

chkconfig sendmail on

2、为Keepalived添加邮件通过设置

vi /etc/keepalived/keepalived.conf

global_defs {

   notification_email {

     [email protected]

   }

   notification_email_from ftp  [email protected]

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id    master.benet.com

}

3、停止某个节点的Web服务,过几分钟再恢复,查看通知邮件内容

讲师介绍.jpg


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章