Angie 集群设置#
本指南描述了创建容错 Angie 集群的过程,
包含自动配置同步和虚拟 IP 地址故障转移。 第一步是通过配置用户账户
和确保服务器之间的安全访问
来准备所有集群节点。 在所有节点上创建一个用户
(例如, 如有必要,设置密码: 备注 在某些操作系统中(例如 Alt Linux),
您应该将用户添加到 在 Astra Linux 中启用 MAC 时要使用 配置无密码 sudo: 在主节点上,创建 SSH 密钥并将其复制到备份节点: 警告 在复制 SSH 密钥之前,确保
设置基于密钥的访问后,将值设为 备注 为了 Angie 配置的交叉同步,将用户密钥
复制到所有节点: 准备节点后,您需要安装主要的集群组件:
Angie PRO 和配置同步包。 根据您系统的 包说明 在所有节点上配置仓库。 备注 在干净系统上安装 在所有节点上,使用您的操作系统包管理器安装包: 下一步是设置集群节点之间配置文件的自动同步。 备注 同步原理: 通过 仅在 Angie 服务运行时进行。 手动执行(命令 单向工作:从主节点到备份节点。 在节点上创建 根据操作系统,启动守护进程: 编辑 备注 对于交叉同步,
在所有节点上填写 在 Angie 配置中添加健康检查块
( 启动 Angie: 启动同步: 备注 脚本将自动检查配置,与所有
节点执行同步,并应用配置。 为了在集群节点之间实现自动故障转移,使用 Keepalived —
一个用于管理虚拟 IP 地址(VIP)的服务。 备注 如果未安装 要将进程绑定到非本地 IP 地址,
允许系统执行相应操作: 更多详情:
https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt#ip_nonlocal_bind 假设 VIP 如果 Angie 监听此 VIP( 在主节点上( 在备份节点上: 备注 在 启动服务: 让我们详细检查 Keepalived 配置的主要元素,
以了解集群操作原理。 配置包括两个部分: 主要元素: 备注 如果原主节点恢复,
它将重新获得 MASTER 角色(更高优先级)。
要禁用故障回切,请使用 完成配置后,需要测试集群操作
并确保节点间的正确切换。 检查 VIP 状态: 测试容错性: 在主节点上停止 Angie: 检查 VIP 转移到备份节点: 再次在主节点上启动 Angie: 之后,VIP 应该返回到主节点。准备集群节点进行同步#
配置用户和访问权限#
angie-ha-sync)并赋予 sudo 权限:$ sudo adduser angie-ha-sync
$ sudo passwd angie-ha-sync
wheel 组:$ sudo usermod -a -G wheel angie-ha-sync
rsync,请设置
正确的完整性级别:$ sudo pdpl-user -i 63 angie-ha-sync
$ echo "angie-ha-sync ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers
$ su - angie-ha-sync
$ ssh-keygen -t rsa
$ ssh-copy-id angie-ha-sync@node2_hostname
/etc/ssh/sshd_config 文件中有以下选项:PasswordAuthentication yesno 以提高
安全性。$ scp -p ~angie-ha-sync/.ssh/id_rsa angie-ha-sync@node2_hostname:.ssh/
安装 Angie PRO 和 angie-ha-sync#
安装 angie-ha-sync#
angie-pro-ha-sync 包时,
angie-pro 包也会作为依赖项被安装。$ sudo {apk|apt|pkg|yum|zypper} {add|install} angie-pro-ha-sync
配置配置同步#
rsync 执行同步。angiehasync -Sd)。rsync 以守护进程模式运行。配置
rsync#rsync 配置(/etc/rsyncd.conf):[angie] # Angie 配置目录
path = /etc/angie
# 同步用户
uid = angie-ha-sync
# 用户组
gid = angie-ha-sync
# 允许连接的 IP 或子网
hosts allow = 10.21.8.0/24
# 拒绝所有其他
hosts deny = *
$ sudo service rsyncd start # 或 $ sudo service rsync start
配置同步文件#
/etc/angiehasync/angiehasync.conf:M_NODE="<node1_hostname>" # 此节点的主机名或 IP
TARGET_HOSTS="<node2_hostname>" # 用于同步的主机/IP 列表(空格分隔)。
# 在备份节点上可以省略。
SSH_USER="user" # 同步用户(具有管理员权限)
SSH_ID="/home/$SSH_USER/.ssh/id_rsa" # 私钥路径
TARGET_HOSTS 列表;
但是,不要在列表中包含当前正在配置的节点。为 Angie 配置健康检查#
/etc/angie/angie.conf):server {
listen unix:/tmp/angie_hcheck.sock; # 用于检查的 Unix 套接字
access_log off;
error_log /dev/null;
default_type text/plain;
return 200 'ok\n';
}
$ sudo angie -t && sudo service angie start
$ sudo angiehasync -Sd
配置 Keepalived#
keepalived 包 — 请安装它:$ sudo {apk|apt|pkg|yum|zypper} {add|install} keepalived
$ sudo sysctl -w net.ipv4.ip_nonlocal_bind=1
10.21.11.230
分配给主节点(10.21.8.26)
或备份节点(10.21.8.27)。listen 10.21.11.230:80;)
但地址尚未分配,
没有 ip_nonlocal_bind 参数,Angie 将无法启动。Keepalived 配置#
/etc/keepalived/keepalived.conf):global_defs {
enable_script_security
}
vrrp_script angie_check {
script "/usr/bin/curl -s --connect-timeout 5 -A 'angie_hcheck_script'
--no-buffer -XGET --unix-socket /tmp/angie_hcheck.sock http://hcheck/"
interval 5 user angie
}
vrrp_instance angie {
state MASTER interface enp0s2 virtual_router_id 254 priority 100
advert_int 2 unicast_src_ip 10.21.8.26
unicast_peer {
10.21.8.27
}
virtual_ipaddress {
10.21.11.230
} track_script {
angie_check
}
}
global_defs {
enable_script_security
}
vrrp_script angie_check {
script "/usr/bin/curl -s --connect-timeout 5 -A 'angie_hcheck_script'
--no-buffer -XGET --unix-socket /tmp/angie_hcheck.sock http://hcheck/"
interval 5 user angie
}
vrrp_instance angie {
state MASTER interface enp0s2 virtual_router_id 254 priority 99
advert_int 2 unicast_src_ip 10.21.8.27
unicast_peer {
10.21.8.26
}
virtual_ipaddress {
10.21.11.230
} track_script {
angie_check
}
}
vrrp_instance angie 部分中,设置以下值:unicast_src_ip — 当前节点的 IPunicast_peer — 相邻节点的 IPvirtual_ipaddress — 虚拟 IP(VIP)interface — 网络接口$ sudo keepalived -t && sudo service keepalived start
Keepalived 配置详解#
global_defs — 全局设置vrrp_instance — VRRP 参数(VIP 切换)enable_script_security — 允许执行健康检查脚本vrrp_script — Angie 健康检查脚本state MASTER — 初始节点状态priority — 优先级(MASTER 角色分配给最高优先级)advert_int — VRRP 通告间隔unicast_src_ip — 当前节点的 IPunicast_peer — 邻居的 IPvirtual_ipaddress — VIP 地址track_script — 通过健康检查脚本进行可用性监控nopreempt 参数:vrrp_instance angie {
... nopreempt
}
测试集群操作#
$ ip addr show enp0s2 | grep "10.21.11.230"
$ sudo service angie stop
$ ip addr show enp0s2 | grep "10.21.11.230"
$ sudo service angie start