LVS+Keepalived实现高可用负载均衡

时间:2021-04-17 03:17:04

LVS安装
        Master
Backup都必须安装LVS,安装ipvsadm步骤如下:

 sudo  apt-get install ipvsadm (每台机器上都需要安装)

 

部署

Real Server1 Real Server2上做以下配置

LVS+Keepalived实现高可用负载均衡

LVS+Keepalived实现高可用负载均衡

# 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

#以上命令需填加到/etc/rc.local文件中让其开机自动生效

 

# vim /etc/sysconfig/network-scripts/ifcfg-lo:0 内容如下

DEVICE=lo:0 

IPADDR=172.16.100.100

NETMASK=255.255.255.255

BROADCAST=172.16.100.100

ONBOOT=yes

NAME=loopback 

 

 

# ifdown lo:0

# ifup lo:0

# route add -host 172.16.100.100 dev lo:0

# echo "route add -host 172.16.100.100 dev lo:0">> /etc/rc.local

 

 

Director Server上做以下配置

LVS+Keepalived实现高可用负载均衡

LVS+Keepalived实现高可用负载均衡

# vim /etc/sysconfig/network-scripts/ifcfg-eth2:0 内容如下

DEVICE=eth2:0

IPADDR=172.16.100.100

NETMASK=255.255.255.255

BROADCAST=172.16.100.100

ONBOOT=yes # ifdown eth2:0

 

#命令

# ifup eth2:20

# route add -host 172.16.100.100 dev eth2:0

# echo "route add -host 172.16.100.100 dev eth2:0">> /etc/rc.local

# echo "1" > /proc/sys/net/ipv4/ip_forward

# echo "echo "1" >/proc/sys/net/ipv4/ip_forward" >> /etc/rc.local

# ipvsadm -A -t 172.16.100.100:80 -s wlc

# ipvsadm -a -t 172.16.100.100:80 -r 172.16.100.10 -g -w 2

# ipvsadm -a -t 172.16.100.100:80 -r 172.16.100.11 -g -w 1

 

Keepalived安装

sudo apt-getinstall keepalived

 

配置Keepalived

1.  [root@centos1 download]# cd /etc/keepalived/
2.  [root@centos1 keepalived]# cp keepalived.conf keepalived.conf.bak20130120  #备份原始配置文件
3.  [root@centos1 keepalived]# vim keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
     dingxl@vaportech.cn   #设置报警邮件地址,可以设置多个,每行1个,
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.20.1  #设置SMTP Server地址;
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
           ########VRRP Instance########
vrrp_instance VI_1 {
    state MASTER    #指定Keepalived的角色,MASTER为主机服务器,BACKUP为备用服务器
    interface eth0  #BACKUP为备用服务器
    virtual_router_id 51
    priority 100    #定义优先级,数字越大,优先级越高,主DR必须大于备用DR。
    advert_int 1
    authentication {
        auth_type PASS  #设置验证类型,主要有PASS和AH两种
        auth_pass 1111  #设置验证密码
    }
    virtual_ipaddress {
        192.168.20.199  #设置主DR的虚拟IP地址(virtual IP),可多设,但必须每行1个
    }
}
           ########Virtual Server########
virtual_server 192.168.20.199 80 {  #注意IP地址与端口号之间用空格隔开
    delay_loop 6        #设置健康检查时间,单位是秒
    lb_algo rr          #设置负载调度算法,默认为rr,即轮询算法,最优秀是wlc算法
    lb_kind DR          #设置LVS实现LB机制,有NAT、TUNN和DR三个模式可选
    nat_mask 255.255.255.0
    persistence_timeout 50  #会话保持时间,单位为秒
    protocol TCP        #指定转发协议类型,有TCP和UDP两种
    real_server 192.168.20.193 80 {
        weight 1          #配置节点权值,数字越大权值越高
        TCP_CHECK {
            connect_timeout 3     #表示3秒无响应,则超时
            nb_get_retry 3        #表示重试次数
            delay_before_retry 3  #表示重试间隔
        }
    }
    real_server 192.168.20.194 80 {  #配置服务器节点,即Real Server2的public IP
        weight 1            #配置节点权值,数字越大权值越高
        TCP_CHECK {
            connect_timeout 3       #表示3秒无响应,则超时
            nb_get_retry 3          #表示重试次数
            delay_before_retry 3    #表示重试间隔
        }
    }
}

1、在每台RS(真实服务器)上绑定LVS的虚拟IP及抑制ERP

1.  [root@LVS_RS_104 ~]# /etc/rc.d/init.d/lvs_dr.sh start
2.  RealServer Start OK
3.  [root@LVS_DR_103 ~]# /etc/rc.d/init.d/lvs_dr.sh start
4.  RealServer Start OK
1.   [root@LVS_Master_101 ~]# /etc/init.d/keepalived start

 

 

使用ipvsadm -Ln查看状态(watch -n 1 'ipvsadm -L -n')

1.  [root@LVS_Master_101 ~]# ipvsadm  -Ln
2.  IP Virtual Server version 1.2.1 (size=4096)
3.  Prot LocalAddress:Port Scheduler Flags
4.    -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
5.  TCP  192.168.1.181:http rr persistent 50
6.    -> 192.168.1.104:http           Route   1      0          0
7.    -> 192.168.1.103:http           Route   1      0          0

 

测试方法:

  1. 1.  测试断开MASTERDirector server(断开keepalived),任然可以通过curl命令来获取apache2的值

  2. 2.  测试断开real server(断开apache2),通过curl来获取的时候,不会再获取到断开的值。

 

使用curl来进行测试,浏览器有的时候不准确

 

使用DR必须在一个网段上

所有的都必须装ipvsadm不然会出现curl无法使用的问题