LVS(DR模式)+Keepalived(主备)+Nginx

LVS(DR模式)+Keepalived(主备)+Nginx

Posted by ZhaoLe on February 18, 2020

一.环境配置

名称 版本号
CentOS 7.x
keepalived 2.0.2
Nginx 1.16.0

使用LVS(DR模式),Keepalived主从模式进行搭建,具体配置如下

1

二.安装Nginx

现在两台RS(Real Server)上安装Nginx.

Nginx基本安装

三.配置网卡规则和路由

安装完Nginx后紧接着对两台RS进行配置。由于是基于LVS的DR模式

配置lo网卡

cd /etc/sysconf/network-scripts/
cp ifcfg-lo ifcfg-lo:v1

1
2
3
4
#名称
DEVICE=lo:v1
#虚拟ip
IPADDR=192.168.1.100

配置网卡规则(抑制ARP)

继续在两台RS(Real Server)上进行配置

配置arp抑制规则

vi /etc/sysctl.conf

1
2
3
4
5
6
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2

刷新网卡

sysctl -p

添加路由,并且保存到自启动文件

echo “route add -host 192.168.252.100 dev lo:v1” » /etc/rc.local

四.安装&配置keepalived

分别在161162两台机器上安装和配置Keepalived

安装Keepalived

Keepalived基本安装

配置Keepalived.conf

安装完毕后,分别对主从RS中的Keepalived进行配置。进入/etc/keepalived/修改配置文件keepalived.conf

主节点配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
global_defs {
   router_id LVS_161
}
#配置主节点
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 61
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.100
    }
}

#LVS配置
virtual_server 192.168.1.100 80 {
    #健康检查的时间
    delay_loop 6
    #负载均衡算法
    lb_algo rr
    #LVS模式
    lb_kind DR
    persistence_timeout 5
    protocol TCP

    real_server 192.168.1.151 80 {
        weight 1
        TCP_CHECK {
          #检查80接口
          connect_port 80
          #超时时间 2
          connect_timeout 2
          #重试次数 2
          nb_get_retry 2
          #间隔时间 3s
          delay_before_retry 3
        }
    }

    real_server 192.168.1.152 80 {
       ...同上151配置
    }
}

备用节点配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
global_defs {
   router_id LVS_161
}
#配置主节点
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 61
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.100
    }
}

#LVS配置
vrrp_instance VI_1 {
  #同主节点配置
}

重启keepalived即可

重启下keepalived就可以生效了

systemctl restart keepalived.service

五.安装&使用ipvsadm

在两台部署Keepalived的主备节点上进行操作

安装ipvadmin

yum install ipvsadm

ipvsadm 是Linux虚拟服务器的管理命令。是用于设置、维护和检查Linux内核中虚拟服务器列表的命令

添加新的虚拟服务

-A 新增一个虚拟服务, -t 表明这是一个tcp服务 -s 调度模式 rr 轮循 ipvsadm -A -t 192.168.1.100:80 -s rr

添加真实服务器

在内核虚拟服务器表的一条记录里添加新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器。

在主服务器添加如下命令

-a 真实服务 -t 表明是个tcp服务 -r 真实服务地址 -g dr模式 可以不写,默认的 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.151:80 -g ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.152:80 -g

测试

为了方便测试,需要将持久化时间调低

-E 编辑
-p 持久化
ipvsadm -E -t 192.168.1.100:80 -s rr -p 5
ipvsadm –set 1 1 1

第一次访问 2

隔个1s再刷一次,说明负载均衡没问题,轮循的方式。 3

关闭151的nginx,无论怎么刷新,只会显示152的nginx 4 5

最后,重新开启151的Nnginx,并且关闭主节点的keepalived

进入到备用节点,使用ip addr查看ip信息,可以看到VIP已经漂移到备用节点 6 页面是能正常访问的 7 等重新启动主节点的keepalived,VIP还是会漂移回主节点上的。

基本扫盲

1. 什么是环回接口 简单理解Linux的Loopback接口

2. 什么是ARP ARP(Address Resolution Protocol) 是一种解决地址问题的协议,以目标IP地址为线索,用来定位下一个应该接受数据分包的网络设备对应的MAC地址。只适用于IPV4网络。

3. 为什么将VIP配置在lo网卡 首先是为了让RS能够处理地址是VIP的数据,在lo上配置vip能够接收到相关报并将结果返回给客户端。如果将VIP设置到出口网卡,会导致客户端的ARP request出现混乱。可能会影响到整个负载均衡

4. 为什么要抑制ARP 用户发起请求,在请求前会发一个arp广播包。由于DIP和SIP都在同一个物理网络中,并且都设置了VIP。为了让整个请求只会发送到DIP上。必须让其他SIP不能响应这个请求发出的ARP请求。

5. arp规则说明

  • arp-ignore:ARP响应级别(处理请求) 0:主要本机配置IP,就能响应请求。 1:请求的目标地址到达对应的网络接口,才会响应请求。

  • arp-announce:ARP通告行为(返回响应)** 0:本机上任何网络接口都向外通告,所有的网卡都能接受到通告。 1:尽可能避免本网卡与不匹配的目标进行通告。 2:只在本网卡通告。