文章目录
- 1、实验规划
- 2、配置环境
- 3、Keepalived软件安装
- 4、部署Keepalived服务
- Keeplived概述
- Keeplived实现了高可用集群
- Keeplived最初是为了LVS设计的
- 专门监控各服务器节点的状态
- Keeplived后来加入了VRRP的功能,防止单点故障
- Keeplived运行原理
- Keeplived检测每个服务器的节点状态
- 服务器节点异常或工作出现故障,Keeplived将故障节点从集群中剔除
- 故障节点恢复后,Keeplived再将其加入到集群系统中
- 所有工作自动完成,无需人工干预
1、实验规划
- 准备三台Linux服务器,两台做Web服务器,并部署Keepalived高可用软件,一台作为客户端主机,实现如下功能:
- 使用Keepalived实现web服务器的高可用
- Web服务器IP地址分别为192.168.4.100和192.168.4.200
- Web服务器的浮动VIP地址为192.168.4.80
- 客户端通过访问VIP地址访问Web页面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1axt6wD4-1598753738438)(https:#img-blog.csdnimg.cn/202007271723085.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDEzNjQ0Ng==,size_16,color_FFFFFF,t_70)]
主机名 | 网络配置 |
proxy | eth0:192.168.4.5 |
web1 | eth0:192.168.4.100 VIP:192.168.4.80(keepalive会自动配置) |
web2 | eth0:192.168.4.200 VIP:192.168.4.80(keepalive会自动配置) |
2、配置环境
- 设置Web1服务器网络参数、配置Web服务(不能照抄网卡名称)
[root@web1 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.100/24 connection.autoconnect yes
[root@web1 ~]# nmcli connection up eth0
[root@web1 ~]# yum -y install httpd #安装软件
[root@web1 ~]# echo "192.168.4.100,我是web1" > /var/www/html/index.html #创建网页文件
[root@web1 ~]# systemctl restart httpd #启动服务器
[root@web1 ~]# systemctl enable httpd
- 设置Web2服务器网络参数、配置Web服务(不能照抄网卡名称)
[root@web2 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.200/24 connection.autoconnect yes
[root@web2 ~]# nmcli connection up eth0
[root@web2 ~]# yum -y install httpd #安装软件
[root@web2 ~]# echo "192.168.4.200,我是web2" > /var/www/html/index.html #创建网页文件
[root@web2 ~]# systemctl restart httpd #启动服务器
[root@web1 ~]# systemctl enable httpd
- 配置proxy主机的网络参数(如果已经设置,可以忽略此步骤)
[root@proxy ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.5/24 connection.autoconnect yes
[root@proxy ~]# nmcli connection up eth0
3、Keepalived软件安装
两台Web服务器做相同的操作
[root@web1 ~]# yum install -y keepalived
[root@web2 ~]# yum install -y keepalived
4、部署Keepalived服务
- 防火墙和SELinux
[root@web1 ~]# firewall-cmd --set-default-zone=trusted
[root@web1 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
[root@web1 ~]# setenforce 0
[root@web2 ~]# firewall-cmd --set-default-zone=trusted
[root@web2 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
[root@web2 ~]# setenforce 0
- 修改web1服务器Keepalived配置文件
[root@web1 ~]# vim /etc/keepalived/keepalived.conf
````````````````省略部分内容
global_defs {
````````````````省略部分内容
router_id web1 #12行,设置路由ID号(实验需要修改)
vrrp_iptables #13行,清除防火墙的拦截规则(实验需要修改,手动添加该行)
````````````````省略部分内容
}
vrrp_instance VI_1 {
state MASTER #21行,主服务器为MASTER(备服务器需要修改为BACKUP)
interface eth0 #22行,VIP配在哪个网卡(实验需要修改,不能照抄网卡名)
virtual_router_id 51 #23行,主备服务器VRID号必须一致
priority 100 #24行,服务器优先级,优先级高优先获取VIP
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #30~32行,谁是主服务器谁获得该VIP(实验需要修改)
192.168.4.80
}
}
````````````````剩下的全部删除
- 修改web2服务器Keepalived配置文件
[root@web2 ~]# vim /etc/keepalived/keepalived.conf
````````````````省略部分内容
global_defs {
````````````````省略部分内容
router_id web2 #12行,设置路由ID号(实验需要修改)
vrrp_iptables #13行,清除防火墙的拦截规则(实验需要修改,手动添加该行)
````````````````省略部分内容
}
vrrp_instance VI_1 {
state BACKUP #21行,主服务器为MASTER(备服务器需要修改为BACKUP)
interface eth0 #22行,VIP配在哪个网卡(实验需要修改,不能照抄网卡名)
virtual_router_id 51 #23行,主备服务器VRID号必须一致
priority 50 #24行,服务器优先级,优先级高优先获取VIP
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #30~32行,谁是主服务器谁获得该VIP(实验需要修改)
192.168.4.80
}
}
````````````````剩下的全部删除
- 启动服务
[root@web1 ~]# systemctl start keepalived
[root@web1 ~]# systemctl enable keepalived.service
[root@web2 ~]# systemctl start keepalived
[root@web2 ~]# systemctl enable keepalived.service
- 测试
[root@web1 ~]# ip addr show
#可以看到web1的本地新增了一个192.168.4.80的ip地址
#此时将web1关机
[root@web2 ~]# ip addr show
#可以看到192.168.4.80的ip地址出现在了web2中
#此时将web1启动,可以看到192.168.4.80 这个地址又回到了优先级更高的web1服务器上
[root@proxy ~]# curl 192.168.4.80