Nginx Keeplived负载均衡
Keepalived 安装与配置指南
概述
Keepalived 是一个用于提供高可用性和负载均衡的工具,主要用于实现 VRRP(虚拟路由冗余协议)。本指南将详细介绍在 CentOS 7 环境中安装和配置 Keepalived 的步骤,并提供测试方法以验证配置的有效性。
下载 Keepalived 源码包
您可以从以下链接下载 Keepalived 的源码包:
1. 安装依赖
在安装 Keepalived 之前,您需要安装一些必要的依赖包。请使用以下命令:
sudo yum install -y gcc openssl openssl-devel libnl libnl-devel
注意:如果您使用的是麒麟 Linux 系统,还需要安装
libnl3。
下载并解压 Keepalived 源码包:
tar -zxvf keepalived-2.0.18.tar.gz
cd keepalived-2.0.18
2. 安装 Keepalived
使用以下命令配置和安装 Keepalived:
./configure --prefix=/usr/local/keepalived --sysconf=/etc
make
sudo make install
提示:如果您的系统中 OpenSSL 是手动编译安装的,您可以使用以下命令指定 OpenSSL 路径进行安装:
LDFLAGS="$LDFLAGS -L /usr/local/openssl/lib" ./configure --prefix=/usr/local/keepalived --sysconf=/etc
3. 防火墙配置
如果您的防火墙处于开启状态,请执行以下命令以允许 VRRP 协议通过:
sudo firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
sudo firewall-cmd --reload
注意:如果防火墙已关闭,可以跳过此步骤。
4. 创建配置文件
创建 Keepalived 的配置目录并编辑配置文件:
sudo mkdir -p /etc/keepalived
sudo vi /etc/keepalived/keepalived.conf
主节点配置示例
以下是主节点的配置示例:
! Configuration File for keepalived
vrrp_script chk_mysql {
script "/etc/keepalived/mysql_chk.sh"
interval 2
}
global_defs {
router_id 12 # 每个 Keepalived 实例取个不同的名称
}
vrrp_instance VI_1 {
state MASTER # 设置为主实例
interface eth0 # 网卡名称
virtual_router_id 68 # 主备配置相同
priority 100 # 优先级,主节点一般为 100,备节点为 80
advert_int 1
nopreempt # 主备都开启时,抢占后需等 Keepalived 停止才会漂移
authentication {
auth_type PASS # 主备必须配置成相同
auth_pass 1111 # 主备必须配置成相同
}
virtual_ipaddress {
10.202.3.16 # VIP,主备必须配置相同
}
track_script {
chk_mysql # 监控脚本
}
}
MySQL 监控脚本
以下是监控 MySQL 服务的脚本示例。您可以根据需要修改监控的端口或服务:
#!/bin/bash
mysql_status=`netstat -an | grep 54321 | wc -l`
if [ ${mysql_status} -eq 0 ]; then
exit 1
else
exit 0
fi
将脚本保存为 /etc/keepalived/mysql_chk.sh 并赋予执行权限:
sudo chmod +x /etc/keepalived/mysql_chk.sh
从节点配置示例
从节点的配置示例如下:
! Configuration File for keepalived
global_defs {
router_id 13 # 每个 Keepalived 实例取个不同的名称
}
vrrp_instance VI_1 {
state BACKUP # 设置为从实例
interface eth0 # 网卡名称
virtual_router_id 68 # 主备配置相同
priority 80 # 从节点优先级一般为 80
advert_int 1
nopreempt # 主备都开启时,抢占后需等 Keepalived 停止才会漂移
authentication {
auth_type PASS # 主备必须配置成相同
auth_pass 1111 # 主备必须配置成相同
}
virtual_ipaddress {
10.202.3.16 # VIP,主备必须配置相同
}
}
5. 启动 Keepalived 服务
启用并启动 Keepalived 服务:
sudo systemctl enable keepalived
sudo systemctl start keepalived
6. 测试 Keepalived 配置
在完成配置后,您可以通过以下方法测试 Keepalived 是否正常工作:
6.1 检查服务状态
首先,检查 Keepalived 服务的状态:
sudo systemctl status keepalived
确保服务处于“active (running)”状态。
6.2 测试 VIP
在主节点上,使用以下命令检查虚拟 IP 地址是否已经分配:
ip addr show
您应该能看到配置的虚拟 IP 地址(如 10.202.3.16)出现在主节点的网络接口上。
6.3 测试主备切换
-
在主节点上,您可以通过停止 Keepalived 服务来模拟故障:
sudo systemctl stop keepalived -
然后,在从节点上,检查虚拟 IP 地址是否已经切换到从节点:
ip addr show如果切换成功,您应该能在从节点的网络接口上看到虚拟 IP 地址。
-
重新启动主节点的 Keepalived 服务:
sudo systemctl start keepalived -
再次检查主节点的虚拟 IP 地址是否恢复。同时也可以关闭54321端口来测试看VIP地址是否会漂移
完成
至此,Keepalived 的安装与配置已完成。您可以根据需要进行后续的测试和调整,确保高可用性配置正常工作。