keepalived概念
keepalived是一个开源的虚拟路由冗余协议(VRRP)实现,它能够提供高可用性(HA)的解决方案。VRRP是一种网络协议,用于在多个路由器之间分配路由任务,以保证网络的可靠性。在服务器高可用性环境中,keepalived常用于实现负载均衡和故障切换。
一 双机技术
指由两台服务器运行某种同样的应用,为用户提供服务,当某一台出现问题时,用户的请求将由另一台服务器继续提供,从而实现高可用性。双机技术又被称为双机热备或双机容错
二 HA 的容错过程
1.自动检测
2.自动切换
3.自动恢复
三 HA 的三种工作方式
1.主从模式
2.双机双工
3.集群模式
四 keepalived
1.keepalived 基于 vrrp 协议来实现的
注:vrrp 协议,可以实现服务的切换
2.keepalived 启动后会有三个进程:
父进程: 内存管理,子进程管理等等
子进程: VRRP 子进程
子进程: healthchecker 子进程
注:healthchecker 子进程负责检查各主机间的主机状态,当发现某台主机上的服务不可用时,将通知 vrrp 子进程,由 vrrp 子进程来完成服务的切换
五 实验步骤
1.准备实验环境:client(192.168.1.3)与两台 apache 服务器处于同一网络段,两台 web服务器的 IP 地址为 192.168.1.1 和 192.168.1.2。在两台 web 服务器上创建好主页文件,配置httpd,使客户端能够访问。
2.在 server1 和 server2 上配置好/etc/hosts 文件,并安装 keepalived
#yum install keepalived -y
3.在 server1 上配置
编辑配置文件:vim /etc/keepalived/keepalived.conf
内容如下:
global_defs {
notification_email {
root@localhost
}
notification_email_from root@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id host-4
}
vrrp_instance VI_1 {
state MASTER(设备状态)
interface eno16777736(链接备服务器的网卡)
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.18(同一网段任意设置,此为VIP的IP)
}
}
在 server2 上配置
scp root@server1:/etc/keepalived/keepalived.conf
更改设备 ID:host-5
更改设备状态:BACKUP
更改优先级:低于 MASTER 的优先级
4.在两台 keepalved/web 服务器上启动服务
systemctl restart keepalived
5.在客户端测试
elinks http://VIP(此为之前配置文件中设置的VIP的IP)
显示的 server1 上的 test1 page。使 server1 宕机,再次访问 VIP,显示的是 server2 上的 test2 page。或者在 server1 上 systemctl stop keepalived,访问 VIP,显示的是 server2 上的 test page
注:如果是停掉 keepalived 服务,再次启动时,注意 IP 的子网掩码(可以通过 nmtui 中重新激活网卡解决)VIP 可以是一个不存在 IP 地址,但是该 IP 地址必须客户端可以访问
六 keepalived+lvs
1.网络拓扑
五台虚拟机在同一网络段
--->lvs1(192.168.0.1)-->web1(192.168.0.2)
client(192.168.0.5)
--->lvs2(192.168.0.3)-->web2(192.168.0.4)
2.安装软件
client:yum install elinks -y
lk1、lk2:yum install keepalived ipvsadm -y
web1、web2:yum install httpd -y
3.在 lvs1、lvs2 上
编辑 keepalived 配置文件:
#vim /etc/keepalived/keepalived.conf
Lvs1
Lvs2
编辑 lvs-dr.sh 脚本:
#!/bin/bash
ipvsadm -C
ipvsadm -A -t 192.168.0.88:80 -s rr
ipvsadm -a -t 192.168.0.88:80 -r 192.168.0.2:80 -g
ipvsadm -a -t 192.168.0.88:80 -r 192.168.0.4:80 -g
注:两种配置文件都可以。
4.在 web1、web2 上
配置 httpd
编辑 web.sh 脚本:
#!/bin/bash
ifconfig lo:0 192.168.0.88 netmask 255.255.255.255 up
route add -host 192.168.0.88 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
5.在 lk1、lk2 上:systemctl restart keepalived
bash lvs-dr.sh
在 web1、web2 上:systemctl restart httpd
bash web.sh
6.客户端测试:elinks http://192.168.0.254 可以看到 web1 和 web2 上的网页交替出现
将其中一台lvs关机。再用客户端测试还是可以看到web1和web2上的网页交替出现。