0%

linux运维学习笔记:linux集群

写在前面

所谓集群,是多台服务器组成一个整体来为企业服务提供支撑。在生产环境中,采用多台服务器组成一个集群来运行程序,既可以避免单点故障,还能够提升服务器的承载能力。

主要包括以下内容:

  • 高可用集群搭建

  • 负载均衡集群搭建

集群简介

  • 负载均衡集群

就是指将一台服务器作为任务分发器,负责把用户的请求分发给后端多台不同的服务器处理,实现负载均衡的开源软件有LVS、keepalived、haproxy、nginx,商业软件有F5、Netscaler等。

  • 高可用集群

即“HA”集群,也常称作“双机热备”,用于关键业务。核心原理都是通过心跳线连接两台服务器,正常情况下一台用于提供服务,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务。实现高可用的开源软件有:heartbeat、keepalived。

注:心跳(heartbeat)是在群集中节点间传递的通讯包,用于监测群集中的节点、网络和网络接口的工作状态,防止节点的孤立,以保证群集的正常运作。

高可用集群是这则笔记讲的重点,后面用keepalived这个进行配置。

利用keepalived搭建高可用集群

Keepalived工作原理

keepalived通过VRRPVirtual Router Redundancy Protocol,虚拟路由冗余协议来实现高可用。VRBP是实现路由高可用的一种通信协议,在这个协议里会将多台功能相同的路由器组成一个小组,这个小组里会有1个master角色和N(N>=1)个backup角色。工作时,master会通过组播的形式向各个backup发送VRRP协议的数据包,当backup收不到master发来的VRRP数据包时,就会认为master宕机了。此时就需要根据各个backup的优先级来决定谁成为新的mater。

Keepalived要有三个模块,分别是core、check和vrrp,他们的作用如下:

  1. core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析;

  2. check模块负责健康检查;

  3. vrrp模块是来实现VRRP协议的;

keepalived配置高可用集群

重要概念:Virtual IP

开始配置之前,先要了解一个概念VIP,这里的VIP跟我们平常理解的不太一样,而是“Virtual IP”,即“虚拟IP”。这个IP是由Keepalived给服务器配置上的,服务器靠这个VIP对外提供服务,当master机器宕机,VIP被分配到backup上。在实际应用中,服务器的切换用户是感知不到的,所以称之为Virtual IP。

准备工作

准备两台虚拟机,其中

  • master 172.16.155.120(克隆一台虚拟机作为master,设置静态ip和hostname)

  • backup 172.16.155.132

这里还需要做一下几个步骤:

  • 两台机器分别安装上keepalived;
1
yum install -y keepalived
  • master和backup关闭防火墙和selinux
1
2
3
4
5
6
7
8
9
10
11
//临时关闭selinux
setenforce 0

//备份iptables规则
cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak

//关闭iptables
systemctl stop iptables

//禁止开机启动
systemctl disable iptables
  • master机器上采用yum 安装nginx

说明:之所以要这样大费周章,是因为源码包安装和yum安装的版本是不同的,方便观察实验结果,在实际使用当中并没有影响。

1
2
3
4
5
//安装epel-release 源
yum install -y epel-release

//安装nginx
yum install -y nginx

master机器配置

第一步:编辑配置文件

keepalive的配置文件为/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
//首先清空配置文件内容
[root@local-linux00 ~]# > /etc/keepalived/keepalived.conf

//编辑配置文件
[root@local-linux00 ~]# vi /etc/keepalived/keepalived.conf
//加入以下内容

global_defs { //全局定义参数
notification_email {
root@steve-test.com //定义接收告警的人
}
notification_email_from root@steve-test.com //定义发邮件地址
smtp_server 127.0.0.1 //定义发邮件地址,若为127.0.0.1则使用本机自带邮件服务器发送
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_nginx { //chk_nginx为自定义名字,后面还会用到它
script "/usr/local/sbin/check_ng.sh" //自定义脚本,该脚本为监控nginx服务的脚本
interval 3 //每隔3S执行一次该脚本
}
vrrp_instance VI_1 {
state MASTER //角色为master
interface ens33 //针对哪个网卡监听VIP
virtual_router_id 51
priority 100 //权重为100,master要比backup大
advert_int 1
authentication {
auth_type PASS
auth_pass 123456 //定义密码,这个密码自定义
}
virtual_ipaddress {
172.16.155.120 //定义VIP
}
track_script {
chk_nginx //定义监控脚本,这里和上面vrr_script后面的字符串保持一致
}
}

如下图所示:

第二步:编辑监控脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@local-linux00 ~]# vi /usr/local/sbin/check_ng.sh  

//脚本内容如下:
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
/etc/init.d/nginx start
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived
fi
fi

第三步:启动keepalived
  • 更改文件权限
1
[root@local-linux00 ~]# chmod 755 /usr/local/sbin/check_ng.sh
  • 启动keepalived

backup 服务器配置

第一步:编辑配置文件
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
//首先清空配置文件内容
[root@local-linux02 ~]# > /etc/keepalived/keepalived.conf

//编辑配置文件
[root@local-linux02 ~]# vi /etc/keepalived/keepalived.conf
//加入以下内容
global_defs {
notification_email {
root@steve-test.com
}
notification_email_from root@steve-test.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_nginx {
script "/usr/local/sbin/check_ng.sh" //检测脚本
interval 3
}
vrrp_instance VI_1 {
state BACKUP //这个需要改,说明是从的状态
interface ens33
virtual_router_id 51
priority 90 //这个权重比master少
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
172.16.155.120 //跟master保持一致
}
track_script {
chk_nginx
}
}
第二步:编辑监控脚本

注:跟master服务器监控脚本一样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@local-linux02 ~]# vi /usr/local/sbin/check_ng.sh

//添加如下内容:

#!/bin/bash
d=`date --date today +%Y%m%d_%H:%M:%S`
n=`ps -C nginx --no-heading|wc -l`
if [ $n -eq "0" ]; then
/etc/init.d/nginx start
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived
fi
fi
第三步:启动keepalived
  • 更改文件权限
1
chmod 755 /usr/local/sbin/check_ng.sh
  • 启动keepalived
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
systemctl start keepalived
```

##### TroubleShooting: keepalived 无法启动

如图所示,在master和backup机器上都出现了keepalived无法启动的现象。

![](https://farm1.staticflickr.com/837/42306418775_2f0846498e_o.png)

排查了一下,都跟nginx有关,解决方案如下:

**master:**重启了nginx,再次启动keepalived就OK了。

**backup:**这个排查比较复杂。先查了错误日志,没看明白;又实用nginx -t 检查了配置文件,发现了错误提示:

![](https://farm1.staticflickr.com/841/43160968952_5641af5817_o.png)

提示缺少这个文件`/tmp/nginx/test.log`,touch目录创建一个,再检查发现OK。

![](https://farm2.staticflickr.com/1808/28341514467_0741a2d649_o.png)

之后,再次重启nginx、keepalived,终于都重新启动了。

#### 测试效果

基本思路,就是认为制造master机器故障,然后看看访问会不会自动切换到backup服务器上。

![](https://farm2.staticflickr.com/1805/42306628125_c671148573_o.png)

我们可以尝试:

1. 关闭master的nginx服务;

2. 在master上增加iptabls规则限制vrrp发包

3. master主机关闭keepalived

通过实验,来测试keepalived是否正常工作。

注:iptables配置规则语句

iptables -I OUTPUT -p vrrp -j DROP

systemctl restart iptables

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150

## 负载均衡集群

LB集群是load balance 集群的简写,也就是这里所说的负载均衡集群;

根据维基百科的解释,负载平衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。简而言之,负载均衡的目的,就在于平衡负载,给用户提供优质,可靠,稳定的服务。 ![](https://farm1.staticflickr.com/847/43155971872_f5c54312e0_o.jpg)
而集群,就是一组部署有相同应用的服务器。例如,我们可以将一个网站部署在采用均衡负载部署在一个集群服务器,可以将用户的请求根据特定规则转发到应用服务器上进行处理,用户的请求无论连接到哪台服务器上,都能得到相同的处理。这实现了完整的集群处理系统。

### 实现LB集群的硬件和软件:

#### 硬件LB

* F5 公司的 BIG-IP系列

* Citrix 公司的 NetScaler系列

* A10 公司的 AX系列

#### 软件LB

* 四层:LVS(Linux VirtualServer)

* 七层:Nginx,HAProxy

### 主要负载均衡方案

#### HTTP 重定向负载均衡

仅适合WEB 服务器。用户发出请求时,负载均衡服务器会根据HTTP请求,重新计算出实际的WEB服务器地址,通过302重定向相应发送给用户浏览器。用户浏览器再根据302响应信息,对实际的WEB服务器发出请求。

HTTP重定向方案有点是比较简单,缺点是性能比较差,需要2次请求才能返回实际结果,还有就是仅适合HTTP服务器使用

#### DNS 域名解析负载均衡

在DNS中存储了一个域名的多个主机地址,每次域名解析请求,都可以根据负载均衡算法返回一个不同的IP地址。这样多个WEB服务器就构成了一个集群,并由DNS服务器提供了负载均衡服务。

DNS域名解析负载均衡的优点是由DNS来完成负载均衡工作,服务本身不用维护负载均衡服务器的工作。但是,由于负载均衡服务器不是自己维护,没法做精细控制,而且DNS在客户端往往带有缓存,服务器的变更很难及时反映到客户端上。

#### 反向代理负载均衡

Nginx服务器就可以部署为反向代理服务器,解析客户端请求,根据负载均衡算法转发到不同的后台服务器上。用户和后台服务器之间不再有直接的链接。请求,响应都由反向代理服务器进行转发,实现WEB 应用的负载均衡。

优点是和负载均衡服务集成在一起,部署简单。缺点是所有的请求回应都需要经过反向代理服务器。其本身可能会成为性能的瓶颈。

#### IP负载均衡

用户请求包到达负载均衡服务器后,负载均衡服务器在操作系统内核层获取网络数据包,根据负载均衡算法获取真实后台服务器地址, 然后将数据包的目标地址改为后台服务器ip, 转发给内部服务器。

IP均衡负载全部处理过程都在内核层(Ring 0)进行。和七层负载均衡相比,具有更好的性能。但是由于所有的响应包都要经过负载均衡服务器,负载均衡服务器的网卡带宽,很容易成为系统的瓶颈。

#### 数据链路层负载均衡

数据链路层是工作在TCP/IP协议最底层的数据链路层,采用数据帧进行通信,每个网卡都具有唯一的MAC地址,数据帧用MAC地址来标识数据的来源与目的地。

数据链路层负载均衡,是指在数据分发过程中不修改IP地址,只修改目的MAC地址,通过配置真实物理服务器集群所有机器虚拟IP和负载均衡服务器IP一致,从而达到不修改数据包的源地址和目的地址就可以进行数据分发的目的。

数据链路层负载均衡是目前使用最广泛的一种负载均衡方式。开源软件LVS(Linux Virtual Server),同时支持上面的IP负载均衡和数据链路层负载均衡。
### LVS是什么
LVS是一个实现负载均衡集群的开源软件项目,其架构从逻辑上可分为三层:

* 调度层(Director)

* server集群层(Real server)

* 共享存储层

#### LVS三种工作模式:

##### `LVS NAT`模式

![](https://farm2.staticflickr.com/1804/41396035130_b3f82a1570_o.jpg)

这种模式借助iptables的nat表来实现;用户的请求到分发器后,通过预设的iptables规则,调度器将请求的目标ip即vip地址改为`Real server`的ip(内网ip); 返回的数据包也经过调度器,调度器再把源地址修改为vip,再返回给客户端;

* 优点:在nat模式中,只需要分发器有公网ip即可,所以比较节省公网ip资源;

* 缺点:用户请求的数据包和返回给用户的数据包全部经过分发器,所以分发器(调度器)成为瓶颈;

##### `LVS IP Tunnel`模式

![](https://farm2.staticflickr.com/1822/28336955027_bf66cfbb54_o.jpg)


调度器将请求的数据包封装加上real server的ip头,加密通过ip隧道转发到后端的`real server`上,而`real server`会直接把数据返回给客户端,而不再经过调度器;

##### `LVS DR`模式

![](https://farm1.staticflickr.com/918/42487540814_bbcbcd8151_o.jpg)

调度器将请求来的数据包的目标mac地址改为real server的mac地址,返回的时候也不经过调度器,直接返回给客户端;

#### LVS的调度算法:

##### 轮叫调度 `Round Robin` (简称rr)

将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载

##### 加权轮叫 `Weighted Round Robin` (简称wrr)

根据真实服务器的不同处理能力来调度访问请求,并动态地调整其权重,能者多劳,合理使用服务器资源。

##### 最少链接 `least connection` (简称LC)

动态地将网络请求调度到已建立的链接数最少的服务器上,如果集群系统的性能彼此都差不多,采用“最小连接"效果较好。

##### 加权最少链接 `Weighted Least Connections` (简称WLC)

在集群中服务器之间性能差异较大的情况下,结合浏览器权重和最少链接两个方法进行请求分配;

##### 基于局部性的最小连接 `Locality-Based Least Connections`(简称LBLC)

针对请求报文的目标IP地址的负载均衡调度,将相同目标IP地址的请求调度到同一台服务器,来提高各台服务器的访问局部性和主存Cache命中率。目前主要用于Cache集群系统。


##### 带复制的基于局部性最小连接 `Locality-Based Least Connections with Replication`(简称LBLCR)

也是针对目标IP地址的负载均衡,不同之处是:它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法是维护从一个目标IP地址到一台服务器的映射。

LBLCR算法先根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从该服务器组中选出一台服务器,若服务器没有超载,则将请求发送到该服务器;若服务器超载,则按“最小连接”原则从整个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

##### 目标地址散列调度 `Destination Hashing dh`

针对目标IP地址的负载均衡的,但它是一种静态映射算法,通过一个散列(hash)函数将一个目标IP地址映射到一台服务器。目标地址散列调度算法先根据请求的目标IP地址,作为散列键(hash key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

##### 源地址散列调度 `Source Hashing sh`

该算法正好与目标地址散列调度算法相反,它根据请求的源IP地址,作为散列键从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。它的算法流程与目标地址散列调度算法的基本相似,只不过将请求的目标IP地址换成请求的源IP地址。
### LVS NAT模式搭建

#### 准备工作:

测试安装LVS NAT模式,至少需要有三台虚拟机:

* 调度器(dir)两张网卡,一个内网IP:172.16.155.120,一个”外网IP“:172.16.15.99(vmware仅主机模式);

* 真实服务器rs2,内网IP:172.16.155.132,设置网关为172.16.155.120;

* 真实服务器rs1,内网IP:172.16.155.128,设置网关为172.16.155.120;

这里用来作为dir调度器的,是上一节笔记中克隆的虚拟机local-linux00,这里的”外网ip“是虚拟的,并非真实的外网ip。具体的设置方法如下:

- 查看当前网课配置信息

![](https://farm1.staticflickr.com/923/42366622215_270432b64c_o.png)

进入`/etc/sysconfig/network-scripts` 文件夹,复制网卡配置文件,并重命名为`ifcfg-ens33:1`

![](https://farm2.staticflickr.com/1766/42552258184_767b2c9024_o.png)

编辑`ifcfg-ens33:1`文件,修改ip地址:

vi ifcfg-ens33:1

//将ip地址设定为172.16.15.99

1
2
3
4

![](https://farm1.staticflickr.com/844/42366871715_42d173238d_o.png)

保存后执行以下命令重启网卡

/etc/init.d/network restart

1
2
3
4
5

另外,还要关闭selinux和防火墙


- 关闭selinux

setenforce 0

1
2

- 清空防火墙规则

//备份iptables规则
cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak

//清空防火墙规则
iptables -F
service iptables save

1
2
3
4

#### 配置分发器dir

安装LVS核心工具ipvsdam

yum install -y ipvsadm

1
2

编写配置脚本

vim /usr/local/sbin/lvs_nat.sh

//增加如下配置内容:

#! /bin/bash

director 服务器上开启路由转发功能

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

关闭icmp的重定向

echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects

注意区分网卡名字,这里两个网卡分别为ens33和ens37

echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens38/send_redirects

director 设置nat防火墙

iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 172.16.155.0/24 -j MASQUERADE

director设置ipvsadm

IPVSADM=’/usr/sbin/ipvsadm’
$IPVSADM -C
$IPVSADM -A -t 172.16.13.129:80 -s wlc -p 3
$IPVSADM -a -t 172.16.13.129:80 -r 172.16.155.132:80 -m -w 1
$IPVSADM -a -t 172.16.13.129:80 -r 172.16.155.128:80 -m -w 1

1
2

- 执行脚本

bash /usr/local/sbin/lvs_nat.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

#### rs服务器配置

修改rs网络配置,将网关改为dir的外网地址172.16.13.129

![](https://farm1.staticflickr.com/926/42322478455_05bffaec78_o.png)

至此配置就成果了,使用curl命令来测试实验效果。

### LVS DR模式搭建

#### 准备工作

DR模式同样需要三台虚拟机,三台机器只需要有“公网”IP,但在这种模式下又多了一个VIP。

* 调度器dir:172.16.111.100

* 真实服务器rs1:172.16.111.110

* 真实服务器rs2:172.16.111.120

* VIP:172.16.111.200

#### dir机器上写入脚本

vim /usr/local/sbin/lvs_dr.sh

//增加如下脚本内容:

#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/usr/sbin/ipvsadm
vip=172.16.111.200
rs1=172.16.111.110
rs2=172.16.111.120

#注意这里的网卡名字
ifdown ens33 #为了不让网卡设置多次
ifup ens33
ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev ens33:2
$ipv -C
$ipv -A -t $vip:80 -s rr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1

1
2
3
4
5
6

- 启动脚本

![](https://farm1.staticflickr.com/841/29361801558_af5b41c5a0_o.png)

#### 在rs1与rs2上编写同样脚本

vim /usr/local/sbin/lvs_rs.sh

//增加如下脚本内容:

#/bin/bash
vip=172.16.111.200

#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0

#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端

#参考文档www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
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

1
2

- 启动脚本

sh /usr/local/sbin/lvs_rs.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

## keepalived + LVS

LVS架构中,不管是NAT模式还是DR模式,当后端的RS宕掉时,调度器依然会把请求转发到宕掉的RS上,这样的结果并不是我们想要的。keepalived就可以解决该问题。

keepalived已经嵌入了LVS功能,在调度器上只要安装了keepalived,就不用再安装ipvsadm了,也不用去编写LVS相关的脚本了。

完整的keepalived+LVS架构需要有两台调度器实现高可用,提供调度服务的只需要一台,另外一台作为备用。

### 准备工作

准备三台机器分别为:
* dir(安装keepalived)172.16.155.120

* rs1:172.16.155.132

* rs2:172.16.155.128

* vip:172.16.155.200

### dir机器上修改keepalived配置文件

vim /etc/keepalived/keepalived.conf

删除之前的配置,增加如下配置内容:

vrrp_instance VI_1 {

#备用服务器上为 BACKUP
state MASTER
#绑定vip的网卡为ens33,你的网卡和阿铭的可能不一样,这里需要你改一下
interface ens33
virtual_router_id 51
#备用服务器上为90
priority 100
advert_int 1
authentication {
    auth_type PASS
    auth_pass aminglinux
}
virtual_ipaddress {
    172.16.111.200
}

}
virtual_server 172.16.111.200 80 {

#(每隔10秒查询realserver状态)
delay_loop 10
#(lvs 算法)
lb_algo wlc
#(DR模式)
lb_kind DR
#(同一IP的连接60秒内被分配到同一台realserver)
persistence_timeout 60
#(用TCP协议检查realserver状态)
protocol TCP
real_server 172.16.111.110 80 {
    #(权重)
    weight 100
    TCP_CHECK {
    #(10秒无响应超时)
    connect_timeout 10
    nb_get_retry 3
    delay_before_retry 3
    connect_port 80
    }
}
real_server 172.16.111.120 80 {
    weight 100
    TCP_CHECK {
    connect_timeout 10
    nb_get_retry 3
    delay_before_retry 3
    connect_port 80
    }
 }

}

1
2
3
4

由于之前执行过LVS的脚本,可能需要做以下操作:

- 把之前的ipvsadm规则清空

ipvsadm -C

1
2

- 把之前设置的VIP删除掉

systemctl restart network

1
2

- 在keepalived的配置文件中定义的LVS模式为DR模式,所以需要在两台rs上执行lvs_dr_rr.sh脚本,在上一节设置的脚本。

sh /usr/local/sbin/lvs_dr_rs.ch

1
2

- 启动keepalived

systemctl start keepalived
`

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!