Linux 故障转移脚本

介绍

在主/备 Linux PBX 之间设置故障转移时,可以使用以下脚本。

  • DNSgoogle.sh
  • Kill3CXServices.sh
  • Shutdown3CXMainMachine.sh
  • Stop3CXServices.sh
  • StopsAndKill3CXServices.sh

为了使脚本正常运行,您需要:

  1. 在主和备 PBX 之间交换 phonesystem 用户的 SSH 密钥,以实现无密码 SSH 身份验证
  2. 更改上传脚本的权限,以便 phonesystem 用户可以执行这些脚本
  3. 在 sudoers 配置中允许 phonesystem 用户在主动 PBX 上执行所有相关命令
  4. 仅适用于 DNSgoogle.sh 脚本,请在被动 PBX 上安装 gcloud cli 并验证 phonesystem 用户的身份

可以在此处找到可供下载的 Linux 脚本。

步骤 1:允许 phonesystem 用户执行脚本

以下脚本需要执行此操作:

  • Kill3CXServices.sh
  • Shutdown3CXMainMachine.sh
  • Stop3CXServices.sh
  • StopsAndKill3CXServices.sh
  1. 登录备用 PBX 的管理控制台
  2. 导航至“备份和恢复”>“故障转移”,并在“之前/之后”部分上传您的脚本
  3. 通过 SSH 连接到备用 PBX 并运行以下命令,以允许 phonesystem 用户执行脚本
  1. 确保将 before.sh 和 after.sh 替换为脚本的实际名称

cd /var/lib/3cxpbx/Instance1/Scripts

chmod 700 before.sh

chmod 700 after.sh

步骤 2:为 Phonesystem 用户在主 PBX 和备 PBX 之间交换 SSH 密钥,实现无密码 SSH

  1. 在备用 PBX 上启动 SSH 并运行以下命令:

su phonesystem

ssh-keygen

cat ~/.ssh/id_rsa.pub

注意:

  • 运行 ssh-keygen 命令时,按 Enter 键将文件保存到默认位置。输入空密码后也请按 Enter 键。
  • 最后一条命令将打印您的 public_key_string。请记下它,因为您将在下面的步骤 2 中用到它。
  1. 在主 PBX 上通过 SSH 连接并运行以下命令:

su phonesystem

mkdir -p ~/.ssh

echo public_key_string >> ~/.ssh/authorized_keys

chmod -R go= ~/.ssh

chown -R phonesystem:phonesystem ~/.ssh

注意:请务必将上面的 public_key_string 替换为您在步骤 1 中记下的字符串。

  1. 再次在备用 PBX 上通过 SSH 连接并运行以下命令测试连接:

su phonesystem

ssh phonesystem@activeIP

注意:请务必将 ActiveIP 替换为您主动 PBX 的实际 IP 地址。如果系统提示,请点击 y 并按 Enter 键确认连接的真实性。

步骤 3:允许 phonesystem 用户在 sudoers 中在活动的主 PBX 上执行命令

  1. SSH 到主 PBX
  2. 运行以下命令编辑以下文件:

nano /etc/sudoers.d/90-cloud-init-users

  1. 在文件末尾添加以下三行并保存(在 nano 中按 Ctrl-X、y、Enter 保存):

phonesystem ALL=(ALL) NOPASSWD: /usr/sbin/shutdown now

phonesystem ALL=(ALL) NOPASSWD: /usr/sbin/service *

phonesystem ALL=(ALL) NOPASSWD: /usr/bin/killall *

步骤 4:DNS 脚本

允许 phonesystem 用户执行脚本

仅以下脚本需要:

  • DNSgoogle.sh
  • 登录备用 PBX 的管理控制台。
  • 导航至“备份和恢复”>“故障转移”,并在“之前/之后”部分上传您的脚本。
  • 通过 SSH 连接到备用 PBX 并运行以下命令,允许 phonesystem 用户执行脚本。

注意:请务必将 before.sh 和 after.sh 替换为您的脚本的实际名称。

cd /var/lib/3cxpbx/Instance1/Scripts

chmod 700 before.sh

chmod 700 after.sh

为 phonesystem 用户安装并验证 gcloud CLI

  1. 通过 SSH 连接到备用机器并运行以下命令安装 gcloud CLI:

sudo apt-get update

sudo apt-get install apt-transport-https ca-certificates gnupg curl sudo

echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list

curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -

sudo apt-get update && sudo apt-get install google-cloud-cli

  1. 运行以下命令以将 gcloud cli 验证为 phonesystem 用户:

su phonesystem

gcloud init

注意:

  • 请按照说明进行身份验证。
  • gcloud init 将提供一个 URL,您可以在浏览器中打开该 URL 并使用您的 Google 帐户登录。
  • 在浏览器中完成身份验证后,Google 将提供一个代码,您可以在 SSH 终端中输入 gcloud init。
  • 有关更多信息,请参阅本指南: https://cloud.google.com/sdk/docs/install#deb

另请参阅

最后更新

本文档最后更新于 2023 年 6 月 23 日

https://www.3cx.cn/docs/linux-pbx-failover/