本文重点在于keepalived的实现原理,后面的Keepalived加LVS实现高可用的搭建实验能更加深刻的理解Keepalived的工作流程,如有遗漏之处,欢迎指正批评,谢谢。
详细介绍与搭建见集群化知识整理与LVS - DR 模式集群搭建实验。
实验目的:掌握搭建LVS - DR + Keepalived搭建流程
实验准备:4台C6标准虚拟机(selinux已关)
实验规划:
服务器角色 | 简称 | IP地址 |
---|---|---|
负载均衡调度器1 | D1 | 192.168.10.10 |
负载均衡调度器2 | D2 | 192.168.10.11 |
真实服务器1 | RS1 | 192.168.10.12 |
真实服务器2 | RS2 | 192.168.10.13 |
实验拓扑图
关闭网卡守护服务,此服务会与 network服务冲突。
service NetworkManager stop
chkconfig NetworkManager off
配置回环子接口
cd /etc/sysconfig/network-scripts/
cp -a ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
修改网卡名称、IP地址、子网掩码。
DEVICE=lo:0
IPADDR=192.168.10.100
NETMASK=255.255.255.255
保存网卡信息,修改内核参数,声明arp行为。
vim /etc/sysctl.conf
#LVS_DR lo ARP
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
保存退出,刷新内核参数,启动回环网卡。
sysctl -p
ifup ifcfg-lo:0
添加路由规则,并使其开机自启。
route add -host 192.168.10.100 dev lo:0
route -n
echo "/sbin/route add -host 192.168.10.100 dev lo:0" >> /etc/rc.local
配置wed服务器,填写内容至网页文件并启动httpd服务。
yum install -y httpd
echo "123" >> /var/www/html/index.html
service httpd restart
curl localhost
真实服务器配置如上,不同真实服务器最好配置不同网页内容方便区分。
关闭网卡守护服务,此服务会与 network服务冲突。
service NetworkManager stop
chkconfig NetworkManager off
配置负载集群访问IP(漂移IP)
cd /etc/sysconfig/network-scripts/
cp -a ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
修改网卡名称与IP地址,删除uuid与mac地址。
启动该网卡
ifup eth0:0
ip a
修改内核参数,关闭网卡重定向功能,刷新内核参数。
vim /etc/sysctl.conf
#LVS_DR
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
sysctl -p
加载LVS模块,下载命令行管理工具。
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm
添加调度规则,保存调度规则。
ipvsadm -A -t 192.168.10.100:80 -s rr
ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.12:80 -g
ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.13:80 -g
service ipvsadm save
chkconfig ipvsadm on
ipvsadm -Ln --stats
浏览器开启无痕模式进行访问测试
点击刷新
返回调度器查看出站入站数据包
ipvsadm -Ln --stats
负载均衡调度器搭建完毕。
在配置好的负载调度器上挂载镜像文件,将软件包移至指定位置。
cd
mkdir /mnt/iso
mount -o loop Keepalived.iso /mnt/iso/
cp -a /mnt/iso/* .
负载调度器1编译安装keepalived,负载调度器1将keepalived软件包传输至负载调度器2。
yum -y install kernel-devel openssl-devel popt-devel gcc*
tar -xf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-642.el6.x86_64/
make && make install
#将软件包传输至负载调度器2
cd
scp -r keepalived-1.2.2.tar.gz [email protected]:/root
编辑keepalived主配置文件
vim /etc/keepalived/keepalived.conf
编辑global_defs区域,只保留以下信息,该信息为主机名。
global_defs {
router_id R1 #同一主从环境下主机名不能相同
}
编辑vrrp_instance VI_1区域
vrrp_instance VI_1 {
state MASTER #设置节点状态
interface eth0:0 #指定心跳监测网卡
virtual_router_id 10 #设置组号
priority 150 #优先值(权重)
advert_int 1 #监测心跳间隔时间
authentication {
auth_type PASS #密码加密方案
auth_pass 1111 #设定密码
}
virtual_ipaddress {
192.168.10.100 #指定集群IP
}
}
编辑virtual_server区域,只保留以下区域信息。
virtual_server 192.168.10.100 80 {
delay_loop 1 # 健康检查间隔,检测后台真实服务器
lb_algo rr # 使用轮询调度算法
lb_kind DR # 指定群集模式
protocol TCP # 指定使用协议
real_server 192.168.10.12 80 {
# 真实服务器区域
weight 1 # 权重
TCP_CHECK {
# TCP监测区域
connect_port 80 # 监听端口
connect_timeout 3 # 监测时间间隔
nb_get_retry 3 # 重启次数
delay_before_retry 4 # 重启延时
}
}
real_server 192.168.10.13 80 {
# 真实服务器区域
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
}
}
}
启动keepalived服务,查看
/etc/init.d/keepalived start
ip addr show
关闭网卡守护服务,此服务会与 network服务冲突。
service NetworkManager stop
chkconfig NetworkManager off
负载调度器2也编译安装keepalived
yum -y install kernel-devel openssl-devel popt-devel gcc*
tar -xf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-642.el6.x86_64/
make && make install
配置网卡
cd /etc/sysconfig/network-scripts/
cp -a ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
修改网卡名称与IP地址,删除uuid与mac地址。
修改内核参数,关闭网卡重定向功能,刷新内核参数。
vim /etc/sysctl.conf
#LVS_DR
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
sysctl -p
启动网卡前,修改网卡启动脚本,否则网卡将无法正常启动。
vim /etc/sysconfig/network-scripts/ifup-eth
将247-251行注释
保存退出,启动网卡并查看状态。
ifup eth0:0
ifconfig
下载命令行管理工具
yum -y install ipvsadm
从负载调度器1处拉取keepalived配置至指定目录,编辑主配置文件。
scp [email protected]:/etc/keepalived/keepalived.conf /etc/keepalived/
vim /etc/keepalived/keepalived.conf
修改下图指定区域即可
保存退出,启动keepalived,查看当前调度规则。
/etc/init.d/keepalived start
ipvsadm -Ln --stats
keepalived配置完毕,准备测试实验。
将负载调度器1的网卡停止,模拟故障。
浏览器开启无痕模式进行访问。
负载调度器2查看出站入站数据
ipvsadm -Ln --stats
负载调度器1宕机后,负载调度器2成功接替。
重新启动负载调度器1,浏览器刷新访问。再次查看负载调度器2出站入站数据。
无增长,负载调度器1查看出站入站数据。
负载调度器1再次接替。
任意一台停止apache服务
service httpd stop
返回负载调度器1查看
ipvsadm -Ln --stats
自动将真实服务器1踢出集群,再次启动真实服务器1。
service httpd start
启动后又将真实服务器1加入集群,LVS - DR模式+Keepalived实现高可用实验成功。
本文于2020年11月15日由Vonmerlot整理成文。