Keepalived
工作原理的解释
Keepalived 是一种用于 Linux 系统的高可用性解决方案,它主要用于提高网络服务的可靠性和可用性。
Keepalived 的工作原理可以分为几个关键部分:
- 虚拟路由冗余协议(VRRP):
VRRP 是 Keepalived 的核心组件之一,它允许多个服务器共享一个虚拟 IP 地址。
在一个 VRRP 设置中,会有一个主服务器和一个或多个备份服务器。主服务器拥有虚拟 IP 地址,并处理所有的网络流量。
如果主服务器发生故障,VRRP 会自动将虚拟 IP 地址转移到一个备份服务器上,确保服务的连续性。
- 健康检查:
Keepalived 通过执行健康检查来监控服务器和服务的状态。
这些检查可以是简单的 ping 测试,也可以是更复杂的脚本或HTTP请求。
如果健康检查失败,Keepalived 会认为相应的服务器或服务出现了问题,并启动故障转移过程。
- 负载均衡:
虽然 Keepalived 主要用于高可用性,但它也支持基本的负载均衡功能。
它可以将入站流量分配给多个后端服务器,从而提高整体服务的可扩展性和效率。
- 配置灵活性:
Keepalived 的配置是通过文本文件完成的,这使得它既灵活又易于管理。
管理员可以定义多种不同的故障转移策略,以适应不同的网络环境和需求。
总的来说,Keepalived 的工作原理是通过 VRRP 实现高可用性,在检测到主服务器故障时自动进行故障转移,同时提供健康检查机制来监控服务器和服务的状态,并支持基本的负载均衡功能。这些特性使其成为保持网络服务连续可用的强大工具。
解释看不懂也没关系 不要纠结 能达到目的就行
使用步骤
1.安装
使用yum安装 其他方式安装 也可以 (源码安装请自行百度 官网地址https://www.keepalived.org/download.html)
yum install -y keepalived
2、查看版本
rpm -qa|grep keepalived
3、查看安装后目录
rpm -qc keepalived
4、查看安装后目录
rpm -qc keepalived
5、配置
主机A
vrrp_script chk_http_port {
script "/usr/local/src/check_nginx_pid.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface ens192
virtual_router_id 66
priority 100
advert_int 1
#授权访问
authentication {
auth_type PASS
auth_pass 1111Asdi
}
track_script {
chk_http_port
}
virtual_ipaddress {
10.158.242.126
}
}
#检测脚本
vrrp_script chk_http_port {
script "/usr/local/src/check_nginx_pid.sh" #心跳执行的脚本,检测nginx是否启动
interval 2 #(检测脚本执行的间隔,单位是秒)
weight 2 #权重
}
#vrrp 实例定义部分
vrrp_instance VI_1 {
state MASTER # 指定keepalived的角色,MASTER为主,BACKUP为备
interface ens192 # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
virtual_router_id 66 # 虚拟路由编号,主从要一直
priority 100 # 优先级,数值越大,获取处理请求的优先级越高
advert_int 1 # 检查间隔,默认为1s(vrrp组播周期秒数)
#授权访问
authentication {
auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
auth_pass 1111Asdi
}
track_script {
chk_http_port #(调用检测脚本)
}
virtual_ipaddress {
10.158.242.126 # 定义虚拟ip(VIP),可多设,每行一个
}
}
主机B
vrrp_script chk_http_port {
script "/usr/local/src/check_nginx_pid.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens192
virtual_router_id 66
priority 99
advert_int 1
#授权访问
authentication {
auth_type PASS
auth_pass 1111Asdi
}
track_script {
chk_http_port
}
virtual_ipaddress {
10.158.242.126
}
}
#检测脚本
vrrp_script chk_http_port {
script "/usr/local/src/check_nginx_pid.sh" #心跳执行的脚本,检测nginx是否启动
interval 2 #(检测脚本执行的间隔)
weight 2 #权重
}
#vrrp 实例定义部分
vrrp_instance VI_1 {
state BACKUP # 指定keepalived的角色,MASTER为主,BACKUP为备
interface ens192 # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
virtual_router_id 66 # 虚拟路由编号,主从要一直
priority 99 # 优先级,数值越大,获取处理请求的优先级越高
advert_int 1 # 检查间隔,默认为1s(vrrp组播周期秒数)
#授权访问
authentication {
auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
auth_pass 1111Asdi
}
track_script {
chk_http_port #(调用检测脚本)
}
virtual_ipaddress {
10.158.242.126 # 定义虚拟ip(VIP),可多设,每行一个
}
}
检查nginx的脚本
#!/bin/bash
#检测nginx是否启动了
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then #如果nginx没有启动就启动nginx
systemctl start nginx #重启nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then #nginx重启失败,则停掉keepalived服务,进行VIP转移
killall keepalived
fi
fi
赋权
chmod 775 check_nginx_pid.sh
6.启动与检查
启动keepalived
systemctl start keepalived.service
设置开机启动
systemctl enable keepalived.service
查看开机自启列表
systemctl list-unit-files|grep enabled | grep keepalived
查看启动状态
systemctl status keepalived.service
7.测试
1.测试nginx的脚本
检查nginx状态:systemctl status nginx
停止nginx状态:systemctl stop nginx
他是否会重启nginx
2.测试主备切换
检查keepalived的状态:systemctl status keepalived
查询虚拟IP:ip a | grep ens192
停止keepalived:systemctl stop keepalived
再次查询虚拟IP
再次检查备机查看虚拟IP 是否转移
如果如上图 就是成功了