Keepalived
- 一、工作原理
- 二、部署服务
-
- 2.1 IP分配
- 2.2 配置主负载调度器
- 2.3 配置备负载调度器
- 2.3 web1 设置
- 2.4 web2 设置
- 2.5 测试
一、工作原理
基于VRRP协议来实现的LVS服务高可用方案
- VRRP 虚拟路由冗余协议
- 可以解决静态路由出现的单点故障问题
在一个LVS服务集群中通常有主服务器(MASTER) 和备份服务器(BACKUP) 两种角色的服务器,但是对外表现为一个虚拟IP,主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性
二、部署服务
2.1 IP分配
主DR负载调度服务器:192.168.253.11
备DR负载调度服务器:192.168.253.22
web1 服务器:192.168.253.33
web2 服务器:192.168.253.44
VIP :192.168.253.111
客户机:192.168.253.123
2.2 配置主负载调度器
关闭防火墙
systemctl stop firewalld
setenforce 0
软件开启
# 安装
yum -y install keepalived
# 开启
modprobe ip_vs
# 查看
cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
配置文件
# 进入目录
cd /etc/keepalived/
# 备份原配置文件
cp keepalived.conf keepalived.conf.bak
- vim keepalived.conf
# 定义全局参数
3 global_defs {
# 第10行 修改邮件服务指向本地
10 smtp_server 127.0.0.1
# 第12行 修改服务器名称,主备不能一样
12 router_id LVS_01
# 第14行 注释,取消遵守vrrp协议功能,否则VIP无法连接
14 # vrrp_strict
}
# 定义vrrp热备实例参数
19 vrrp_instance VI_1 {
# 第20行 修改热备状态指定,主是master,备是backup
20 state MASTER
# 第21行 修改承载VIP地址的物理接口
21 interface ens33
# 第22行 修改虚拟路由器的IP号,每个热备组保持一致
22 virtual_router_id 10
# 第23行 修改优先级,越大级别越高
23 priority 100
24 advert_int 1 # 通告间隔秒数(心跳频率)
25 authentication { # 定义认证信息,每个热备足保持一致
26 auth_type PASS # 认证类型
# 第27行 修改验证密码,主备需要一致
27 auth_pass 123456
28 }
29 virtual_ipaddress { # 指定群集VIP地址
30 192.168.253.111
}
第36行 修改虚拟服务器地址、端口、定义虚拟服务器和web服务器池参数
36 virtual_server 192.168.253.111 80 {
37 delay_loop 6 # 健康检查的间隔时间(秒)
38 lb_algo rr # 指定调度算法,轮询(rr)
# 第39行 修改群集工作模式轮询(rr)
39 lb_kind DR
40 persistence_timeout 50 # 连接保持时间(秒)
41 protocol TCP # 应用服务采用的TCP协议
# 第43行 修改第一个web节点的地址、端口
43 real_server 192.168.253.33 80 {
44 weight 1 # 节点的权重
# 第45行 删除45-53行,添加以下内容
45 TCP_CHECK {
46 connect_port 80 # 添加检查的目标端口
47 connect_timeout 3 # 添加连接超市(秒)
48 nb_get_retry 3 # 添加重试次数
49 delay_before_retry 3 # 添加重试间隔
50 }
# 复制43-51行,添加在下面
# 添加第二个web节点的地址、端口
52 real_server 192.168.253.44 80 {
53 weight 1
54 TCP_CHECK {
55 connect_port 80
56 connect_timeout 3
57 nb_get_retry 3
58 delay_before_retry 3
59 }
60 }
关闭内核重定向参数响应
vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p
重启
- systemctl restart keepalived.service
2.3 配置备负载调度器
关闭防火墙
systemctl stop firewalld
setenforce 0
软件开启
# 安装
yum -y install ipvsadm
yum -y install keepalived
# 开启
modprobe ip_vs
# 查看
cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
配置文件
-
主负载服务器直接复制文件发送到备用
scp keepalived.conf [email protected]:/etc/keepalived/
vim keepalived.conf
# 更改以下几行
12 router_id LVS_02
20 state BACKUP
23 priority 90
关闭内核重定向参数响应
vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p
重启
- systemctl restart keepalived.service
2.3 web1 设置
# 进入网卡配置目录
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
# 编辑虚拟ip
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.253.111
NETMASK=255.255.255.255
ONBOOT=yes
route add -host 192.168.253.111 dev lo:0
ifup lo:0
ifconfig lo:0
vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl -p
配置网页内容
vim /var/www/html/index.html
内容
- systemctl restart httpd
2.4 web2 设置
# 进入网卡配置目录
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
# 编辑虚拟ip
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.253.111
NETMASK=255.255.255.255
ONBOOT=yes
route add -host 192.168.253.111 dev lo:0
ifup lo:0
ifconfig lo:0
vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl -p
配置网页内容
vim /var/www/html/index.html
内容
- systemctl restart httpd
2.5 测试
切断主服务器
备用顶上