You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.4 KiB

KEEPALIVED 安装

准备机器

# 主机1 IP
192.168.127.11
# 主机2 IP
192.168.127.12

安装

# 安装
yum install -y keepalived

配置主机 1

# 编辑配置文件
cat > /etc/keepalived/keepalived.conf <<'EOF'
global_defs {
  router_id lb_keepalived_11
}

vrrp_instance lb_keepalived {
  state MASTER
  interface ens33
  virtual_router_id 51
  priority 100
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 1111
  }
  virtual_ipaddress {
    192.168.127.10
  }
}
EOF

配置主机 2

cat > /etc/keepalived/keepalived.conf <<'EOF'
global_defs {
  router_id lb_keepalived_12
}

vrrp_instance lb_keepalived {
  state BACKUP
  interface ens33
  virtual_router_id 51
  priority 100
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 1111
  }
  virtual_ipaddress {
    192.168.127.10
  }
}
EOF

服务管理

启动服务

systemctl start keepalived

关闭服务

systemctl stop keepalived

开机启动

systemctl enable keepalived

查看状态

运行状态

systemctl status keepalived

# 显示如下内容代表启动成功
# Active: active (running)

查看 IP

# 分别查看两台机器 IP
# 当前主节点会多一个虚拟 IP 地址
# 虚拟 IP : 192.168.127.10
ip a

访问地址

# 其他机器访问虚拟 IP
ping 192.168.127.10 -t

检查

主节点关机

init 0

访问地址

ping 192.168.127.10 -t

备份节点 虚拟IP

ip a

扩展

Keepalived 通过检测进程来判断是否存活, 可通过编写 shell 来检测任何需要检测的东西。

本机 nginx 心跳检测

创建目录

mkdir -p /usr/local/keepalived/logs

创建脚本

tee /usr/local/keepalived/monitor.sh <<-'EOF'
#!/bin/sh
curl -I 127.0.0.1 >/dev/null 2>&1
if [ $? -ne 0 ]; then
  echo "stop keepalived" at "$(date +"%Y-%m-%d %H:%M:%S")"
  systemctl stop keepalived
fi
EOF

添加权限

chmod +x /usr/local/keepalived/monitor.sh

关闭邮件

sed -i s/MAILTO=root/MAILTO=/ /etc/crontab

添加定时任务

crontab -e
* * * * * /usr/local/keepalived/monitor.sh >> /usr/local/keepalived/logs/monitor.log

重启定时任务

systemctl restart crond

查看定时任务

crontab -l

查看监控日志

tail -f -n 10 /usr/local/keepalived/logs/monitor.log