[docker]十二、负载均衡、keepalived、脑裂和双VIP

目录

1、负载均衡(load balancing)

1.1、为什么需要负载均衡?

1.2、安装负载均衡

1.2.1、利用脚本编译安装

1.2.2、配置nginx里的负载均衡功能

1.3、负载均衡的调度算法

1.4、swarm集群数据流向

1.4.1、对数据流进行抓包

2、keepalived

2.1、keepalived是什么?

2.1.1、启动VRRP协议的设备角色

2.1.2、vrrp

3、keepalived实验

为什么要注释掉vrrp_strict?

抓包

3.1、对于两台负载均衡服务器,关于keepalived.conf中state和priority之间的关系

3.2、VIP漂移

3.2.1、抢占模式和非抢占模式

3.2.2、非抢占模式的配置

3.3、脑裂

3.3.1、制造防火墙规制阻拦vrrp消息的通告

3.3.2、脑裂的危害(从两个原因来分析)

3.3.3、出现了脑裂现象的时候,怎么确定访问的是哪一台负载均衡服务器呢。

3.3.4、干预脑裂现象

3.3.5、总结

4、双vip(创建两个keepalived实例)

4.1、双VIP的配置

4.2、做DNS域名解析

4.2.1、自己本地做DNS域名解析

5、keepalived单播配置


1、负载均衡(load balancing)

定义:将用户的访问请求均衡的分散到后端的真正提供服务的机器上

负载均衡器(load balancer):实现负载均衡功能的一个机器

注意:这个项目是在第七层做负载均衡,所以叫七层负载(在http层次做的负载均衡)。还有一个是四层负载

1.1、为什么需要负载均衡?

  1. 能够将大量的请求比较均匀的分散到后端,不会导致某台服务器访问量过大,某个服务器又没有访问量。
  2. 高可用(对后端的服务器进行健康检测,如果后端哪台服务器出现问题,就不会再将请求转发给它,从而避免用户访问不了服务器,起到一个容错的功能)

1.2、安装负载均衡

1.2.1、利用脚本编译安装

链接:https://pan.baidu.com/s/1lFijyKHDRlzt3LSa_jc81w 
提取码:nlxx

获取上面的编译脚本 

安装完之后,我们需要重启一下。可以退出一下xshell,然后再次连接。那么就会重新加载环境变量

[root@load-balancer ~]# ps aux|grep nginx
root       1552  0.0  0.0 112824   988 pts/1    S+   22:29   0:00 grep --color=auto nginx
[root@load-balancer ~]# nginx  # 启动nginx
[root@load-balancer ~]# ps aux|grep nginx
root       1554  0.0  0.0  46220  1164 ?        Ss   22:29   0:00 nginx: master process nginx
FMY        1555  0.0  0.1  46680  1920 ?        S    22:29   0:00 nginx: worker process
root       1558  0.0  0.0 112824   988 pts/1    S+   22:29   0:00 grep --color=auto nginx
[root@load-balancer ~]# ss -anplut|grep nginx  # 查看nginx的端口
tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=1555,fd=6),("nginx",pid=1554,fd=6))

1.2.2、配置nginx里的负载均衡功能

[root@localhost ~]# cat onekey_install_shediao_v9.sh |grep configure
./configure --prefix=/usr/local/FMY99  --user=FMY --group=FMY  --with-http_ssl_module   --with-threads  --with-http_v2_module  --with-http_stub_status_module  --with-stream 

# 这个是指定nginx安装在哪里的命令
[root@localhost ~]# cd /usr/local/FMY99
[root@localhost FMY99]# cd conf/
[root@localhost conf]# vim nginx.conf

# 配置完之后,使用命令重新加载一下nfs服务
[root@load-balancer ~]# nginx -s reload

 然后再用nfs服务器的IP地址,访问浏览器(用80端口)。如果有你的页面,那么就算成功了。

1.3、负载均衡的调度算法

  1. 轮询(roundrobin)-- 默认的是这个方法。默认情况下所有的服务器的权重值都是1,值越大越优先,
  2. ip_hash:基于客户端的IP地址做负载均衡,相同的IP地址转发到同一个服务器 --》用户的会话信息需要保存的,尽量让这个客户机每次都访问相同的一台服务器
  3. least-connected 最小连接数

1.4、swarm集群数据流向

1.4.1、对数据流进行抓包

[root@worker140 nfsvolume]# tcpdump -i ens33 tcp and dst port 8080 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
21:54:40.604377 IP 192.168.29.99.55008 > 192.168.29.140.8080: Flags [S], seq 1691210301, win 29200, options [mss 1460,sackOK,TS val 11986389 ecr 0,nop,wscale 7], length 0
21:54:40.606393 IP 192.168.29.99.55008 > 192.168.29.140.8080: Flags [.], ack 83208078, win 229, options [nop,nop,TS val 11986391 ecr 11917439], length 0
21:54:40.630564 IP 192.168.29.99.48192 > 192.168.29.139.8080: Flags [S], seq 1621815107, win 29200, options [mss 1460,sackOK,TS val 11986416 ecr 0,nop,wscale 7], length 0
21:54:40.631969 IP 192.168.29.99.48192 > 192.168.29.139.8080: Flags [.], ack 1343859316, win 229, options [nop,nop,TS val 11986417 ecr 11917466], length 0

# 抓包的结果中nfs服务IP地址后面的数字是源端口,由浏览器自动产生

# 我们一边在浏览器里使用“nfs服务器IP地址(192.168.29.99):80”这种方式通过负载均衡的轮询方式来访问不同的机器的nginx服务

2、keepalived

是为了实现高可用(HA,高可用性)的软件:一个业务不会因为某个设备或者点出现问题而导致整个业务不能正常运转,不能有单点故障。

2.1、keepalived是什么?

keepalived有两大功能:

  • HA

高可用性是通过VRRP实现的协议。VRRP(虚拟路由器冗余协议,存在于网络层)是路由器故障转移的基础

  • loadbalancing ---负载均衡

2.1.1、启动VRRP协议的设备角色

master和backup

VIP:virtual ip,虚拟IP地址 ,对外提供服务的。哪台设备是master,VIP就会配置到这个设备的网卡上,这样master就有VIP地址了,就可以对外提供服务了。通过优先级选出master。优先级的范围是0~255。可配置的范围是1到254,优先级0为系统保留给路由器放弃Master位置时候使用,255则是系统保留给IP地址拥有者(如果一个VRRP路由器将虚拟路由器的IP地址作为真实的接口地址,则该设备是IP地址拥有者)使用。所以,当虚拟路由器内存在IP地址拥有者时,只要其工作正常,则为Master路由器。

配置VRRP协议时需要配置每个路由的虚拟路由ID(VRID)和优先权值,使用VRID将路由器进行分组,具有相同的VRID值得路由器为同一个组,VRID是一个0~255得正整数;同一组中的路由器通过使用优先权值来选举Master,优先权大者Master。优先权也是一个0~255的正整数。

2.1.2、vrrp

相关内容:https://blog.csdn.net/kang50055/article/details/124430139

vrrp包的源地址是本地地址,使用IP多播数据包进行封装,目的地址必须为224.0.0.18(是一个组播地址);IP协议号为112;IP包的TTL值必须为255。运行了vrrp协议的软件的设备都会接受这个IP。Master路由器周期性发送VRRP报文,以公布其配置信息(优先级等)和工作状况;

VRRP报文是封装在IP报文中,通过组播的方式传送。

3、keepalived实验

准备两台负载均衡器

lb:192.168.29.99

lb2:192.168.29.100

克隆一下我们之前的负载均衡虚拟机192.168.29.99。注意:我们两台机器上也需要安装nginx,并且配置好http的负载均衡,使用脚本进行编译安装部署nginx。

步骤:

1、安装keepalived软件

[root@load-balancer ~]# yum install keepalived -y

2、配置keepalived.conf文件,添加vip和相关信息。并启动

注意 :除了两台负载均衡除了priority不一致,其他都应该一致

[root@load-balancer ~]# cd /etc/keepalived/
[root@load-balancer keepalived]# ls
keepalived.conf
[root@load-balancer keepalived]# cp keepalived.conf  keepalived.conf.bk   # 这里只是做一个备份
[root@load-balancer keepalived]# vim keepalived.conf
[root@load-balancer keepalived]# cat keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict   # 这个配置要注释掉.若是不注释掉,我们刷新keepalived服务的时候,会在防火墙加一条规则,阻止网络通信从而导致形成脑裂现象。
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 { # 启动一个vrrp的实例  VI_1实例名字,可以自定义
    state BACKUP    # 填MASTER或者BACKUP,建议配置为BACKUP,因为MASTER会抢占VIP
    interface ens33  # 在哪个接口监听vrrp协议,同时绑定VIP到哪个接口
    virtual_router_id 51 # 虚拟路由id   0~255
    priority 200   #优先级  0~255   另一台填小于200的值就行了,那么结果就是这台值为200的机器为master
    advert_int 1   # advert interval 宣告消息间隔  间隔为1秒
    authentication {   # 认证
        auth_type PASS   #认证的类型是密码认证
        auth_pass 1111   # 具体的密码,可以自己修改
    }
    virtual_ipaddress {  # VIP的配置,vip可以是多个IP
        192.168.29.199   # 这个IP地址要没人使用的IP地址
    }
}

[root@load-balancer keepalived]# service keepalived start
Redirecting to /bin/systemctl start keepalived.service
[root@load-balancer keepalived]# ps aux|grep keepalived
root       1602  0.0  0.0 123012  1404 ?        Ss   21:20   0:00 /usr/sbin/keepalived -D
root       1603  0.0  0.1 133984  3408 ?        S    21:20   0:00 /usr/sbin/keepalived -D
root       1604  0.0  0.1 133852  2668 ?        S    21:20   0:00 /usr/sbin/keepalived -D
root       1617  0.0  0.0 112824   988 pts/0    S+   21:26   0:00 grep --color=auto keepalived
[root@load-balancer keepalived]# ss -anplut|grep keepalived  #没有IP端口说明不是在传输层(第四层)

为什么要注释掉vrrp_strict?

大概原因是,vrrp_strict 开启之后,会导致keepalived 严格遵守VRRP协议,禁止以下状况:
1.无VIP地址
2.配置了单播邻居
3.在VRRP版本2中有IPv6地址,开启动此项会自动开启iptables防火墙规则。
因此通常建议关闭此设置。

抓包

可以使用"tcpdump -n -i ens33 vrrp"进行抓包vrrp包

 大概内容如上图所示

 

我们看到这个帧里的目的mac地址(01:00:5E:00:00:12)是否是一个广播地址?

这个地址是一个二层的组播mac地址,类似于FF:FF:FF:FF:FF:FF。交换机收到的目的地址是组播的mac地址时,会进行广播。

启动负载均衡的nginx

[root@load-balancer keepalived]# nginx
[root@load-balancer keepalived]# ps aux|grep nginx
root       1731  0.0  0.0  46220  1164 ?        Ss   22:06   0:00 nginx: master process nginx
FMY        1732  0.0  0.1  46680  1924 ?        S    22:06   0:00 nginx: worker process
root       1750  0.0  0.0 112824   988 pts/0    S+   22:06   0:00 grep --color=auto nginx



[root@load-balancer-2 ~]# nginx
[root@load-balancer-2 ~]# ps aux|grep nginx
root       2052  0.0  0.0  46220  1168 ?        Ss   22:06   0:00 nginx: master process nginx
FMY        2053  0.0  0.1  46680  1924 ?        S    22:06   0:00 nginx: worker process
root       2055  0.0  0.0 112824   984 pts/0    S+   22:07   0:00 grep --color=auto nginx

测试

3.1、对于两台负载均衡服务器,关于keepalived.conf中state和priority之间的关系

  • 相同priority,相同state,哪台机器先启动keepalived服务,哪台机器就拥有虚拟IP
    • 相同priority,不同state,哪台机器的state是MASTER,哪台机器就拥有虚拟IP
  • 不同priority,相同state,哪台机器的priority的值高,哪台机器就拥有虚拟IP
    • 不同priority,不同state,哪台机器的priority的值高,哪台机器就拥有虚拟IP

3.2、VIP漂移

查看VIP所在

############### lb
[root@load-balancer keepalived]# ip a
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
    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 group default qlen 1000
    link/ether 00:0c:29:4c:e5:16 brd ff:ff:ff:ff:ff:ff
    inet 192.168.29.99/24 brd 192.168.29.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.29.199/32 scope global ens33   # 这里我们看到了VIP飘在了99这个虚拟机上 
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe4c:e516/64 scope link 
       valid_lft forever preferred_lft forever


###################  lb2

[root@load-balancer-2 ~]# ip a
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
    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 group default qlen 1000
    link/ether 00:0c:29:e8:ed:fb brd ff:ff:ff:ff:ff:ff
    inet 192.168.29.100/24 brd 192.168.29.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fee8:edfb/64 scope link 
       valid_lft forever preferred_lft forever

当我们停掉lb,使用service keepalived stop

############  lb

[root@load-balancer keepalived]# ip  a
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
    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 group default qlen 1000
    link/ether 00:0c:29:4c:e5:16 brd ff:ff:ff:ff:ff:ff
    inet 192.168.29.99/24 brd 192.168.29.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe4c:e516/64 scope link 
       valid_lft forever preferred_lft forever

######## lb2

[root@load-balancer-2 ~]# ip a
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
    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 group default qlen 1000
    link/ether 00:0c:29:e8:ed:fb brd ff:ff:ff:ff:ff:ff
    inet 192.168.29.100/24 brd 192.168.29.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.29.199/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fee8:edfb/64 scope link 
       valid_lft forever preferred_lft forever

经过1秒钟(上文中keepalived.conf文件中的advert_int设置的时间)之后,只要master没有发送vrrp了,那么就会重新选举出master。当我们把lb重新启动,那么VIP又会回来。因为lb的priority比lb2的高,又会重新选举。

3.2.1、抢占模式和非抢占模式

  • 非抢占方式:如果Backup路由器工作在非抢占方式下,则只要Master路由器没 出现故障,Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器。
  • 抢占方式:如果Backup路由器工作在抢占方式下,当它收到VRRP报文后,会将自己的优先级与通告报文中的优先级进行比较。如果自己的优先级比当前的Master路由器的优先级高,就会主动抢占成为Master路由器;否则,将保持Backup状态。

3.2.2、非抢占模式的配置

把global_defs中vrrp_strict关掉,然后在vrrp_instance VI_1加入"nopreempt"

3.3、脑裂

定义:就是多台LB上都有vip地址,也就是出现了多个master。

出现原因

  1. 防火墙阻止了keepalived的vrrp消息的通告(网络通信问题)。
  2. virtual_router_id不一样的时候。
  3. 认证密码不一样

3.3.1、制造防火墙规制阻拦vrrp消息的通告

[root@load-balancer-2 ~]# cat iptables.sh 
#!/bin/bash

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -P INPUT DROP

出现脑裂

########### lb2
[root@load-balancer-2 ~]# ip a
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
    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 group default qlen 1000
    link/ether 00:0c:29:e8:ed:fb brd ff:ff:ff:ff:ff:ff
    inet 192.168.29.100/24 brd 192.168.29.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.29.199/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fee8:edfb/64 scope link 
       valid_lft forever preferred_lft forever


############## lb
[root@load-balancer ~]# ip a
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
    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 group default qlen 1000
    link/ether 00:0c:29:4c:e5:16 brd ff:ff:ff:ff:ff:ff
    inet 192.168.29.99/24 brd 192.168.29.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.29.199/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe4c:e516/64 scope link 
       valid_lft forever preferred_lft forever

制造VRID不同就是通过修改/etc/keepalived/keepalived.conf文件中的virtual_router_id。把两台负载均衡机器的VRID设置为不一样就行了。

3.3.2、脑裂的危害(从两个原因来分析)

出现脑裂的原因

  • 防火墙阻止了keepalived的vrrp消息的通告

后果:会导致80端口不能够访问,则是会有危害和影响的

  • virtual_router_id不一样的时候

后果:在虚拟IP访问正常的情况下,对于web服务器上没有危害,反而还有好处,起到负载均衡的作用。

3.3.3、出现了脑裂现象的时候,怎么确定访问的是哪一台负载均衡服务器呢。

这种情况是对于VRID不同而出现的脑裂的情况来说的,因为若是防火墙导致出现的脑裂,则不可以访问web服务。

方法:查看客户机里的arp缓存表,查看192.168.29.199对应的mac地址。vip会使用真是机器的ens33接口上的mac地址。通过mac地址来判断我们的客户机使用的是哪一台机器上的vip。

🚀操作如下🚀

[root@ngingx-kafka01 ~]# curl 192.168.29.199    # 使用别的机器来访问虚拟地址
[root@ngingx-kafka01 ~]# arp -a
? (192.168.29.99) at 00:0c:29:4c:e5:16 [ether] on ens33
? (192.168.29.30) at <incomplete> on ens33
? (192.168.29.1) at 00:50:56:c0:00:08 [ether] on ens33
gateway (192.168.29.2) at 00:50:56:ee:e5:6d [ether] on ens33
? (192.168.29.52) at <incomplete> on ens33
nginx-kafka03 (192.168.29.128) at 00:0c:29:16:6a:88 [ether] on ens33
? (192.168.29.199) at 00:0c:29:4c:e5:16 [ether] on ens33   #由这里可以得知是访问的99这台负载均衡服务器的
nginx-kafka02 (192.168.29.155) at <incomplete> on ens33


# 但是我们又用不同的机器后面测试了,发现这个访问哪台机器是随机的。

底层原因:当我们一台客户机访问虚拟地址,知道IP(192.168.29.199)不知道mac地址,就会发arp广播。哪台配置的VIP的机器先响应了客户机,客户机就会使用哪台机器的VIP对应的mac地址。所以这种情况出现的脑裂,访问就有了随机性,而且不受运维人员控制的。

另外arp缓存表是动态的,所以隔一段时间后,我们再用相同的机器访问虚拟IP地址,得到的mac地址可能会一样,也可能会不一样。

3.3.4、干预脑裂现象

  • 硬件、网线冗余
  • 脚本检测(检测arp包,拿mac地址,若是有两个就是出现了脑裂现象)

3.3.5、总结

脑裂是因为考虑不周或者误操作导致,我们一般不去故意制造脑裂。另外我们可以使用arping来检测是否一个虚拟IP被两个机器使用。

[root@ngingx-kafka01 ~]# arping -I ens33 192.168.29.199
ARPING 192.168.29.199 from 192.168.29.137 ens33
Unicast reply from 192.168.29.199 [00:0C:29:4C:E5:16]  2.893ms
Unicast reply from 192.168.29.199 [00:0C:29:E8:ED:FB]  3.222ms
Unicast reply from 192.168.29.199 [00:0C:29:E8:ED:FB]  0.899ms
Unicast reply from 192.168.29.199 [00:0C:29:E8:ED:FB]  1.383ms
Unicast reply from 192.168.29.199 [00:0C:29:E8:ED:FB]  0.982ms

# 这里有两个机器回应了拥有192.168.29.199这个IP地址,所以可以知道出现了脑裂现象

4、双vip(创建两个keepalived实例)

应用场景:如果只是单vip,master对外提供服务,而backup处于闲置状态,如何让backup也对外提供服务?

4.1、双VIP的配置

作用:能够让资源充分的利用起来

# 192.168.29.99
[root@load-balancer ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict   # 这个配置要注释掉
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

# 实例1
vrrp_instance VI_1 { # 启动一个vrrp的实例  VI_1实例名字,可以自定义
    state BACKUP    # 填MASTER或者BACKUP,建议配置为BACKUP,因为MASTER会抢占VIP
    interface ens33  # 在哪个接口监听vrrp协议,同时绑定VIP到哪个接口
    virtual_router_id 51 # 虚拟路由id   0~255
    priority 200   #优先级  0~255
    advert_int 1   # advert interval 宣告消息  时间间隔为1秒
    authentication {   # 认证
        auth_type PASS   #认证的类型是密码认证
        auth_pass 1111   # 具体的密码,可以自己修改
    }
    virtual_ipaddress {  # VIP的配置,vip可以是多个IP
        192.168.29.199   # 这个IP地址要没人使用的IP地址
    }
}


# 实例2
vrrp_instance VI_2 {
    state BACKUP
    interface ens33
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.29.200
    }
}

# 192.168.29.100
[root@load-balancer-2 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.29.199
    }
}

vrrp_instance VI_2 {
    state BACKUP
    interface ens33
    virtual_router_id 52
    priority 200
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.29.200
    }
}

结果展示:

[root@load-balancer-2 ~]# ip a
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
    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 group default qlen 1000
    link/ether 00:0c:29:e8:ed:fb brd ff:ff:ff:ff:ff:ff
    inet 192.168.29.100/24 brd 192.168.29.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.29.200/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fee8:edfb/64 scope link 
       valid_lft forever preferred_lft forever

[root@load-balancer ~]# ip a
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
    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 group default qlen 1000
    link/ether 00:0c:29:4c:e5:16 brd ff:ff:ff:ff:ff:ff
    inet 192.168.29.99/24 brd 192.168.29.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.29.199/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe4c:e516/64 scope link 
       valid_lft forever preferred_lft forever

4.2、做DNS域名解析

DNS的记录类型:

A记录  --》域名到ip    例如:www  -》192.168.29.128

下面以阿里云服务器为例:

 用Windows查看

4.2.1、自己本地做DNS域名解析

文件所在地:C:\Windows\System32\drivers\etc\hosts

在里面添加域名解析就行了。

5、keepalived单播配置

keepalived在组播模式下所有的信息都会向224.0.0.18的组播地址发送,产生众多的无用信息,并且会产生干扰和冲突,所以需要将其组播的模式改为单播。这是一种安全的方法,避免局域网内有大量的keepalived造成虚拟路由id的冲突。 单播模式需要关闭vrrp_strict这个选项。单播需要在VIP实例配置段加入单播的源地址和目标地址
 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FanMY_71

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值