zoukankan      html  css  js  c++  java
  • 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

    [root@centos21 ~]# 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

    第一种安装方法:

    [root@centos21 ~]# yum -y install keepalived

    查看安装软件包

    [root@centos21 ~]# rpm -qf `which keepalived`

    keepalived-1.3.5-1.el7.x86_64

    [root@centos21 ~]# rpm -ql keepalived-1.3.5-1.el7.x86_64

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

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

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

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

    [root@centos21 ~]# yum -y install gcc openssl-devel libnl libnl-devel libnfnetlink-devel

    [root@centos21 ~]# tar zxf keepalived-2.0.2.tar.gz -C /usr/local/src/

    [root@centos21 ~]# cd /usr/local/src/keepalived-2.0.2/

    [root@centos21 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

    [root@centos21 keepalived-2.0.2]# make

    [root@centos21 keepalived-2.0.2]# make install

    1.2.4 查看keepalived的文件

    [root@centos21 ~]# 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 创建启动脚本

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

    [root@centos21 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"     #添加这两行内容

    [root@centos21 keepalived-2.0.2]# chmod +x /etc/init.d/keepalived

    [root@centos21 keepalived-2.0.2]# chkconfig --add keepalived

    [root@centos21 keepalived-2.0.2]# chkconfig keepalived on

    1.2.6 修改配置文件

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

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

    [root@centos21 ~]# vim /usr/local/keepalived/etc/sysconfig/keepalived

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

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

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

    [root@centos21 keepalived-2.0.2]# mkdir /etc/keepalived    #创建目录

    [root@centos21 keepalived-2.0.2]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

    [root@centos21 keepalived-2.0.2]# cp keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived

    [root@centos21 keepalived-2.0.2]# ln -s /usr/local/keepalived/sbin/keepalived /usr/bin/

    1.2.7 启动

    [root@centos21 ~]# service keepalived start

    Starting keepalived (via systemctl):                       [  OK  ]

    [root@centos21 ~]# 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配置

    [root@centos21 ~]# cd /etc/keepalived/

    [root@centos21 keepalived]# cp keepalived.conf keepalived.conf.bak

    [root@centos21 keepalived]# ls

    keepalived.conf  keepalived.conf.bak

    [root@centos21 keepalived]# vim keepalived.conf

    ! Configuration File for keepalived

    global_defs {

       notification_email {

         root@localhost               #默认三个地址,修改本机主机名也可以

       }

     notification_email_from root@localhost

     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 {  。。。 }

    [root@centos21 keepalived]# systemctl start keepalived.service

    [root@centos21 keepalived]# systemctl enable keepalived.service

    [root@centos21 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

    [root@centos22 ~]# 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

    [root@centos22 ~]# yum -y install keepalived

    第一种安装方法:

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

    [root@centos21 keepalived]# scp keepalived.conf 192.168.1.22:/etc/keepalived/

    [root@centos22 ~]# cd /etc/keepalived/

    [root@centos22 keepalived]# ls

    keepalived.conf

    [root@centos22 keepalived]# mv keepalived.conf keepalived.conf.bak

    [root@centos22 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 优先级,备的要比主的小

    ……

    [root@centos22 keepalived]# systemctl start keepalived.service

    [root@centos22 keepalived]# systemctl enable keepalived.service

    1.3.3 测试LVS IP漂移

    [root@centos21 keepalived]# systemctl stop keepalived.service

    [root@centos22 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

    [root@centos22 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

    [root@centos23 ~]# 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

    [root@centos23 ~]# chmod +x /etc/init.d/lvsrsdr

    [root@centos23 ~]# /etc/init.d/lvsrsdr start

    [root@centos23 ~]# echo "/etc/init.d/lvsrsdr" >>/etc/rc.local

    [root@centos23 ~]# yum -y install httpd

    [root@centos23 ~]# vim /etc/httpd/conf/httpd.conf

    ServerName 192.168.1.23:80

    [root@centos23 ~]# systemctl start httpd

    1.3.5 配置real server2

    [root@centos23 ~]# scp /etc/init.d/lvsrsdr 192.168.1.24:/etc/init.d/

    [root@centos24 ~]# ll /etc/init.d/lvsrsdr

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

    [root@centos24 ~]# echo "/etc/init.d/lvsrsdr start" >>/etc/rc.local

    [root@centos24 ~]# /etc/init.d/lvsrsdr start

    Reloading systemd:                                         [  OK  ]

    Starting lvsrsdr (via systemctl):                          [  OK  ]

    [root@centos24 ~]# 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)

    [root@centos24 ~]# yum -y install httpd  

    [root@centos24 ~]# echo "192.168.1.24" >/var/www/html/index.html

    [root@centos24 ~]# vim /etc/httpd/conf/httpd.conf

    ServerName 192.168.1.24:80

    [root@centos24 ~]# systemctl start httpd

    1.3.6 测试

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

     

    50s之后刷新查看

     

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

    [root@centos21 ~]# 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的状态

    [root@centos22 ~]# 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

    [root@centos21 ~]# service keepalived stop

    Stopping keepalived (via systemctl):                       [  OK  ]

    [root@centos22 ~]# 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        

    [root@centos22 ~]# 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

    [root@centos22 ~]# 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       

    从日志看:

    [root@centos22 ~]# tail /var/log/messages

     

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

    [root@centos21 ~]# service keepalived start

    Starting keepalived (via systemctl):                       [  OK  ]

     

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

     

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

    ! Configuration File for keepalived

    global_defs {

       notification_email {

         root@localhost                       #设置报警邮件地址,即收件人地址

       }

       notification_email_from admin@localhost  #设置邮件的发送地址

       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            #在重试的时候的时间间隔

            }

    }

    }

  • 相关阅读:
    实战MEF(4):搜索范围
    实战MEF(3):只导出类的成员
    Mac 配置 php-fpm 时出现'/private/etc/php-fpm.conf': No such file or directory (2)
    如何实现在H5里调起高德地图APP?
    PHPExcel 基本用法详解
    最简单的css实现页面宽度自适应
    去掉IntelliJ IDEA 中 mybatis 对应的 xml 文件警告
    SQLyog恢复数据库报错解决方法【Error Code: 2006
    解决svn log显示no author,no date的方法之一
    Centos 7(Linux)环境下安装PHP(编译添加)相应动态扩展模块so(以openssl.so为例)
  • 原文地址:https://www.cnblogs.com/baorong/p/9194048.html
Copyright © 2011-2022 走看看