LVS+Keepalived高可用群集
目录
第一部分 环境准备
第二部分 使用Keepalived搭建双机热备
第三部分 配置Web节点服务器
第四部分 测试LVS+Keepalived高可用群集
第一部分 环境准备
一:调度器两台(双机热备)
系统:Linux—CentOS 7.5
IP地址:192.168.74.11(主)
IP地址:192.168.74.12(备)
二:Web服务器两台
系统:Linux—CentOS 7.5
IP地址:192.168.74.13(web1)
IP地址:192.168.74.14(web2)
三:客户端电脑一台:以win10为例,测试用
IP地址:192.168.74.1
第二部分 使用Keepalived搭建双机热备
第一步:配置主调度器
[root@dr1 ~]# modprobe ip_vs #加载ip_vs模块
[root@dr1 ~]# yum install -y ipvs #安装ipvsadm
[root@dr1 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel #安装编译工具与依赖包
[root@dr1 ~]# tar xzvf keepalived-1.4.2.tar.gz #解压keepalived安装包
[root@dr1 ~]# cd keepalived-1.4.2/
[root@dr1 keepalived-1.4.2]# ./configure --prefix=/keepalived-1.4.2 #配置
[root@dr1 keepalived-1.4.2]# make && make install #编译与安装
[root@dr1 keepalived-1.4.2]# cp keepalived/etc/init.d/keepalived /etc/init.d/ #加入系统管理服务
[root@dr1 keepalived-1.4.2]# systemctl enable keepalived #设置开机自启动
[root@dr1 keepalived-1.4.2]# vi /etc/keepalived/keepalived.conf #编辑配置文件
! Configuration File for keepalived
global_defs {
router_id LVS_01
}
vrrp_instance VI_1 {
state MASTER #状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态,BACKUP是备用状态。
interface ens33
virtual_router_id 51 #虚拟路由标识,同一个vrrp_instance的MASTER和BACKUP的
vitrual_router_id 是一致的。
priority 150 #优先级,同一个vrrp_instance的MASTER优先级必须比BACKUP高。
advert_int 1 #MASTER 与BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒。
authentication {
auth_type PASS #验证authentication。包含验证类型和验证密码。类型主要有PASS、AH 两种。
auth_pass 6666 #同一vrrp 实例MASTER 与BACKUP 使用相同的密码才能正常通信。
}
virtual_ipaddress { #虚拟ip地址,这个ip 必须与我们在lvs 客户端设定的vip 相一致!
192.168.74.100
}
}
virtual_server 192.168.74.100 80 { #虚拟IP,来源与上面的虚拟IP地址,后面加空格加端口号
delay_loop 6 #健康检查间隔,单位为秒
lb_algo rr #负载均衡调度算法,一般用wrr、rr、wlc
lb_kind DR #负载均衡转发规则。一般包括DR,NAT,TUN 3种。
persistence_timeout 60 #会话保持时间
protocol TCP #转发协议,有TCP和UDP两种,一般用TCP。
real_server 192.168.74.13 80 { #真实服务器,包括IP和端口号
weight 1 #权重,数值越大,权重越高
TCP_CHECK { #通过tcpcheck判断RealServer的健康状态
connect_port 80 #检测端口
connect_timeout 3 #连接超时时间
nb_get_retry 3 #重连次数
delay_before_retry 3 #重连时间间隔
}
}
real_server 192.168.74.14 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
其实配置文件中主要要修改的选项没有很多,有三个参数要注意
route_id XXX #MASTER和BACKUP不同
virtual_router_id 51 #同一个实例下,MASTER和BACKUP相同
priority 100 #优先级,同一个实例下,MASTER高于BACKUP
[root@dr1 ~]# service keepalived start
[root@dr1 ~]# ip addr show dev ens33 #验证绑定了的虚拟地址
[root@dr1 ~]# ipvsadm –L #查看LVS虚拟服务器
[root@dr1 ~]# tail -f /var/log/messages
第二步:配置从调度器
[root@dr2 ~]# modprobe ip_vs #加载ip_vs模块
[root@dr2 ~]# yum install -y ipvs #安装ipvsadm
[root@dr2 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel #安装编译工具与依赖包
[root@dr2 ~]# tar xzvf keepalived-1.4.2.tar.gz #解压keepalived安装包
[root@dr2 ~]# cd keepalived-1.4.2/
[root@dr2 keepalived-1.4.2]# ./configure --prefix=/keepalived-1.4.2 #配置
[root@dr2 keepalived-1.4.2]# make && make install #编译与安装
[root@dr2 keepalived-1.4.2]# cp keepalived/etc/init.d/keepalived /etc/init.d/ #加入系统管理服务
[root@dr2 keepalived-1.4.2]# systemctl enable keepalived #设置开机自启动
[root@dr2 keepalived-1.4.2]# vi /etc/keepalived/keepalived.conf #编辑配置文件
! Configuration File for keepalived
global_defs {
router_id LVS_02
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 105
advert_int 1
authentication {
auth_type PASS
auth_pass 6666
}
virtual_ipaddress {
192.168.74.100
}
}
virtual_server 192.168.74.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.74.13 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.74.14 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
[root@dr2 ~]# service keepalived start
[root@dr2 ~]# ipvsadm –L
第三步:验证结果
1.dr1主服务器keepalived服务开启状态
[root@dr1 ~]# service keepalived status
2.验证dd02从服务器状态
[root@dr2 ~]# ip addr show dev ens33
[root@dr2 ~]# tail -f /var/log/messages
3.模拟主服务器故障,将dr1主服务器keepalived服务关闭,验证dr2从服务器状态
[root@dr1 ~]# systemctl stop keepalived
[root@dr2 ~]# tail -f /var/log/messages
#备机自动切换成主机状态
[root@dr2 ~]# ip addr show dev ens33
#双机热备搭建完成
第三部分 配置Web节点服务器
第一步:配置web1服务器(192.168.74.13)
1.配置nginx服务
nginx安装部分省略,2台都一样
配置DR模式,2台都一样
#!/bin/bash
SNS_VIP=192.168.74.100
/etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_VIP dev lo:0
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
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
2.验证两台Web服务器轮询工作
Win10访问http://192.168.74.100
#由于设置了连接保持时间为60秒,一分钟后再重新访问该地址
#自动轮询交给另一台Web服务器
3.模拟主调度器故障,验证结果
[root@dr1 ~]# systemctl stop keepalived
[root@dr2 ~]# tail -f /var/log/messages
#自动切换成master,继续工作
#win10访问http://192.168.74.100
#一分钟后,继续访问 http://192.168.74.100
模拟Web1服务器故障,验证结果
[root@dr2 ~]# tail -f /var/log/messages
访问web1服务器http://192.168.74.13
结果显示无法访问
访问//http://192.168.74.100
一分钟后,继续访问//http://192.168.74.100
#无法访问web1服务器,验证成功
#启动web1服务器
[root@web1 ~]# service nginx start
#查看调度器日志
#已成功将web1服务器加入到服务器池
#LVS+Keepalived已成功搭建并测试完成