目录
一. Keepalived的概述
1.1 Keepalived的功能
keepalived 主要是用来提供故障切换和健康检查功能-----判断LVS负载调度器,节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入集群。
1.2 Keepalived 的热备方式
keepalivefd 采用VRRP(虚拟路由冗余协议)热备份协议,以软件的方式实现linux服务器的多机热备功能。
注意:使用Keepalived时,漂移IP地址不需要手动建立虚接口配置文件如(ens33:0),而是由Keepalived 根据配置文件自动管理。
二. LVS + Keepalived 高可用集群配置
2.1 LVS + Keepalived 高可用集群的意义
Keepalived 的设计目的是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器,管理服务器池,而不仅仅用作双机热备。使用Keepalived 构建LVS群集更加简便易用,主要优势体现在:对LVS负载均衡调度器实现热备切换,提高可用性;对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。
注意:使用Keepalived 构建LVS集群时,也需要用到ipvsadm管理工具,但大部分工作会由Keepalived 自动完成,不需要手动执行ipvsadm(除了查看和监控集群以外)
2.2 Keepalived + LVS 高可用集群实验规划
主调度器: IP:20.0.0.23 VIP:20.0.0.100
从调度器: IP:20.0.0.24 VIP:20.0.0.100
web节点服务器1:IP:20.0.0.26 lo:0: 20.0.0.100
web节点服务器2:IP: 20.0.0.27 lo:0: 20.0.0.100
存储服务器: IP: 20.0.0.28
2.3 配置主服务器
2.31 调整/proc响应参数
对于DR群集模式来说,由于LVS负载调度器和各节点需要共用VIP地址,应该关闭Linux 内核的重定向参数。
[root@localhost network-scripts]# vi /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost network-scripts]# sysctl -p ###生效
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
2.32 配置Keepalived 配置文件
2.321 全局配置,热备配置
首先应从主,从调度器实现热备功能,漂移地址使用LVS群集的VIP地址。Keepalived的配置文件中,使用“global_defs {…}" 区段来指定全局参数,使用“vrrp_instance 实例名称 {…}” 区段指定VRRP热备参数,注释文字以“!”符号开头
[root@localhost etc]# yum -y install keepalived ipvsadm
[root@localhost keepalived]# vi /etc/keepalived/keepalived.conf
global_defs {
router_id HA_TEST_R1 //主调度器的名称
}
vrrp_instance VI_1 { //定义VRRP热备实例
state MASTER //主调度器的热备状态
interface ens33 //承载VIP接口的物理接口
virtual_router_id 1 //虚拟路由器的ID号,每个热备组保持一致
priority 100 //主调度器的优先级,越大越优先
advert_int 1 //通告间隔秒数(心跳频率)
authentication { //主从热备认证信息
auth_type PASS //认证类型
auth_pass 123456 //密码子串
}
virtual_ipaddress { //指定群集VIP地址
20.0.0.100
}
}
2.322 WEB服务器池配置
在Keepalived 的热备配置基础上,添加“virtual_server VIP 端口 {…} " 区段来配置虚拟服务器,主要包括对负载调度算法,集群工作模式,健康检查间隔,真实服务器地址等参数的设置。
virtual_server 20.0.0.100 80 { //虚拟服务器地址(VIP),端口
delay_loop 15 //健康检查的间隔时间(秒)
lb_algo rr //轮询调度算法(rr)
lb_kind DR //直接路由(DR)群集工作模式
!rsistence 60 //连接保持时间(秒),启用需要去掉!号
protocol TCP //应用服务采用的是TCP协议
real_server 20.0.0.27 80 { //第一个web节点的地址端口
weight 1 //节点的权重
TCP_CHECK { //健康检查的方式
connect_port 80 //检查的目标端口
connect_timeout 3 //连接超时(秒)
nb_get_retry 3 //重试次数
delay_before_retry 4 //充实间隔(秒)
}
}
real_server 20.0.0.26 80 { //第二个web节点服务器的地址,端口
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
}
2.33 启动keepalived服务
[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# systemctl enable keepalived
###查看VIP地址###
[root@localhost etc]# ip addr show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:09:d7:1f brd ff:ff:ff:ff:ff:ff
inet 20.0.0.23/24 brd 20.0.0.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 20.0.0.100/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::d11b:e35b:5200:54ba/64 scope link noprefixroute
valid_lft forever preferred_lft forever
注意:MASTER的主服务器将ens33接口自动添加VIP地址,通过ip命令可以查看(ifconfig命令看不到)
2.4 配置从调度器
2.41 调整/proc响应参数
对于DR群集模式来说,由于LVS负载调度器和各节点需要共用VIP地址,应该关闭Linux 内核的重定向参数。
[root@localhost network-scripts]# vi /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost network-scripts]# sysctl -p ###生效
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
2.42 修改从调度器配置文件
从调度器的配置文件与主调度器的配置文件基本相同,也包括全局配置,热备配置,服务器池配置。只需要调整route_id, state, priority 参数即可,其余内容完全相同。
[root@localhost etc]# yum -y install keepalived ipvsadm
[root@localhost keepalived]# vi /etc/keepalived/keepalived.conf
global_defs {
router_id HA_TEST_R2 //从调度器的名称
}
vrrp_instance VI_1 { //定义VRRP热备实例
state BACKUP //从调度器的热备状态
interface ens33 //承载VIP接口的物理接口
virtual_router_id 1 //虚拟路由器的ID号,每个热备组保持一致
priority 99 //主调度器的优先级,越大越优先
.......... //省略部分信息
}
virtual_server 20.0.0.100 80 {
.....
}
2.43 开启keepalived 服务
[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# systemctl enable keepalived
###查看VIP地址###
[root@localhost ~]# ip addr show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:7c:68:da brd ff:ff:ff:ff:ff:ff
inet 20.0.0.24/24 brd 20.0.0.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::dc5:de30:9e5:aac/64 scope link noprefixroute
valid_lft forever preferred_lft forever
注意:主调度器没有发生故障,在从调度器里是查看不了VIP地址的,当主调度器down掉时可查看漂移地址。
2.5 配置节点服务器 (20.0.0.26)
2.51 配置虚拟IP地址
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vi ifcfg-lo:0
DEVICE=lo:0
IPADDR=20.0.0.100
NETMASK=255.255.255.255
ONBOOT=yes
[root@localhost network-scripts]# ifup lo:0
2.52 调整/proc响应参数
[root@localhost network-scripts]# vi /etc/sysctl.conf
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
[root@localhost network-scripts]# sysctl -p
2.53 为虚拟接口lo:0配置VIP地址
DR模式,除了需要调整/proc系统的ARP相应参数以外,还需要为虚拟接口lo:0配置VIP地址,并添加一条VIP的本地路由。
[root@localhost network-scripts]# vi /etc/rc.local
/sbin/route add -host 20.0.0.100 dev lo:0
[root@localhost network-scripts]# route add -host 20.0.0.100 dev lo:0
2.54 挂载共享存储服务器
网站首页目录与存储服务器进行挂载
[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# showmount -e 192.168.100.44 ####如果还没发布,请到存储服务器发布下
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.44:/opt/51xit /var/www/html/
[root@localhost ~]# vi /etc/fstab
192.168.100.44:/opt/51xit/ /var/www/html/ nfs defaults,_netdev 0 0
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# systemctl start rpcbind nfs
[root@localhost ~]# systemctl enable rpcbind nfs
2.6 配置节点服务器 (20.0.0.27)
20.0.0.27节点服务器的配置与20.0.0.26节点服务器的配置几乎完全一致,参考节点服务器20.0.0.26进行配置,这里不作叙述。
2.7 配置存储服务器
[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# yum -y install rpcbind
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# vi /etc/exports
/opt/51xit 192.168.100.0/24 (rw,sync)
/opt/52xit 192.168.100.0/24 (rw,sync)
[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# mkdir /opt/51xit /opt/52xit
[root@localhost ~]# echo "this is 51xit" >/opt/51xit/index.html
[root@localhost ~]# echo "this is 52xit" >/opt/52xit/index.html