1、Keepalived双击热备基础知识。
Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(Health Checking)功能——判断LVS放在调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集。
2、Keepalived的热备方式。
Keepalived采用VRRP(虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的多级热备功能。VRRP是针对路由器的一种备份解决方案——由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有一台主机路由器提供服务,其他路由器处于冗余状态,若当前在线的路由器失效,则其他路由器会自动接替(优先级决定接替顺序)虚拟机IP地址,以继续提供服务。
热备组内的每台路由器都可能成为主路由器,虚拟路由器的IP地址(VIP)可以在热备组内的路由器之间进行转移,所以也称为漂移IP地址。使用Keepalived是,漂移地址的实现不需要手动建立虚接口配置文件,而是由Keepalived根据配置文件自动管理。
3、Keepalived的安装与服务控制。
1)安装Keepalived
[root@nodeAAA ~]# yum -y install ipvsadm keepalived
2)控制Keepalived服务,设置为开机自启动。
[root@nodeAAA ~]# systemctl enable keepalived --now
4、使用Keepalived实现双机热备。
组件包:LVS、keepslived、httpd
设备 | IP | 备注 |
Centos01 | 192.168.136.21 | Node1 |
Centos02 | 192.168.136.22 | Node2 |
Centos03 | 192.168.136.23 | Web1 |
Centos04 | 192.168.136.24 | Wb2 |
4.1、主服务器的配置
##关闭防火墙
[root@nodeAAA ~]# systemctl disable firewalld --now
##备份原始配置文件
[root@nodeAAA ~]# cd /etc/keepalived/
[root@nodeAAA keepalived]# cp keepalived.conf keepalived.conf.bak
[root@nodeAAA keepalived]# vim keepalived.conf
global_defs {
router_id R1 //本路由器(服务器)的名称
}vrrp_instance VI_1 { //热备实例
state MASTER //热备状态,MASTER表示主服务器
interface ens33 //VIP地址的物理接口
virtual_router_id 51
priority 100 //优先级
advert_int 1 //通告间隔秒数(心跳频率)
authentication { //认证信息
auth_type PASS //认证类型
auth_pass 1111 //密码
}
virtual_ipaddress { //指定漂移地址(VIP),可以有多个
192.168.136.200
}
}
[root@nodeAAA ~]# systemctl start keepalived
[root@nodeAAA ~]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:cd:28:07 brd ff:ff:ff:ff:ff:ff
inet 192.168.136.21/24 brd 192.168.136.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.136.200/32 scope global ens33 //自动设置的VIP地址
valid_lft forever preferred_lft forever
inet6 fe80::f4fb:4b5e:5c25:24d8/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4.2、备用服务器的配置
##关闭防火墙
[root@nodeAAA ~]# systemctl disable firewalld --now
##备份原始配置文件
[root@nodeAAA ~]# cd /etc/keepalived/
[root@nodeAAA keepalived]# cp keepalived.conf keepalived.conf.bak
[root@nodeAAA keepalived]# vim keepalived.conf
global_defs {
router_id R2 //本路由器(服务器)的名称
}vrrp_instance VI_1 { //热备实例
state BACKUP //热备状态,MASTER表示主服务器
interface ens33 //VIP地址的物理接口
virtual_router_id 51
priority 90 //优先级
advert_int 1 //通告间隔秒数(心跳频率)
authentication { //认证信息
auth_type PASS //认证类型
auth_pass 1111 //密码
}
virtual_ipaddress { //指定漂移地址(VIP),可以有多个
192.168.136.200
}
}
##主服务器控制,其他服务器处于备用状态,因此在备用服务器中将不会为ens33接口添加VIP地址
[root@nodeAAA ~]# systemctl start keepalived
[root@nodeAAA ~]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:f1:60:85 brd ff:ff:ff:ff:ff:ff
inet 192.168.136.22/24 brd 192.168.136.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::f4fb:4b5e:5c25:24d8/64 scope link tentative noprefixroute dadfailed
valid_lft forever preferred_lft forever
inet6 fe80::390e:3c7f:5ca9:63ee/64 scope link noprefixroute
valid_lft forever preferred_lft forever
5、LVS+Keepalived高可用群集。
5.1、配置主调度器
##Web服务器池配置
[root@nodeAAA ~]# vim /etc/keepalived/keepalived.conf
····· //省略信息virtual_server 192.168.136.200 80 { //虚拟服务器地址(VIP)、端口
delay_loop 15 //健康检查的间隔时间(秒)
lb_algo rr //轮询(rr)调度算法
lb_kind DR //直接路由(DR)群集工作模式
! persistence 60 //连接保持时间(秒),若启用请去掉!号
protocol TCP //应用服务采用的是TCP协议real_server 192.168.136.24 80 {
weight 1 //节点的权重
CHECK { //健康检查方式
connect_port 80 //检查的目标端口
connect_timeout 3 //连接超时(秒)
nb_get_retry 3 //重试次数
delay_before_retry 4 //重试间隔(秒)
}
}real_server 192.168.136.23 80 {
weight 1
CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
}
##重新启动Keepalived服务
[root@nodeAAA ~]# systemctl restart keepalived.service
5.2、配置从调度器
从调度器的配置与主调度器基本相同,也包括全局配置、热备配置、服务器池配置,配置完成后重启Keepalived服务。
6、LVS调度器配置(主、备都要配置)。
[root@nodeAAA ~]# ipvsadm > /etc/sysconfig/ipvsadm
[root@nodeAAA ~]# ipvsadm -A -t 192.168.136.200:80 -s rr
[root@nodeAAA ~]# ipvsadm -a -t 192.168.136.200:80 -r 192.168.136.23:80 -g -w 1
[root@nodeAAA ~]# ipvsadm -a -t 192.168.136.200:80 -r 192.168.136.24:80 -g -w 1
[root@nodeAAA ~]# systemctl restart ipvsadm
[root@nodeAAA ~]# ipvsadm -ln
7、Web节点配置。
##配置在Web1
[root@WEBAAA ~]# yum -y install httpd
[root@WEBAAA ~]# echo "<h1>WEB.AAAA</h1>" > /var/www/html/index.html[root@WEBAAA ~]# systemctl enable httpd --now
##配置在Web2
[root@WEBAAA ~]# yum -y install httpd
[root@WEBBBB ~]# echo "<h1>WEB.BBBB</h1>" > /var/www/html/index.html
[root@WEBAAA ~]# systemctl enable httpd --now
##两台Web服务器都要配置
[root@WEBAAA ~]# cd /etc/sysconfig/network-scripts/
[root@WEBAAA network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@WEBAAA network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.136.200
NETMASK=255.255.255.255
ONBOOT=yes
NAME=lo:0
[root@WEBAAA network-scripts]# systemctl restart network
8、实验结果。
使用浏览器访问http://192.168.136.200测试LVS+Keepalived高可用群集
刷新网页,可以看到已经切换成Web2网页了