在运行脚本之前,请确保您已经安装了必要的依赖包,例如gcc,make,libssl-dev等。此外,请确保您具有root权限。

#!/bin/bash

# 安装主机还是备机?
echo -n "您要安装主机还是备机?请输入 m 或 b:"
read node_type

# 安装 Keepalived
echo "正在安装 Keepalived..."
apt-get update
apt-get install -y keepalived

# 配置主机
if [[ $node_type == "m" ]]; then
  echo "正在配置主机..."

  # 配置主 Keepalived 配置文件
  cat <<EOF > /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
  router_id LVS_DEVEL
}

vrrp_script check_nginx {
  script "/usr/bin/killall -0 nginx"
  interval 2
  weight -20
}

vrrp_instance VI_1 {
  state MASTER
  interface eth0
  virtual_router_id 51
  priority 101
  virtual_ipaddress {
    192.168.1.100
  }
  track_script {
    check_nginx
  }
}
EOF

  # 启动 Keepalived 服务
  systemctl start keepalived

  # 检查主机状态
  echo "正在检查主机状态..."
  ping -c 3 192.168.1.100
  if [[ $? -eq 0 ]]; then
    echo "主机状态正常!"
  else
    echo "主机状态异常,请检查配置!"
  fi

# 配置备机
else
  echo "正在配置备机..."

  # 配置备 Keepalived 配置文件
  cat <<EOF > /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
  router_id LVS_DEVEL
}

vrrp_script check_nginx {
  script "/usr/bin/killall -0 nginx"
  interval 2
  weight -20
}

vrrp_instance VI_1 {
  state BACKUP
  interface eth0
  virtual_router_id 51
  priority 100
  virtual_ipaddress {
    192.168.1.100
  }
  track_script {
    check_nginx
  }
}
EOF

  # 启动 Keepalived 服务
  systemctl start keepalived

  # 检查备机状态
  echo "正在检查备机状态..."
  ping -c 3 192.168.1.100
  if [[ $? -eq 0 ]]; then
    echo "备机状态正常!"
  else
    echo "备机状态异常,请检查配置!"
  fi
fi

echo "安装和配置完成!"

仅供学习参考。