我想使用 Corosync 和 Pacemaker 在两台服务器之间进行同步,这些服务器是两个(或更多)EC2 实例,上面安装了 Ubuntu 16.04。我按照以下方法操作文章,但我停留在通过互联网搜索但没有运气的步骤private_binding_IP_address
,我想知道以下内容:
- Corosync 和 Pacemaker 可以与 Ubuntu 16.04 兼容吗?
- Corosync 和 Pacemaker 是否适用于 Amazon EC2(Ubuntu)实例?
- 如何做到这一点(将两个或多个 Amazon EC2 同步在一起)?
谢谢
更新:创建 EC2 HA 集群的主要目标是,我想在 EC2 实例上安装两个或更多 NextCloud 服务器用于存储和数据库,我可以配置 NextCloud 使用 S3 存储桶作为主存储,RDS 用于数据库,适用于所有 EC2 实例。NextCloud 实例已经安装并配置为 S3 存储桶和 RDS,现在要同步两个 EC2,我按照文章但我被困在了这一步配置 Corosync 集群我无法获取bindnetaddr
哪个是绑定的 IP 地址,我在两台服务器上都运行了 ifconfig -a 命令,但文章中指定的两个 IP 并不相同
更新2 我看到了 AWS文章 这篇文章描述了如何在 EC2 之间实现高可用性,也就是说一个实例积极的,另一个是支持我需要做的是让所有实例同时处于活动状态,而不是一个处于活动状态而其他处于待机状态,您可以说在应用程序级别同步,假设如果我有三个 NextCloud 服务器,用户可以向三个 NextCloud 服务器发送请求,并且请求由这三个服务器处理。我厌倦了 AWS ELB(弹性负载均衡器),但它的行为与上述 AWS 文章中描述的场景相同,所以这就是我转向 Corosync 和 Pacemaker 的原因,但我不知道如何将 Corosync 用于 EC2
答案1
Corosync 和 Pacemaker 可以与 Ubuntu 16.04 兼容吗?
是的。Ubuntu 为 Xenial (16.04) 打包了 Corosync 和 Pacemaker,可以使用一个简单的命令进行安装:# apt install corosync pacemaker
Corosync 和 Pacemaker 是否适用于 Amazon EC2(Ubuntu)实例?
从技术上来说,是的,但有很多极端情况需要注意。我最担心的是标准 EC2 实例之间的网络性能/可靠性。
Corosync 处理节点之间的通信,并检测集群中节点何时丢失(节点故障、网络故障等)。由于 AWS 的网络有点像黑匣子(从管理员的角度来看),因此很难衡量该网络的可靠性。在“本地”集群中,此网络通常是节点之间的一对直接连接,或堆叠交换机,因此可靠性和性能都很高。我并不是说 AWS 的网络不可靠或性能不高,但它非常共享,而且肯定比一组交叉电缆更复杂。当 Corosync 的网络中断时,即使只有 1000 毫秒(1 秒),它也会宣布一个节点死亡(在双节点集群中,具有默认超时)。我希望这种情况会时不时发生,并且知道如何从中恢复。
话虽如此,看起来您可以在 AWS 中获得“集群实例”,它宣称节点之间的网络延迟低/性能高。这可能是您想要使用的,因为它似乎解决了我的主要担忧。
无论您选择哪种实例,都应配置 Pacemaker 以启用 STONITH,以确保当节点离线或网络中断时,该节点与集群的其余部分隔离。STONITH 是一种隔离形式,可将处于未知状态的集群节点置于已知状态:关闭。您在网上找到的大多数教程中都会忽略 STONITH,因为它非常依赖于您的环境/硬件/虚拟机管理程序,但它是正确配置的 HA 集群中最重要的部分之一。
ClusterLab 的 git 中似乎有一个新的 AWS 隔离代理: https://github.com/ClusterLabs/fence-agents/blob/master/fence/agents/aws/fence_aws.py
如何做到这一点(将两个或多个 Amazon EC2 同步在一起)?
这部分有点太模糊了,无法准确回答。您是在谈论同步目录、数据库、卷还是什么?如果您更新问题以使其更具体,我会更新我的答案 ;)