通过keepalive实现LVS-DR模式高可用

keepalived介绍

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

拓展:OSI七层相关协议

Keepalived工作原理
Layer3,4&5 工作在 IP/TCP 协议栈的 IP 层, TCP 层,及应用层,。
Layer3: Keepalived 使用 Layer3 的方式工作式时, Keepalived 会定期向服务器群中的服务器发送一个 ICMP 的数据包(即我们平常用的Ping程序) , 如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。 Layer3 的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。
Layer4: 主要以 TCP 端口的状态来决定服务器工作正常与否。如 web server 的服务端口一般是80,如果 Keepalived 检测到 80 端口没有启动,则 Keepalived 将把这台服务器从服务器群中删除。
Layer5: Layer5 就是工作在具体的应用层了,比 Layer3,Layer4 要复杂一点,在网络上占用的带宽也要大一些。 Keepalived 将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则 Keepalived 将把服务器从服务器群中剔除。
Keepalived的作用与构建
1.管理VIP VIP会在LVS之间漂移
2.监控LVS分发器
运行在主分发的 Keepalived 会以组播的形式向网络中宣告自己,即主分发器还活着,备用节点能收到。当备用节点,在一个时间单位中收不到组播,备用节点会认为主 LVS挂了,开始接手主分发器工作,把VIP配给自己。
3.管理RS
Keepalived 会每隔一个时间段去做一次类似于访问的操作如:
探针: elinks http://172.20.77.211 –dump
经典高可用web架构: LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可选)
http://www.keepalived.org/

下载:http://www.keepalived.org/download.html

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

服务器名称 服务器IP 网关 服务器作用 备注
snowy201.cn DIP:172.20.77.201/24 172.20.77.254 主LVS VIP:172.20.77.211/24
snowy202.cn DIP:172.20.77.202/24 172.20.77.254 备LVS VIP:172.20.77.211/24
snowy203.cn 172.20.77.203/24 172.20.77.254 RS1 WEB1、mysql1
snowy204.cn 172.20.77.204/24 172.20.77.254 RS2 WEB2、mysql2

网络拓扑

拓展:VRRP/HSRP
虚拟路由冗余协议(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),目前包括Csico在内的主流厂商均在其产品中支持VRRP协议!VRRP和HSRP也有很多不同。VRRP和HSRP 的一个主要的区别在安全方面:它允许参与VRRP组的设备间建立认证机制 。另一个主要区别 :VRRP中只有三种状态----初始状态(Initialize)、主状态(Master)、备份状态(Backup),而HSRP 有六种状态。其余在报文类型 、报文格式和通过TCP而非UDP发送的报文方面也有所不同

安装配置keepalived

[root@snowy201 ~]# rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm  #安装完成不需要做任何配置,启动方式由keepalived控制
[root@snowy201 ~]# yum install -y keepalived #安装keepalived

了解keepalived的文件

配置Keepalived+LVS-DR模式
在这种模式下,虚拟IP在某时刻只能属于某一个节点,另一个节点作为备用节点存在。当主节点不可用时,备用节点接管虚拟IP,提供正常服务。
配置参数: 节点 snowy201(主节点);节点snowy202(备用节点);虚拟IP 172.20.77.211对外提供服务的IP。默认情况下由节点提供服务,当节点snowy201不可用时,由节点snowy202提供服务(即虚拟IP漂移至节点snowy202)。
主节点snowy201配置

[root@snowy201 ~]# cd keepalived
[root@snowy201 keepalived]# cp keepalived.conf keepalived.conf.bak
[root@snowy201 ~]# vi /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     root@localhost                         #默认三个地址,修改可用地址
   }
   notification_email_from root@localhost
   smtp_server localhost
   smtp_connect_timeout 30
   router_id snowy201                       #标识当前节点名字,两个节点的此项需要不相同。
}

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

vrrp_instance apache {  #定义一个实例,一个集群就是一个实例。 默认VI_1 可以随意改
    state MASTER        #指定 A 节点为主节点 备用节点上设置为 BACKUP 即可 
    interface ens33          #绑定虚拟IP的网络接口 
    virtual_router_id 51    #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP 组
    priority 100            #主节点的优先级(1-254 之间),备用节点必须比主节点优先级低 
    advert_int 1             #组播信息发送间隔,两个节点设置必须一样 
    authentication {         #设置验证信息,两个节点必须一致 
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.20.77.211       #指定虚拟 IP, 两个节点设置必须一样
    }
}
//类似添加虚拟一个服务 ipvsadm -A -t 172.20.77.211 -s rr
virtual_server 172.20.77.211 80 {   #对虚拟IP snowy201添加LVS相关内容
    delay_loop 6                    #Keepalived 多长时间监测一次 RS
    lb_algo rr                      #分发算法
    lb_kind DR                      #DR 模式
    persistence_timeout 50  #同一IP50秒内的请求都发到同个real server,这个会影响LVS的rr调度算法,同一IP超过50秒后,再次访问,才会被转发到另一台 real server上。persistence 持久性的意思。我们如果做实验测试可以改小点,方便测试 
    protocol TCP
// ipvsadm -a -t 172.20.77.211:80 -r 172.20.77.203 -g 添加的内容,类似这条命令
// ipvsadm -a -t 172.20.77.211:80 -r 172.20.77.204 –g 添加的内容,类似这条命令
    real_server 172.20.77.203 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 172.20.77.204 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@snowy201 keepalived]# systemctl enable keepalived --now
防火墙开启后,需放行vrrp组播,否则此节点将无法收到其它节点发来的组播信息,节点之间都认为对方服务停止,导致多个节点同时获得VIP,俗称"keepalived脑裂"
[root@snowy201 keepalived]# # firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT #放行vrrp组播
[root@snowy201 keepalived]# firewall-cmd --permanent --add-service=http
[root@snowy201 keepalived]# firewall-cmd --permanent --reload
[root@snowy201 keepalived]# ipvsadm -L –n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

注:没有看到 realserver,是因为两台realserver还没有开启httpd服务。
备用节点snowy202配置
安装ipvsadm及keepalived

[root@snowy202 ~]# rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm
[root@snowy202 ~]# yum install -y keepalived

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

[root@snowy201 ~]# scp /etc/keepalived/keepalived.conf	172.20.77.202:/etc/keepalived/
[root@snowy202 ~]# cd /etc/keepalived
[root@snowy202 ~]# vi /etc/keepalived/keepalived.conf  #复制过来之后,还要做一定的修改
 router_id snowy202   #运行 keepalived 的机器标示符
}
vrrp_instance apache {
    state BACKUP            #当前 LVS 状态为备用分发器
    interface ens33
    virtual_router_id 51
    priority 90             #LVS 优先级,备的要比主的小 
......
[root@snowy202 keepalived]# systemctl enable keepalived --now
[root@snowy202 keepalived]# # firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT #放行vrrp组播
[root@snowy202 keepalived]# firewall-cmd --permanent --add-service=http
[root@snowy202 keepalived]# firewall-cmd --permanent --reload

测试LVS IP飘移

[root@snowy201 keepalived]# systemctl stop keepalived
[root@snowy202 keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:30:9b:08 brd ff:ff:ff:ff:ff:ff
    inet 172.20.77.202/24 brd 172.20.77.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 172.20.77.211/32 scope global ens33
       valid_lft forever preferred_lft forever

[root@snowy202 keepalived]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.20.77.211:80 rr

看到172.20.77.211飘移过来了,就证明一切正常了

配置Real Server实现web服务高可用

配置RS1

[root@snowy203 ~]# vim /etc/init.d/lvsrsdr    #写一个配置RS的脚本
#!/bin/bash
#description:start relserver
VIP=172.20.77.211
source /etc/init.d/functions                #加载环境变量(可以加载所有的环境变量)
case $1 in
start)
        echo 'start LVS of Realserver DR'
        /sbin/ifconfig lo:1 $VIP netmask 255.255.255.255 up
        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@snowy203 ~]# chmod +x /etc/init.d/lvsrsdr
[root@snowy203 ~]# /etc/init.d/lvsrsdr start
[root@snowy203 ~]# echo "/etc/init.d/lvsrsdr start" >> /etc/rc.d/rc.local  #将脚本加入到开机启动
[root@snowy203 ~]# chmod +x /etc/rc.d/rc.local
[root@snowy203 ~]# ifconfig -a
......
    lo:1: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 172.20.77.211  netmask 255.255.255.255
        loop  txqueuelen 1  (Local Loopback)
[root@snowy203 ~]# yum install -y httpd
[root@snowy203 ~]# echo 172.20.77.203 > /var/www/html/index.html
[root@snowy203 ~]# systemctl enable httpd --now
[root@snowy203 ~]# firewall-cmd --permanent --add-service=http
[root@snowy203 ~]# firewall-cmd --permanent --reload

配置RS2
从snowy203上拷贝脚本

[root@snowy203 ~]# scp /etc/init.d/lvsrsdr 172.20.77.204: /etc/init.d/	  
[root@snowy204 ~]# chmod +x /etc/init.d/lvsrsdr
[root@snowy204 ~]# echo "/etc/init.d/lvsrsdr start" >> /etc/rc.d/rc.local  #将脚本加入到开机启动
[root@snowy204 ~]# chmod +x /etc/rc.d/rc.local
[root@snowy204 ~]# ifconfig -a
......
    lo:1: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 172.20.77.211  netmask 255.255.255.255
        loop  txqueuelen 1  (Local Loopback)
[root@snowy204 ~]# yum install -y httpd
[root@snowy204 ~]# echo 172.20.77.204 > /var/www/html/index.html
[root@snowy204 ~]# systemctl enable httpd --now
[root@snowy204 ~]# firewall-cmd --permanent --add-service=http
[root@snowy204 ~]# firewall-cmd --permanent --reload

测试 http://172.20.77.211 #一直显示172.20.77.203的内容,等待50s之后,查看
50s之前页面显示,如下图

50s之后页面显示,如下图

  • 测试主备切换,首先在主分发器snowy201上查看状态
[root@snowy201 keepalived]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.20.77.211:80 rr
  -> 172.20.77.203:80              Route   1      0          0         
  -> 172.20.77.204:80              Route   1      0          1    

在备用分发器snowy202上查看状态

[root@snowy202 keepalived]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

在snowy201上停掉keepalived, 模拟故障,再查看snowy202

[root@snowy201 keepalived]# systemctl stop keepalived	 
[root@snowy202 keepalived]# ipvsadm -L –n
P Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.20.77.211:80 rr
  -> 172.20.77.203:80              Route   1      0          0         
  -> 172.20.77.204:80              Route   1      0          0     
[root@snowy202 keepalived]# ip addr
......
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:30:9b:08 brd ff:ff:ff:ff:ff:ff
    inet 172.20.77.202/24 brd 172.20.77.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 172.20.77.211/32 scope global ens33
       valid_lft forever preferred_lft forever

从日志看:

[root@snowy202 keepalived]# tail -f /var/log/messages

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

[root@snowy201 ~]# systemctl restart keepalived

  • 测试RS容错,停掉snowy203的httpd之后在snowy201查看
[root@snowy203 keepalived]# systemctl stop httpd
[root@snowy201 keepalived]# ipvsadm -L -n    #可以看到刚才关闭的http服务的那台机器的IP不在列表中了
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.20.77.211:80 rr
  -> 172.20.77.204:80              Route   1      0          0  

打开主LVS的日志(/var/log/message),看到滚动从LVS中移除172.20.77.203。

[root@snowy201 ~]# tail -f /var/log/message


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

配置keepalived及RS实现mysql高可用

前面我们己经通过keepalived实现了web服务的高可用,我们可以使用同样的方式之实现mysql的高可用,唯一的区别就是主备分发器增加一个监测3306端口,RS需要安装mysql
主分发器snowy201的配置

[root@snowy201 ~]# vi /etc/keepalived/keepalived.conf
......
//在原有配置的基础上增加一下内容,相应的端口改为3306
virtual_server 172.20.77.211 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP

    real_server 172.20.77.203 3306 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }

    real_server 172.20.77.204 3306 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }
}
[root@snowy201 ~]# systemctl restart keepalived
[root@snowy201 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.20.77.211:80 rr
  -> 172.20.77.203:80             Route   1      0          0         
TCP  172.20.77.211:3306 rr
//查看lvs,VIP上己经出现监听3306端口了,因RS未安装mysql,暂时无法看到RS的相关信息
[root@snowy201 ~]# firewall-cmd --permanent --add-service=mysql  #防火墙放行mysql,否则客户机测试时无法访问
[root@snowy201 ~]# firewall-cmd --reload

备用分发器snowy202的配置
配置方法跟主分发器snowy201一样,这里就不做详解
RS:snowy203配置*
我们这里只是做一个简单的测试,实际生产环境,mysql肯定是做主从同步的

[root@snowy203 ~]# yum install -y mariadb-server
[root@snowy203 ~]# systemctl enable mariadb --now
[root@snowy203 ~]# firewall-cmd --permanent --add-service=mysql
[root@snowy203 ~]# firewall-cmd --reload
[root@snowy203 ~]# mysql -u root -p
MariaDB [(none)]> create database keepalived;
MariaDB [(none)]> use keepalived;
MariaDB [keepalived]> create table lvs(hostname varchar(30));
MariaDB [keepalived]> insert into lvs values('snowy203');
MariaDB [keepalived]> select * from lvs;
+----------+
| hostname |
+----------+
| snowy203 |
+----------+
1 row in set (0.00 sec)
MariaDB [keepalived]> grant all on *.* to 'snowy'@'172.20.77.%' identified by '123456';  #增加一个测试查询的授权用户
MariaDB [keepalived]> exit

RS:snowy204配置

[root@snowy204 ~]# yum install -y mariadb-server
[root@snowy204 ~]# systemctl enable mariadb --now
[root@snowy204 ~]# firewall-cmd --permanent --add-service=mysql
[root@snowy204 ~]# firewall-cmd --reload
[root@snowy204 ~]# mysql -u root -p
MariaDB [(none)]> create database keepalived;
MariaDB [(none)]> use keepalived;
MariaDB [keepalived]> create table lvs(hostname varchar(30));
MariaDB [keepalived]> insert into lvs values('snowy204');
MariaDB [keepalived]> select * from lvs;
+----------+
| hostname |
+----------+
| snowy204 |
+----------+
1 row in set (0.00 sec)
MariaDB [keepalived]> grant all on *.* to 'snowy'@'172.20.77.%' identified by '123456';  #增加一个测试查询的授权用户
MariaDB [keepalived]> exit

客户机测试访问mysql
查看一下主分发器状态,3306端口的VS及RS状态都出来了

[root@snowy201 ~]# ipvsadm -L -n  
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.20.77.211:80 rr
  -> 172.20.77.203:80             Route   1      0          0         
  -> 172.20.77.204:80             Route   1      0          0         
TCP  172.20.77.211:3306 rr
  -> 172.20.77.203:3306           Route   1      0          0         
  -> 172.20.77.204:3306           Route   1      0          0         

客户机测试

[root@client ~]# yum install -y mariadb
[root@client ~]# mysql -h 172.20.77.211 -u snowy -p123456
MariaDB [(none)]> select * from keepalived.lvs;
+----------+
| hostname |
+----------+
| snowy203 |
+----------+
1 row in set (0.00 sec)
MariaDB [(none)]> exit
Bye
[root@client ~]# mysql -h 172.20.77.211 -u snowy -p123456
ariaDB [(none)]> select * from keepalived.lvs;
+----------+
| hostname |
+----------+
| snowy204 |
+----------+
1 row in set (0.00 sec)

从上面测试的结果看,符合预期的设置

  • 附一个配置keepalived文件模板详解
! 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            #在重试的时候的时间间隔
        }
}
}
posted @ 2021-09-23 01:01  乘风破浪的蜗牛  阅读(474)  评论(0)    收藏  举报