LVS-DR+keepalived高可用群集

Posted baorong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVS-DR+keepalived高可用群集相关的知识,希望对你有一定的参考价值。

LVS-DR+keepalived高可用群集

1.1 Keepalived概述

1.1.1 Keepalived介绍

    keepalived是一个类似于layer3,4 & 5交换机制的软件,也就是我们平时说的第三层,、第四层和第五层交换。keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

1.1.2 Keepalived工作原理

Layer3,4 & 5工作在IP/TCP协议栈的IP层,TCP层,及应用层。

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

    Layer4:主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,咋keepalived将把这台服务器从服务器群中删除。

Layer5:Layer5就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将吧服务器从服务器群中剔除。

1.1.3 Keepalived的作用与构建

1、管理VIP     VIP会在LVS之间漂移

2、监控LVS分发器

运行在主分发的Keepalived会以组播的形式向网络中宣告自己,即主分发器还活着,备用节点能收到。当备用节点,在一个时间单位中收不到组播,备用节点会认为主LVS挂了,开始接手主分发器工作,把VIP配给自己。

3、管理RS

Keepalived会每隔一个时间段去做一次类似于访问的操作如:

探针:elinks http://192.168.1.20 -dump

官网地址:http://www.keepalived.org/

 技术分享图片

http://www.keepalived.org/software/keepalived-2.0.2.tar.gz

 技术分享图片

1.2 使用Keepalived构建LVS-DR模式的高可用集群

主机名

主机IP

网关

机器作用

centos21.cn

DIP:192.168.1.21/24

VIP:192.168.1.20/24

192.168.1.1

主LVS

centos22.cn

DIP:192.168.1.22/24

VIP:192.168.1.20/24

192.168.1.1

被LVS

centos23.cn

192.168.1.23/24

192.168.1.1

RS1:web1

centos24.cn

192.168.1.24/24

192.168.1.1

RS2:web2

1.2.1 网络拓扑

技术分享图片

 

 

1.2.2 安装ipvsadm

[[email protected] ~]# rpm -ivh /mnt/cdrom/Packages/ipvsadm-1.27-7.el7.x86_64.rpm

Preparing...                          ################################# [100%]

Updating / installing...

   1:ipvsadm-1.27-7.el7               ################################# [100%]

安装完成不需要做任何配置,启动方式由keepalived控制。

1.2.3 安装keepalived

第一种安装方法:

[[email protected] ~]# yum -y install keepalived

查看安装软件包

[[email protected] ~]# rpm -qf `which keepalived`

keepalived-1.3.5-1.el7.x86_64

[[email protected] ~]# rpm -ql keepalived-1.3.5-1.el7.x86_64

第二种安装方法(源码安装)

[[email protected] ~]# wget http://www.keepalived.org/software/keepalived-2.0.2.tar.gz       #下载源码包

安装依赖关系,需要使用网络yum源

[[email protected] ~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo -P /etc/yum.repos.d/

[[email protected] ~]# yum -y install gcc openssl-devel libnl libnl-devel libnfnetlink-devel

[[email protected] ~]# tar zxf keepalived-2.0.2.tar.gz -C /usr/local/src/

[[email protected] ~]# cd /usr/local/src/keepalived-2.0.2/

[[email protected] keepalived-2.0.2]# ./configure --prefix=/usr/local/keepalived

成功之后会出现以下信息

......省略

Keepalived configuration

------------------------

Keepalived version       : 2.0.2

Compiler                 : gcc

Preprocessor flags       : 

Compiler flags           : -Wall -Wunused -Wstrict-prototypes -Wextra -Winit-self -g -O2 -D_GNU_SOURCE -fPIE -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches

Linker flags             :  -pie

Extra Lib                :  -lcrypto  -lssl  -lnl

Use IPVS Framework       : Yes

IPVS use libnl           : Yes

IPVS syncd attributes    : No

IPVS 64 bit stats        : No

fwmark socket support    : Yes

Use VRRP Framework       : Yes

Use VRRP VMAC            : Yes

Use VRRP authentication  : Yes

With ip rules/routes     : Yes

Use BFD Framework        : No

SNMP vrrp support        : No

SNMP checker support     : No

SNMP RFCv2 support       : No

SNMP RFCv3 support       : No

DBUS support             : No

SHA1 support             : No

Use Json output          : No

libnl version            : 1

Use IPv4 devconf         : No

Use libiptc              : No

Use libipset             : No

init type                : systemd

Build genhash            : Yes

Build documentation      : No

[[email protected] keepalived-2.0.2]# make

[[email protected] keepalived-2.0.2]# make install

1.2.4 查看keepalived的文件

[[email protected] ~]# ll /usr/local/keepalived/

total 0

drwxr-xr-x 2 root root 21 Jun 13 10:15 bin

drwxr-xr-x 4 root root 41 Jun 13 10:15 etc

drwxr-xr-x 2 root root 24 Jun 13 10:28 sbin

drwxr-xr-x 5 root root 40 Jun 13 10:15 share

1.2.5 创建启动脚本

[[email protected] keepalived-2.0.2]# cp keepalived/etc/init.d/keepalived /etc/init.d/           #因为我们使用非默认路径(/usr/local)安装 keepalived, 故需要修改几处路径,以保证 keepalived 能正常启劢, 需要修改的文件如下:

[[email protected] keepalived-2.0.2]# vim /etc/init.d/keepalived

#. /etc/sysconfig/keepalived                     #注释此行

./usr/local/keepalived/etc/sysconfig/keepalived    #修改为安装路径

export PATH="$PATH:/usr/local/keepalived/sbin"     #添加这两行内容

[[email protected] keepalived-2.0.2]# chmod +x /etc/init.d/keepalived

[[email protected] keepalived-2.0.2]# chkconfig --add keepalived

[[email protected] keepalived-2.0.2]# chkconfig keepalived on

1.2.6 修改配置文件

1、使用安装路径指定配置文件

如果想要让配置文件在/usr/local/keepalived/etc/keepalived/下的话,需要修改以下内容

[[email protected] ~]# vim /usr/local/keepalived/etc/sysconfig/keepalived

#KEEPALIVED_OPTIONS="-D"       #将路径改为下面的

KEEPALIVED_OPTIONS="-D -f /usr/local/keepalived/etc/keepalived/keepalived.conf"

2、使用/etc/keepalived/路径,如果上面修改,下面的配置文件路径就要修改为上面的。或者是上面不用修改,直接使用下面的路径就可以

[[email protected] keepalived-2.0.2]# mkdir /etc/keepalived    #创建目录

[[email protected] keepalived-2.0.2]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

[[email protected] keepalived-2.0.2]# cp keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived

[[email protected] keepalived-2.0.2]# ln -s /usr/local/keepalived/sbin/keepalived /usr/bin/

1.2.7 启动

[[email protected] ~]# service keepalived start

Starting keepalived (via systemctl):                       [  OK  ]

[[email protected] ~]# ip a

: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

       valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:00:64:f3 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.21/24 brd 192.168.1.255 scope global ens33

       valid_lft forever preferred_lft forever

    inet 192.168.1.20/32 scope global ens33

       valid_lft forever preferred_lft forever

    inet6 fe80::204:1fdd:f930:4804/64 scope link

       valid_lft forever preferred_lft forever

备份节点配置yum安装配置相同

 技术分享图片

 

拓展:

虚拟路由冗余协议(Virtual Router Redundancy Protocol简称VRRP)是由IETF提出的解决局域网种配置静态网关出现单点失效现象的路由协议。使用组播方式通信。

VRRP是一种路由容错协议,也可以叫做备份路由协议。一个局域网内的所有主机都设置缺省路由(默认网关),当网内主机发出的目的地址不在本网段时,报文将被通过缺省路由发往外部路由器,从而实现了主机于外部网络的通信。当缺省路由器down掉(即端口关闭)之后,内部主机将无法与外部通信,如果路由器设置了VRRP时,那么这是,虚拟路由将启用备份路由器,从而实现全网通信。

工作流程图:

技术分享图片

 

HSRP:热别分路由协议(HSRP)的设计目标时支持特定情况下IP流量失败转移不会引起混乱、并允许主机使用单路由器,以及即使在实际第一跳路由器使用失败的情形下仍能维护路由器间的连通性。换句话说,当源主机不能动态知道第一跳路由器的IP地址时,HSRP协议能够保护第一跳路由器不出故障,是CISCO的私有协议!该协议中含有多台路由器,对应一个HSRP组。该组中只有一个路由器承担转发用户流量的职责,这就是活动路由器。当活动路由器失效后,备份路由器将承担该指责,成为新的活动路由器。这就是热备份的原理。

HSRP和VRRP的区别:HSRP是CISCO的专有协议,在Cisco的HSRP之后,Internet工程任务小组(Internet engineering task force,IETF)也指定一种路由冗余协议:虚拟路由冗余协议(Virtual Router Redundancy Protocol,VRRP),目前包括Cisco在内的主流厂商均在其产品中支持VRRP协议!VRRP和HSRP也有很多不同。VRRP和HSRP的一个主要的区别在安全方面;它允许参与VRRP组的设备间建立认证机制。另一个主要区别:VRRP中只有三种状态----初始状态(initialize)、主状态(master)、备份状态(Backup),而HSRP有六种状态。其余在报文类型、报文格式和通过TCP而非UDP发送的报文方面也有所不同。

1.3 配置keepalived+LVS-DR模式

在这种模式下,虚拟IP在某时刻只能属于某一个节点,另一个节点作为备用节点存在。在主节点不可用是,备用节点接管虚拟IP,提供正常服务。

配置参数:节点centos21(主节点);节点centos22(备用节点);虚拟IP:192.168.1.20对外提供服务的IP。要求默认情况下由节点centos21提供服务,当节点centos21不可用时,由节点centos22提供服务(即虚拟IP漂移至节点centos22)。

1.3.1 主节点centos21.cn配置

[[email protected] ~]# cd /etc/keepalived/

[[email protected] keepalived]# cp keepalived.conf keepalived.conf.bak

[[email protected] keepalived]# ls

keepalived.conf  keepalived.conf.bak

[[email protected] keepalived]# vim keepalived.conf

! Configuration File for keepalived

 

global_defs {

   notification_email {

     [email protected]               #默认三个地址,修改本机主机名也可以

   }

 notification_email_from [email protected]

 smtp_server localhost

   smtp_connect_timeout 30        #邮件服务器可以注释

   router_id cenos21              #标识当前节点名字,两个节点的此项需要不相同

}  

#默认的配置文件中,使用第三方 smtp 服务器,但这在现实中几乎没有意义,发不出邮件,我们将其指定为 localhost, 我们也可以将通知信息的发送交给本地 sendmail 服务处理。如果不需要也可以直接注释掉

 

vrrp_instance apache { #定义一个实例,一个集群就是一个实例。 默认VI_1 可以随意改

    state MASTER          #指定 A 节点为主节点 备用节点上设置为 BACKUP 即可

    interface ens33:1      #绑定虚拟 IP 的网络接口

    virtual_router_id 51   #VRRP 组名,两个节点的设置必须一样,以指明各个节点属于同一 VRRP 组

 

    priority 100   #主节点的优先级(1-254 之间),备用节点必须比主节点优先级低

    advert_int 1       #组播信息发送间隔,两个节点设置必须一样

    authentication {   #设置验证信息,两个节点必须一致

 

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.20       #指定虚拟 IP, 两个节点设置必须一样

    }

}

#类似添加虚拟一个服务 ipvsadm -A -t 192.168.1.20:80 -s rr

 

virtual_server 192.168.1.20 80 {   #对虚拟IP63添加LVS相关内容

    delay_loop 6                    #Keepalived 多长时间监测一次 RS

    lb_algo rr                   #分发算法

    lb_kind DR                   #DR模式

    nat_mask 255.255.255.0

  persistence_timeout 50        #同一个IP 50秒内的请求都发到同个real server,这个会影响LVS的rr调度算法,同一IP超过50秒,在此访问,才会被转发到另一台real server上。persistence持久性的意思。为了测试方便可以注释掉,启动的时候只用去掉!就可以。

    protocol TCP

# ipvsadm -a -t 192.168.1.20:80 -r 192.168.1.23 -g 添加的内容,类似这条命令

# ipvsadm -a -t 192.168.1.20:80 -r 192.168.1.24 -g 添加的内容,类似这条命令

 

    real_server 192.168.1.23 80 {        #配置服务节点 1,需要指定 realserver 的真实 IP 地址和端口,IP不端口之间用空格隔开

        weight 1        #配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,设置权值大小可以为不同性能的服务器

        TCP_CHECK {                     #这段内容手动添加,把以前的内容删除

                connect_timeout 3        #表示 3 秒无响应超时

                nb_get_retry 3           #表示重试次数

                delay_before_retry 3    #表示重试间隔

                connect_port 80         #检测端口

                }

    }

    real_server 192.168.1.24 80 {

        weight 1

        TCP_CHECK {    

                connect_timeout 3     

                nb_get_retry 3       

                delay_before_retry 3  

                connect_port 80       

                }

    }

}

#默认配置文件中还有两个 virtual_server 模版,把剩下的都删除了就可以。 如:

#virtual_server 10.10.10.2 1358 {  。。。 }

#virtual_server 10.10.10.3 1358 {  。。。 }

[[email protected] keepalived]# systemctl start keepalived.service

[[email protected] keepalived]# systemctl enable keepalived.service

[[email protected] keepalived]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.1.20:80 rr persistent 50

1.3.2 配置备用节点centos22

1、安装ipvsadm

[[email protected] ~]# rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm

Preparing...                          ################################# [100%]

Updating / installing...

   1:ipvsadm-1.27-7.el7               ################################# [100%]

安装完成不需要任何配置,启动方式由keepalived控制

2、安装keepalived

[[email protected] ~]# yum -y install keepalived

第一种安装方法:

和主节点centos21配置差不多相同,直接从centos21上拷贝配置文件

[[email protected] keepalived]# scp keepalived.conf 192.168.1.22:/etc/keepalived/

 

[[email protected] ~]# cd /etc/keepalived/

[[email protected] keepalived]# ls

keepalived.conf

[[email protected] keepalived]# mv keepalived.conf keepalived.conf.bak

[[email protected] keepalived]# ls

keepalived.conf  keepalived.conf.bak

 

注:红色为改动项值

 router_id centos22        #运行 keepalived 的机器标示符

}

vrrp_instance apache {

    state BACKUP            #当前 LVS 状态为备用分发器

    interface ens33:1

    virtual_router_id 51

    priority 90             #LVS 优先级,备的要比主的小

……

[[email protected] keepalived]# systemctl start keepalived.service

[[email protected] keepalived]# systemctl enable keepalived.service

1.3.3 测试LVS IP漂移

[[email protected] keepalived]# systemctl stop keepalived.service

[[email protected] keepalived]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

       valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:0e:cd:5f brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.22/24 brd 192.168.1.255 scope global ens33

       valid_lft forever preferred_lft forever

    inet 192.168.1.20/32 scope global ens33

       valid_lft forever preferred_lft forever

    inet6 fe80::7fa6:2d98:1e52:ee5b/64 scope link

       valid_lft forever preferred_lft forever

[[email protected] keepalived]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.1.20:80 rr persistent 50

#可以看到192.168.1.20漂移过来了,就证明一切正常了

1.3.4 配置real server1

[[email protected] ~]# vim /etc/init.d/lvsrsdr

#!/bin/bash

#description:start relserver

VIP=192.168.1.20

source /etc/init.d/functions                #加载环境变量(可以加载所有的环境变量)

case $1 in

start)

        echo ‘start LVS of Realserver DR‘

        /sbin/ifconfig lo:1 $VIP broadcast $VIP netmask 255.255.255.255 up

        /sbin/route add -host $VIP dev lo:1

        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

        ;;

stop)

        /sbin/ifconfig lo:1 down

        echo ‘Close LVS of Realserver DR‘

        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 "Usage:$0 (start|stop)"

exit 1

esac

[[email protected] ~]# chmod +x /etc/init.d/lvsrsdr

[[email protected] ~]# /etc/init.d/lvsrsdr start

[[email protected] ~]# echo "/etc/init.d/lvsrsdr" >>/etc/rc.local

[[email protected] ~]# yum -y install httpd

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf

ServerName 192.168.1.23:80

[[email protected] ~]# systemctl start httpd

1.3.5 配置real server2

[[email protected] ~]# scp /etc/init.d/lvsrsdr 192.168.1.24:/etc/init.d/

[[email protected] ~]# ll /etc/init.d/lvsrsdr

-rwxr-xr-x 1 root root 964 Jun 12 23:03 /etc/init.d/lvsrsdr

[[email protected] ~]# echo "/etc/init.d/lvsrsdr start" >>/etc/rc.local

[[email protected] ~]# /etc/init.d/lvsrsdr start

Reloading systemd:                                         [  OK  ]

Starting lvsrsdr (via systemctl):                          [  OK  ]

[[email protected] ~]# ifconfig -a

……………………………

lo:1: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 192.168.1.20  netmask 255.255.255.255

        loop  txqueuelen 1  (Local Loopback)

[[email protected] ~]# yum -y install httpd  

[[email protected] ~]# echo "192.168.1.24" >/var/www/html/index.html

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf

ServerName 192.168.1.24:80

[[email protected] ~]# systemctl start httpd

1.3.6 测试

一直显示192.168.1.24的内容,等待50s之后查看,或者是将这一行信息(!   persistence_timeout 50)使用!注释掉。

 技术分享图片

50s之后刷新查看

 技术分享图片

测试主备切换,首选在主上centos21上查看状态

[[email protected] ~]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.1.20:80 rr persistent 5

  -> 192.168.1.23:80              Route   1      6          10       

  -> 192.168.1.24:80              Route   1      0          0        

在备上查看centos22的状态

[[email protected] ~]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

在centos21上停掉keepalived,模拟故障,在查看centos22

[[email protected] ~]# service keepalived stop

Stopping keepalived (via systemctl):                       [  OK  ]

[[email protected] ~]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.1.20:80 rr

  -> 192.168.1.23:80              Route   1      0          0        

  -> 192.168.1.24:80              Route   1      0          0        

[[email protected] ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

       valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:0e:cd:5f brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.22/24 brd 192.168.1.255 scope global ens33

       valid_lft forever preferred_lft forever

    inet 192.168.1.20/32 scope global ens33

       valid_lft forever preferred_lft forever

    inet6 fe80::7fa6:2d98:1e52:ee5b/64 scope link

       valid_lft forever preferred_lft forever

[[email protected]2 ~]# ipvsadm -Ln               #在浏览器刷新之后在次查看

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.1.20:80 rr

  -> 192.168.1.23:80              Route   1      2          0        

  -> 192.168.1.24:80              Route   1      2          1       

从日志看:

[[email protected] ~]# tail /var/log/messages

 技术分享图片

当我们重启主上的keepalived,自动从备份分发器转到主分发器上。因为备的优先级低。

[[email protected] ~]# service keepalived start

Starting keepalived (via systemctl):                       [  OK  ]

 技术分享图片

技术分享图片

当 keepalived 主从优先级一样时,当主恢复后,还是要回切资源的。第一次建立主从关系时,需要10s 左右的认证时间。

 

附件:一个配置文件模板详解

! Configuration File for keepalived

global_defs {

   notification_email {

     [email protected]                       #设置报警邮件地址,即收件人地址

   }

   notification_email_from [email protected]  #设置邮件的发送地址

   smtp_server 127.0.0.1                    #设置smtp server的ip地址

   smtp_connect_timeout 30                  #设置连接smtp server的超时时间

   router_id LTT                            #表示运行keepalived服务器的一个标识名字可以随便取,名字会显示在发邮件时邮件的主题信息

}

vrrp_instance IN_1 {

    state MASTER                  #指定keepalived的角色,此服务为master

    interface ens160                        #指定监测网络的接口

    virtual_router_id 22                    #虚拟路由的标识

    priority 100                            #定义优先级,数字越大优先级越高,1-255之间

    advert_int 1                            #设置同步检查的时间间隔,单位是秒

    authentication {                        #设置验证类型

        auth_type PASS                      #验证类型为PASS

        auth_pass aaaa                      #验证的密码

    }

    virtual_ipaddress {

        192.168.2.111                        #设置虚拟IP

    }

}

virtual_server 192.168.2.111 80 {            #定义虚拟服务器,需指定虚拟ip和端口

    delay_loop 6                            #设置健康检查时间,单位为秒

    lb_algo wlc                             #设置负载调度算法,此处为加权轮叫算法

    lb_kind DR                              #设置LVS实现负载均衡的模式

    persistence_timeout 120                 #设置会话持续时间

    nat_mask 255.255.255.0                  # 设置子网掩码

    protocol TCP                            #设置转发协议的类型

    real_server 192.168.2.64 80 {           #定义realserver,需指定ip和端口

        weight 1                            #指定权重

        HTTP_GET {                          #设置检测后端realserver的方式为获取http协议报文

            url {

              path /

              status_code 200               #状态码为200则证明后端服务器是在线的

           }

            connect_timeout 3               #设置超时时间

            nb_get_retry 3                  #设置超时时候重试几次

            delay_before_retry 3            #在重试的时候的时间间隔

        }

    }

virtual_server 192.168.2.111 8090 {           #定义虚拟服务器,需指定虚拟ip和端口

    delay_loop 6                                  #设置健康检查时间,单位为秒

    lb_algo wlc                                   #设置负载调度算法,此处为加权轮叫算法

    lb_kind DR                                    #设置LVS实现负载均衡的模式

    persistence_timeout 120                     #设置会话持续时间

    nat_mask 255.255.255.0                     #设置子网掩码

    protocol TCP                                 #设置转发协议的类型

    real_server 192.168.2.90 80 {           #定义realserver,需指定ip和端口

        weight 1                            #指定权重

        HTTP_GET {               #设置检测后端realserver的方式为获取http协议报文

            url {

              path /

              status_code 200     #状态码为200则证明后端服务器是在线的

           }

            connect_timeout 3             #设置超时时间

            nb_get_retry 3                 #设置超时时候重试几次

            delay_before_retry 3            #在重试的时候的时间间隔

        }

}

}

 

以上是关于LVS-DR+keepalived高可用群集的主要内容,如果未能解决你的问题,请参考以下文章

Web服务器群集——LVS-DR+Keepalived高可用集群

LVS-DR+keepalived高可用群集

LVS-DR与Keepalived高可用群集

[Linux]-构建LVS-DR模式+Keepalived高可用群集

部署LVS-DR + keepalived 高可用群集

基于LVS-DR群集模式+keepalived实现高可用