如何让Corosync / pcs控制nginx?

伙计们,

我试图用多个运行nginx的虚拟机来replace单个老化负载均衡器。 然而,在我安装了centos 7和nginx之后,我意识到心跳已经被弃用了。 所以我开始着眼于corosync和pcs来设置和pipe理HA群集。

我在集群中设置节点,并为每个我想使用的webapp添加一个虚拟ip的资源。 当我检查状态时,问题变得明显

[root@vlb1 nginx]# pcs status Cluster name: webapps Last updated: Thu Mar 5 21:27:03 2015 Last change: Thu Mar 5 16:43:22 2015 via cibadmin on vlb1.domain.com Stack: corosync Current DC: vlb2.domain.com (2) - partition with quorum Version: 1.1.10-32.el7_0.1-368c726 2 Nodes configured 2 Resources configured Online: [ vlb1.domain.com vlb2.domain.com ] Full list of resources: webapp1_cluster (ocf::heartbeat:IPaddr2): Started vlb2.domain.com webapp2_cluster (ocf::heartbeat:IPaddr2): Started vlb1.domain.com PCSD Status: vlb1.domain.com: Online vlb2.domain.com: Online Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled 

立即我可以看到,我有资源集群去不同的节点。 更大的问题是,没有corosync控制nginx,vlb1可能会工作,而vlb2会给一个无法绑定地址错误,即

 015/03/05 21:15:51 [emerg] 985#0: bind() to 92.168.1.88:443 failed (99: Cannot assign requested address) 

在这一点上,我有两个问题:

  1. 发生故障转移时是否可以启动HA群集控制(在新节点上)并停止(在旧节点上)nginx?

  2. 是否有可能有多个集群资源,并让他们都去当前节点,或者我应该路由多个networking应用程序到一个虚拟IP和处理它在服务器声明在Nginx?

为了符合PCI规范的原因,我们最初将每个独特的Web应用程序分离到它自己的集群中,并且我不想让多个唯一的Web应用程序都指向相同的虚拟IP地址。