Назад | Перейти на главную страницу

Как позволить Corosync / ПК управлять nginx?

Ребята,

Я пытаюсь заменить один устаревший балансировщик нагрузки несколькими виртуальными машинами, на которых работает nginx. Однако после того, как я установил centos 7 и nginx, я понял, что сердцебиение устарело. Итак, я начал смотреть на corosync и ПК для настройки и управления кластером высокой доступности.

Я настраиваю узлы в кластере и добавляю ресурс для виртуального 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. Возможно ли, чтобы управление кластером высокой доступности запускалось (на новом узле) и останавливалось (на старом узле) nginx при аварийном переключении?

  2. Возможно ли иметь несколько ресурсов кластера и все они переходят на текущий узел, или я должен направить несколько веб-приложений на один виртуальный IP-адрес и обработать его в объявлении сервера в nginx?

Изначально мы разделили каждое уникальное веб-приложение на отдельный кластер из соображений соответствия требованиям PCI, и я бы предпочел не иметь несколько уникальных веб-приложений, указывающих на один и тот же виртуальный IP-адрес.

Вы можете взглянуть на различные агенты ресурсов, используемые для управления услугами - Вот

Есть агент ресурсов для управления демоном nginx.

Затем вы можете использовать Ограничения по размещению так что nginx и айпи адрес всегда на одном и том же хосте.

А также используйте Константы заказа чтобы установить порядок запуска, чтобы айпи адрес всегда запускается перед запуском nginx служба. В айпи адрес также следует остановить после nginx демон останавливается, если служба перемещается на другой узел в вашем кластере.