原理图
本博客实现时的ip约定
1、为两台主备CentOs7服务器安装Keepalived和LVS
安装keepalived:Keepalived安装_p&f°的博客-CSDN博客
安装LVS请看此博客第一点:搭建LVS-DR模式_p&f°的博客-CSDN博客(一、配置LVS节点与ipvsadm)
2、 安装完keepalived后,进入配置目录,修改配置文件(151主节点和152备用节点都要修改,这里先说主节点)
cd /etc/keepalived/
cp keepalived.conf.sample keepalived.conf
vim keepalived.conf
151主节点keepalived.conf配置文件内容如下
! Configuration File for keepalived
global_defs {
router_id LVS_151
}
vrrp_instance VI_1 {
state MASTER
interface ens32
virtual_router_id 41
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.217.150
}
}
# 配置集群地址访问的ip+端口,端口和nginx保持一致,都是80
virtual_server 192.168.217.150 80 {
# 健康检查的时间,单位:秒
delay_loop 6
# 配置负载均衡的算法,默认是轮询
lb_algo rr
# 设置LVS的模式。NAT|RUN|DR
lb_kind DR
# 设置会话持久化的时间
persistence_timeout 5
# 协议 -t
protocol TCP
# 负载均衡的真实服务器,也就是nginx节点的具体的真实ip地址
real_server 192.168.217.129 80 {
# 轮询的默认权重配比设置为1
weight 1
# 设置健康检查
TCP_CHECK {
# 检查的80 端口 与上面对应
connect_prot 80
# 超时时间 2s
connect_timeout 2
# 重试次数 2次
nb_get_retry 2
# 间隔时间 3s
delay_before_retry 3
}
}
real_server 192.168.217.130 80 {
weight 1
}
# 设置健康检查
TCP_CHECK {
# 检查的80 端口 与上面对应
connect_prot 80
# 超时时间 2s
connect_timeout 2
# 重试次数 2次
nb_get_retry 2
# 间隔时间 3s
delay_before_retry 3
}
}
3、清除ipvsadm之前的配置
ipvsadm -C
4、重启keepalived,使得配置文件生效
(我这里是第一次安装,直接启动就行)
/usr/local/keepalived/sbin/keepalived
5、ipvsadm -Ln 查看配置结果
6、访问虚拟ip 192.168.217.150 正常访问,多次刷新,轮询访问到29和130nginx服务器。至此主节点配置完毕
7、配置备用节点152。
修改keepalived的配置文件,进入到 /etc/keepalived/,把主节点的配置文件keepalived.conf内容复制到备用节点,再修改。内容如下
! Configuration File for keepalived
global_defs {
router_id LVS_152
}
# 只需修改这里的内容
vrrp_instance VI_1 {
state BACKUP
interface ens32
virtual_router_id 41
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.217.150
}
}
#以下内容均不需要修改
# 配置集群地址访问的ip+端口,端口和nginx保持一致,都是80
virtual_server 192.168.217.150 80 {
# 健康检查的时间,单位:秒
delay_loop 6
# 配置负载均衡的算法,默认是轮询
lb_algo rr
# 设置LVS的模式。NAT|RUN|DR
lb_kind DR
# 设置会话持久化的时间
persistence_timeout 5
# 协议 -t
protocol TCP
# 负载均衡的真实服务器,也就是nginx节点的具体的真实ip地址
real_server 192.168.217.129 80 {
# 轮询的默认权重配比设置为1
weight 1
# 设置健康检查
TCP_CHECK {
# 检查的80 端口 与上面对应
connect_prot 80
# 超时时间 2s
connect_timeout 2
# 重试次数 2次
nb_get_retry 2
# 间隔时间 3s
delay_before_retry 3
}
}
real_server 192.168.217.130 80 {
weight 1
}
# 设置健康检查
TCP_CHECK {
# 检查的80 端口 与上面对应
connect_prot 80
# 超时时间 2s
connect_timeout 2
# 重试次数 2次
nb_get_retry 2
# 间隔时间 3s
delay_before_retry 3
}
}
8、清除备用机ipvsadm之前的配置规则
ipvsadm -C
9、修改了keepalived配置文件,重启,使其生效
(我这里是第一次安装,直接启动就行)
/usr/local/keepalived/sbin/keepalived
10、ipvsadm -Ln 查看配置结果
测试
1、把其中的任何一台keepalived停止,都可以通过虚拟ip正常访问页面(这里就不演示了)
2、假设再运行过程中,其中一台nginx故障,是否能正常访问页面。
2.1 把129所在的nginx停止
./nginx -s stop
2.2 访问虚拟ip。由于129停止,配置中配置了健康检查,它会自动把请求跳转到正常的nginx中,即此时访问的是130的nginx。
2.3 查看主节点的集群情况 ipvsadm -Ln,此时确实只有一个130nginx节点
2.4 将129服务器的nginx恢复 ./nginx -s reload,根据健康检查,又会把它加回集群中