Keepalived部署_物联网平台_边缘计算网关

Keepalived是一款开源的、免费的高可用软件。

原理

通过自动检测服务器的健康状态,将故障服务器从系统中剔除,并使用其他服务器接替其工作,确保服务的高可用性。

第1/4步:安装Keepalived

在线安装

(推荐)Ubuntu

apt-get update
apt-get install keepalived

CentOS

yum update
yum install -y keepalived

离线安装

下载安装包

上传并解压安装包

tar -zxvf 离线安装包.tar.gz

安装依赖库

yum install -y gcc openssl-devel libnl libnl-devel libnfnetlink-devel net-tools vim
apt-get install -y curl gcc libssl-dev libnl-3-dev libnl-genl-3-dev libsnmp-dev

编译安装

cd 离线安装包解压目录  
./configure --prefix=/usr/local/keepalived  
make && make install

配置环境变量

💡 提示

编辑 ~/.bashrc/etc/profile 文件,在文件内添加keepalived的二进制文件路径。

export PATH=/usr/local/keepalived/sbin:$PATH

应用环境变量

💡 提示

编辑 ~/.bashrc/etc/profile 文件,在文件内添加keepalived的二进制文件路径。

source /etc/profile
source ~/.bashrc

第2/4步:配置Keepalived

1/4:创建目录

⚠️ 提示

确保目录/etc/keepalived存在。

mkdir -p /etc/keepalived 

2/4:创建配置文件

💡 提示

配置文件中的中文结合自身情况替换。

💡 提示

需要将文本【集群内节点间可相互访问的本节点IP】替换为当前节点IP后执行命令。

例如:192.168.1.235

💡 提示

需要将文本【当前节点权重(主节点必须高于从节点),取值范围:1-254。】更新后执行命令。

集群内所有节点priority的值唯一且不一样

例如:240

💡 提示

需要将文本【高可用对外提供服务的虚拟IP】替换为保障高可用的虚拟IP后执行命令。

例如:192.168.1.240/24。

⚠️ 提示

【高可用对外提供服务的虚拟IP】的子网掩码必须与服务器节点的子网掩码一致。

💡 提示

需要将文本【与虚拟IP绑定的网卡名】替换为当前服务节点的网卡名称后执行命令。

例如:eth0、ens33等。

tee /etc/keepalived/keepalived.conf <<-'EOF'
! Configuration File for keepalived

global_defs {   
   router_id 集群内节点间可相互访问的本节点IP
   

     
   vrrp_skip_check_adv_addr
   script_user root
   enable_script_security
}

vrrp_script check_vrrp {
 script "killall -0 postgres" #名为nginx的进程是否存在
 interval 9   #检查间隔,单位:秒。值必须大于脚本执行时间,否则提示【exited due to signal 15】超时
 user root    #执行监测脚本的用户或组
 
 init_fail    #设置默认标记为失败状态,监测成功之后再转换为成功状态
 weight -20   #默认为0,取值范围:-254~254
 fall 3       #脚本连续几次都执行失败,则把服务器标记为失败
 rise 2       #脚本连续几次都执行成功,则把服务器标记为成功
}

vrrp_instance thingskit {
    state BACKUP
    priority 当前节点权重(主节点必须高于从节点),取值范围:1-254。
    virtual_ipaddress {
        高可用对外提供服务的公网IP
    }
    interface 与虚拟IP绑定的网卡名
    virtual_router_id 133
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass thingskit
    }
    nopreempt
    track_script {
       check_vrrp
    }
    notify_master "/etc/keepalived/keepalived_master.sh"                     #切换到MASTER时,执行的脚本(自定义操作)。例如:邮件通知
    notify_backup "/etc/keepalived/keepalived_backup.sh"                     #切换到BACKUP时,执行的脚本(自定义操作)
}
EOF

3/5:创建脚本文件

tee /etc/keepalived/keepalived_master.sh <<-'EOF'
#!/bin/bash
#数据库管理工具
systemctl start pgpool
EOF
tee /etc/keepalived/keepalived_backup.sh <<-'EOF'
#!/bin/bash
#数据库管理工具
systemctl stop pgpool

PGDATA="/app/postgresql-15.2/data"       # PostgreSQL 数据目录路径
PGCTL="/app/postgresql-15.2/bin/pg_ctl"  # PostgreSQL 启动脚本路径
#/app/postgresql-15.2/bin/psql -h localhost -p 5432 -U pgpool postgres  -c "select * from pg_stat_replication;"
if $PGCTL status -D $PGDATA > /dev/null 2>&1; then
    echo "PostgreSQL is running."
#    exit 0
else
    echo "PostgreSQL is not running. Attempting to start it..."
    su - postgres -c "/app/pgpool2-4.5.5/bin/pcp_recovery_node -h localhost -p 9898 -U pgpool -n 0"  #从节点数据恢复
fi
EOF

4/5:配置文件权限修正

⚠️ 提示

配置文件【/etc/keepalived/keepalived.conf】权限要求严格。

1、配置文件所有者只能属于root。

2、配置文件执行权限只能为644。

chown root  /etc/keepalived/keepalived.conf
chmod 644 /etc/keepalived/keepalived.conf
chmod 744 /etc/keepalived/keepalived*.sh

5/5:配置文件有效性检测

keepalived -t -f /etc/keepalived/keepalived.conf

第3/4步:启动Keepalived服务

[Service]
Type=notify
EnvironmentFile=-/etc/default/keepalived
ExecStart=/usr/sbin/keepalived --dont-fork $DAEMON_ARGS  -l -D 
ExecReload=/bin/kill -HUP $MAINPID
# 将标准输出和错误重定向到文件
StandardOutput=append:/var/log/keepalived.log
StandardError=append:/var/log/keepalived.log
[Install]
sudo systemctl daemon-reload

使用systemctl命令启动Keepalived服务,并设置开机自启动。

sudo systemctl restart keepalived.service 

第4/4步:检查服务状态

⚠️ 提示

Keepalived软件正常工作所需要的服务器数量不能低于2台。

sudo systemctl status keepalived.service

本文通过 YUQUE WORDPRESS 同步自语雀
云腾五洲-AI助理