Keepalived 二进制部署
前言
前段时间二进制部署了Keepalived
,才多了一段时间就忘了,还是要码上记录才行。
keepalived简介
Keepalived
是一个用于实现高可用性(High Availability,HA)的工具,主要在 Linux 系统中用于负载均衡和故障转移。它的主要功能和特点包括:
主要功能
- 虚拟路由冗余协议(VRRP):
Keepalived
实现了 VRRP(Virtual Router Redundancy Protocol),允许多个路由器在同一网络中一起工作,以确保在主路由器故障时,备份路由器能够迅速接管其职责,确保网络的高可用性。
- 负载均衡:
Keepalived
支持使用 LVS(Linux Virtual Server)进行负载均衡。通过将客户端请求分配给后端服务器,可以提高应用程序的可扩展性和可靠性。
- 健康检查:
Keepalived
提供了健康检查机制,可以监控后端服务的状态,在检测到某个服务不健康时,自动将其从负载均衡池中移除,防止用户请求被路由到不可用的服务。
主要特点
- 易于配置:
Keepalived
的配置文件使用简单的文本格式,便于用户进行修改和管理。 - 灵活性:支持多种负载均衡算法,如轮询、加权轮询和最少连接等,以满足不同应用场景的需求。
- 紧密集成:可以与 iptables、ipvsadm 等工具结合使用,以实现更为复杂的流量管理和负载均衡策略。
- 高性能:由于运行在内核态,
Keepalived
可以提供较高的性能,适用于大规模部署。
适用场景
- 高可用性架构:用于确保关键服务(如数据库、Web 服务器等)的高可用性,避免单点故障。
- 负载均衡:在多台服务器之间分流请求,提高服务的吞吐量和响应速度。
- 服务监控与管理:监控后端服务的状态,自动处理故障并进行恢复。
安装keepalived
下载解压
下载地址:https://www.keepalived.org/download.html
解压 : tar -zxvf keepalived-2.3.1.tar.gz
编译安装
使用configure
命令配置安装目录与核心配置文件所在位置:
yum -y install libnl libnl-devel
cd keepalived-2.3.1
./configure --prefix=/usr/local/keepalived --sysconf=/etc
# 安装keepalived
make && make install
prefix
:keepalived
安装的位置sysconf
:keepalived
核心配置文件所在位置,固定位置,改成其他位置则keepalived
启动不了- 配置文件在
/etc/keepalived/keepalived.conf
不安装
libnl/libnl-3
依赖,配置过程中可能会出现警告信息,如下所示:*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.
如果忘记安装配置的目录,则通过如下命令找到:
whereis keepalived
把keepalived注册为系统服务
拷贝配置文件
将安装目录的keepalived
目录下etc/init.d/keepalived
拷贝到/etc/init.d/
下
将安装目录的keepalived
目录下etc/sysconfig/keepalived
拷贝到/etc/sysconfig/
下
cd /usr/local/src/keepalived-2.3.1/keepalived/etc/init.d
cp keepalived /etc/init.d/
cd /usr/local/src/keepalived-2.3.1/keepalived/etc/sysconfig/
cp keepalived /etc/sysconfig/
# 刷新systemctl
systemctl daemon-reload
#启动
systemctl start keepalived.service
#停止
systemctl stop keepalived.service
#重启
systemctl restart keepalived.service
配置keepalived
通过命令vim keepalived.conf
配置文件
[baiy@nginx108 ~]$ cat /etc/keepalived/keepalived.conf
global_defs {
# 路由id:当前安装keepalived的节点主机标识符,保证全局唯一
router_id nginx108
}
vrrp_script check_run {
script "/etc/keepalived/check_nginx.sh"
interval 5
weight 2
}
vrrp_instance VI_1 {
# 非抢占
nopreempt
# 表示状态是MASTER主机还是备用机BACKUP
state BACKUP
# 该实例绑定的网卡
interface eth0
# 保证主备节点一致即可
virtual_router_id 51
# 权重,master权重一般高于backup,如果有多个,那就是选举,谁的权重高,谁就当选
priority 88
# 主备之间同步检查时间间隔,单位秒
advert_int 2
# 认证权限密码,防止非法节点进入
authentication {
auth_type PASS
auth_pass 2222
}
# 虚拟出来的ip,可以有多个(vip)
virtual_ipaddress {
10.194.106.121/25
}
track_script {
check_run
}
}
check_run脚本信息
[baiy@nginx108 keepalived]$ cat check_nginx.sh
#!/bin/bash
count=`ps -C nginx --no-header |wc -l`
if [ $count -eq 0 ];then
/AppHome/nginx/sbin/nginx -c /AppHome/nginx//conf/nginx.conf
sleep 5
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
参考
1.https://www.cnblogs.com/jingzh/p/16215536.html
(实现双机主备高可用-keepalived双主热备)