keepalived+LVS高可用性集群部署
keepalived+LVS高可用性集群部署小记
keepalived+LVS实现高可用集群部署小记
·尽可能提高服务的可用性
·实现原理:心跳检测
一、keepalived+LVS-DR实现高可用负载均衡
点击底部的阅读原文可体验智能聊天机器人,写文案,制定学习计划~等你来体验。
★当LVS负载均衡的主服务器出现故障时,keepalived会及时切换到备份服务器;同时会检测后端真实服务器是否存在故障无法访问,keepalived检测到该设备不可用时就会在集群的列表中删除该服务器节点,当服务器恢复时会再次自动添加进来。以此来实现集群的高可用性。
”
1)部署DR模式的负载均衡集群
★禁用网卡发送重定向
”
#0 表示禁用发送重定向,禁用发送重定向可以防止网络攻击,如 ARP 欺骗和 IP 欺骗
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0 #所有网卡的
net.ipv4.conf.default.send_redirects = 0 #默认网卡的
net.ipv4.conf.ens33.send_redirects = 0 #ens33网卡的(根据需要修改为真实网卡即可)
#添加完毕后,刷新内核参数使其生效
sysctl -p #刷新内核参数
2)配置web服务器
★修改内核文件,控制arp行为
”
#配置内核文件,控制arp行为
arp-ignore
# 0 只要本机配置有相应IP地址就响应;
# 1 仅在请求的目标地址配置在请求到达网络接口上时,才给予响应;
arp-announce
# 0 将本机任何网络接口上的任何地址都向外通告;
# 1 尽可能避免向目标网络通告与其网络不匹配的地址信息表;
# 2 仅向目标网络通告与其网络相匹配的地址信息。
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
3)添加路由
route add -host 10.10.10.100 dev lo:0 #DR模式下,后端的真实服务器必须添加此路由,否则无法与客户端通信
4)配置keepalived
下载keepalived源码包
https://www.keepalived.org/software/keepalived-2.0.18.tar.gz
解压文件:
tar -zxvf [下载的包名]
#安装相关依赖
yum install -y kernel-devel openssl-devel popt-devel gcc*
5)编译安装
★编译安装后,在/etc/创建keepalived目录,将keepalived.conf配置文件复制一份过来否则无法启动
”
#在解压后的目录中执行编译安装
./configure --prefix=/
make && make install
检查/etc/init.d/目录下是否存在 keepalived 文件,如果不存在则在源码的init.d文件夹中拷贝一份启动脚本到/etc/init.d/目录下
cp /root/keepalived-2.0.18/keepalived/etc/init.d /etc/init.d/
#拷贝完成后设置为开机自启
chkconfig --add keepalived #添加为系统服务
chkconfig keepalived on #设置为开机自启
· 采用挂载镜像文件使用yum的方式直接安装keepalived
#安装依赖
yum install -y kernel-devel openssl-devel popt-devel gcc*
#安装keepalived
yum install keepalived -y
6)修改keepalived配置文件
vim /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_MASTER #设置自定义名称
}
vrrp_instance VI_1 {
state MASTER #设置状态主或备,根据实际情况修改
interface eth0 #指定网卡做心跳检测
virtual_router_id 51 #配置虚拟组,主备lvs服务器必须在同一个组里否则不生效
priority 100 #优先级配置。主与从之间差距最好在50,最大设置为150
advert_int 1 #心跳检测间隔为1s
authentication { #配置主备之间的认证
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.10.10.100
#此处填写集群IP地址
}
}
#配置集群的IP端口,算法与部署模式
virtual_server 10.10.10.100 80 {
delay_loop 6 #检测循环的次数以及时间
lb_algo rr #设置当前集群使用的算法
lb_kind DR #设置当前集群的模式
persistence_timeout 50 # 同一IP的连接50秒内被分配到同一台realserver
protocol TCP #设置检测使用的协议为TCP
#配置真实服务器的相关IP和端口信息,有几个真实服务器就填写几个real_server
real_server 10.10.10.12 80 {
weight 1 #权重,最大越高,lvs就越优先访问
TCP_CHECK { #keepalived默认的健康检查方式为HTTP_GET,其他健康检测方式分别是:SSL_GET | TCP_CHECK | SMTP_CHECK | MISC
connect_timeout 3 #健康监测超时时间
retry 3 #重连次数3次
delay_before_retry 3 #重连间隔时间
connect_port 80 #健康检查realserver的端口
}
}
· 修改完配置文件后重启keeplived使其生效
service keeplived start
7)配置backup备份
★网卡配置部分略,跟主服务器同网段IP即可,虚拟IP主备必须保持一致。在同一局域网配置相同ip后启动网卡时会报错,这是因为网卡启动时会通过发送ARP请求检测目标IP地址是否与其他主机发生了冲突,所以这里需要手动关闭backup服务器网卡的arp检测功能。
”
vim /etc/sysconfig/network-scripts/ifup-eth
#由于不同系统版本文件存放位置不一致,此路径为centos7下的配置文件存放位置。其他系统需重新找到ifup-eth文件的正确位置
#在配置文件中注释掉arp命令检测的相关判断,在配置文件的275行左右注释后即可重启网卡成功
if [ $? = 1 ]; then
ARPINGMAC=$(echo $ARPING | sed -ne 's/.*\[\(.*\)\].*/\1/p')
net_log $"Error, some other host ($ARPINGMAC) already uses address ${ipaddr[$idx]}."
exit 1
fi
★安装keepalived步骤不再赘述,与master安装步骤一致。
”
★修改配置文件,将状态设置为backup
”
! Configuration File for keepalived
global_defs {
router_id LVS2 #修改备份服务器的名称,不能与主服务器名称重复
}
vrrp_instance VI_1 {
state BACKUP #状态设置为backup或者SLAVE
interface ens33
virtual_router_id 51
priority 50 #修改优先级
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.10.10.100
}
}
virtual_server 10.10.10.100 80 {
delay_loop 3
lb_algo rr
lb_kind DR
#persistence_timeout 50
protocol TCP
real_server 10.10.10.12 80 {
weight 1
TCP_CHECK{
connect_port 80
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 10.10.10.13 80 {
weight 1
TCP_CHECK{
connect_timeout 3
connect_port 80
retry 3
delay_before_retry 3
}
}
}
8)故障切换测试
(1)模拟lvs负载均衡服务器故障:
(2)模拟真实服务器宕机与恢复:
至此,实验结束!