目录
前提准备:
- 准备4台centos,其中两台为keepalived,两台为web
- keepalived1:192.168.180.62,gw(网关):192.168.180.250,安装keepalived+ipvsadm
- keepalived2:192.168.180.110,gw(网关):192.168.180.250, 安装keepalived+ipvsadm
- web1:192.168.180.120,gw(网关):192.168.180.250,安装httpd
- web2:192.168.180.130,gw(网关):192.168.180.250,安装httpd
- 有gw(网关)标识的,需要去修改网关
- 关闭所有防火墙
- 可以使用本地yum源本地yum源
https://blog.csdn.net/m0_68472908/article/details/143857709?spm=1001.2014.3001.5501
keepalived1 :
- 安装软件
bash
yum install -y keepalived ipvsadm

- 关闭防火墙
bash
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
- 配置主服务器
bash
vim /etc/keepalived/keepalived.conf




- 开启keepalived
bash
systemctl start keepalived.service
- 配置负载分担策略
bash
ipvsadm -C
ipvsadm -A -t 192.168.180.250:80 -s rr
ipvsadm -a -t 192.168.180.250:80 -r 192.168.180.120 -g -w 1
ipvsadm -a -t 192.168.180.250:80 -r 192.168.180.130 -g -w 1
ipvsadm-save
systemctl enable ipvsadm
- 配置vip
bash
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0

bash
ifup ens33:0
systemctl restart network
- 调整/proc响应参数
bash
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

bash
#刷新
sysctl -p
keepalived2 :
- 安装软件
bash
yum install -y keepalived ipvsadm
- 关闭防火墙
bash
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
- 配置备用服务器-从主上复制过来,修改参数
bash
scp 192.168.180.62:/etc/keepalived/keepalived.conf /etc/keepalived/


- 开启
bash
systemctl start keepalived
- 查看ipvsadm有没有同步
bash
ipvsadm -ln

bash
systemctl enable ipvsadm
- 从主上同步vip配置
bash
scp 192.168.180.62:/etc/sysconfig/network-scripts/ifcfg-ens33:0 /etc/sysconfig/network-scripts/
- 从主上同步/proc响应参数
bash
scp 192.168.180.62:/etc/sysctl.conf /etc/

bash
#刷新
sysctl -p
web1 :
- 安装软件
bash
yum install -y httpd

- 关闭防火墙
bash
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
- 配置vip
bash
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0

bash
ifup lo:0
systemctl restart network
- 配置路由
bash
route add -host 192.168.180.250 dev lo:0
vim /etc/rc.local

bash
systemctl restart network
- 配置/proc响应参数
bash
vim /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

- 创建测试页面
bash
echo "11111111111" > /var/www/html/index.html
systemctl start httpd
web2 :
- 安装软件
bash
yum install -y httpd
- 关闭防火墙
bash
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
- 从主上同步vip
bash
scp 192.168.180.120:/etc/sysconfig/network-scripts/ifcfg-lo:0 /etc/sysconfig/network-scripts/
ifup lo:0

- 从主上同步路由
bash
route add -host 192.168.180.250 dev lo:0
scp 192.168.180.120:/etc/rc.local /etc/

bash
systemctl restart network
- 从主上同步/proc响应参数
bash
scp 192.168.180.120:/etc/sysctl.conf /etc/
sysctl -p

- 创建测试页面
bash
echo "2222222222222" > /var/www/html/index.html
systemctl start httpd
- 在keepalived上访问测试

- 在真机上访问测试


keepalived介绍
Keepalived 是一款基于 VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)的开源软件,主要用于实现服务器的高可用性(High Availability,HA)和负载均衡
功能特点
- 高可用性实现:通过 VRRP 协议,Keepalived 可以监控服务器的状态。当主服务器出现故障时,它能自动将服务切换到备用服务器上,确保服务的连续性,减少停机时间。
- 健康检查机制:支持多种健康检查方式,如通过发送 HTTP 请求、执行脚本等方式来检测服务器的运行状态。如果服务器出现异常,Keepalived 会及时将其从服务池中移除,避免将请求发送到故障服务器上。
- 负载均衡功能:结合 Linux 虚拟服务器(Linux Virtual Server,LVS)技术,Keepalived 可以实现基于 IP 的负载均衡,将用户请求均匀地分发到多个服务器上,提高系统的整体性能和处理能力。
- 可扩展性和灵活性:支持多种配置选项和参数调整,可以根据不同的应用场景和需求进行定制化配置。同时,它还可以与其他开源软件和工具集成,如 Nginx、Haproxy 等,进一步扩展其功能。
工作原理
- VRRP 协议基础:VRRP 协议通过在一组路由器之间创建一个虚拟路由器来实现高可用性。在这个虚拟路由器中,有一个主路由器负责处理所有的网络流量,其他路由器作为备用路由器。当主路由器出现故障时,备用路由器会通过选举机制选出一个新的主路由器,继续承担网络流量的处理任务。
- Keepalived 的工作流程:Keepalived 在服务器上运行后,会根据配置文件中的设置,定期发送 VRRP 通告消息来宣告自己的存在和状态。其他运行 Keepalived 的服务器会接收这些通告消息,并根据优先级等参数来确定当前的主服务器。同时,Keepalived 还会监控服务器的健康状态,如果发现主服务器出现故障,会立即触发选举过程,将备用服务器提升为主服务器,确保服务的不间断运行。
应用场景
- Web 服务高可用:在 Web 应用中,Keepalived 可以确保 Web 服务器集群的高可用性。当一台 Web 服务器出现故障时,Keepalived 会自动将用户请求切换到其他正常的服务器上,保证网站的正常访问。
- 数据库服务高可用:对于数据库服务器,Keepalived 可以实现主备切换。当主数据库服务器出现故障时,备用数据库服务器会自动接管服务,确保数据库的连续性和数据的一致性。
- 邮件服务高可用:在邮件系统中,Keepalived 可以保证邮件服务器的高可用性。当主邮件服务器出现故障时,备用邮件服务器会及时接替工作,确保邮件的正常收发。