Как я могу выполнить кластер CentOS (Red Hat) в ухудшенном режиме?

Я установил кластерное программное обеспечение Red Hat на установке CentOS 6.5 и использую его для обеспечения избыточной маршрутизации от одной сети до другого. Это хорошо работает, и у меня есть пара полей, предоставляющих услугу, так, чтобы, если Вы перестали работать (например, если я тестирую путем удаления его сетевых соединений), другой принял маршрутизацию.

Однако, если я затем должен сделать что-нибудь к остающемуся полю, я не могу перезапустить его из-за проблем с rgmanager:

service rgmanager stop

зависает, и единственный способ остановить процесс к kill -9 это. Это, очевидно, также влияет на любое действие, которое пытается остановить сервис, как a reboot или poweroff.

Когда мне действительно удается запустить сервер самостоятельно, хотя кластер запускается, rgmanager не показывается работающий в clustat и ни одна из избыточных служб маршрутизации даже не видима, уже не говоря о запуске.

Это могло вызвать проблемы, если, например, поля развертываются на удаленном местоположении и должны быть выключены, прежде чем у нас был шанс заменить неудавшееся поле.

Вот мой cluster.conf:

<?xml version="1.0"?>
<cluster config_version="2" name="router-ha">
        <fence_daemon/>
        <clusternodes>
                <clusternode name="router-01" nodeid="1"/>
                <clusternode name="router-02" nodeid="2"/>
        </clusternodes>
        <cman expected_votes="1" two_node="1"/>
        <fencedevices/>
        <rm>
                <failoverdomains/>
                <resources>
                        <ip address="10.0.0.1" monitor_link="1" sleeptime="0"/>
                        <ip address="10.0.0.2" monitor_link="1" sleeptime="0"/>
                        <ip address="10.2.0.1" monitor_link="1" sleeptime="0"/>
                        <ip address="10.4.0.1" monitor_link="1" sleeptime="0"/>
                </resources>
                <service autostart="1" name="routing-a" recovery="restart">
                        <ip ref="10.0.0.1"/>
                        <ip ref="10.2.0.1"/>
                </service>
                <service autostart="1" name="routing-b" recovery="restart">
                        <ip ref="10.0.0.2"/>
                        <ip ref="10.4.0.1"/>
                </service>
        </rm>
</cluster>

Почему я не могу запустить сервис на единственное поле, если он не видит другой? Конечно, это - необходимая часть того, чтобы быть избыточной парой, что Вы не зависите от другой машины, чтобы смочь запустить службу кластеров?

1
задан 10 April 2015 в 00:42
1 ответ

Для запуска кластерных служб необходим кворум. Как правило, например, в кластере с тремя узлами каждый член имеет по одному голосу: если вы отключите один из них, он будет знать, что он нецифровый, поскольку у него меньше половины доступных голосов (значение фактически настраивается). Кластер без кворума не подходит для запуска кластерных служб.

Этот принцип не только для кластеров Red Hat, но и общий принцип. Однако решения и реализации могут отличаться. Также реализации двухузловых кластеров, поскольку, если вы дадите обоим узлам по одному голосу, ни один из них, как правило, не будет иметь кворума.

Конечно, это обязательная часть избыточной пары, которую вы не делаете. зависит от того, сможет ли другой компьютер запустить службу кластера?

В случае Red Hat в двухузловом кластере применяется особое условие:

  
 

Что произойдет, когда вы отключите разъем, так это то, что оба узла потеряют связь друг с другом.

Чтобы определить, какой из них имеет кворум, они оба попытаются STONITH друг друга. 12187] STONITH - это аббревиатура от Shoot-The-Other-Node-In-The-Head, и это защищает ваши данные от повреждения несанкционированными узлами или параллельными доступ. Тот факт, что узел не отвечает, не означает, что он не имея доступа к вашим данным. Единственный способ быть на 100% уверенным, что ваши данные безопасно, заключается в ограждении узла с помощью STONITH, чтобы мы могли быть уверены, что узел действительно отключен, прежде чем разрешить доступ к данным с другого узла.

Итак, ваше предположение верное, ваш кластер неправильно сконфигурирован и для работы требуется ограничивающий агент, потому что, вытаскивая вилку, вы не только делаете свою службу недоступной, что обычно вызывает rgmanager для переключения на другой узел (или как бы вы это ни настраивали), вы также удаляете контрольную связь между кластерными узлами. Несмотря на то, что rgmanager может попытаться сделать то, для чего вы его сконфигурировали, cman по-прежнему не может определить, какой из этих узлов имеет кворум. Вместо этого он будет постоянно пытаться оградить другой узел, но поскольку вы не настроили забор-агент, он будет зависать на неопределенный срок.

Итак, вот два хороших совета для вас:

  1. отделите трафик кластера от сети трафика путем добавления дополнительного интерфейса к узлам кластера в изолированной сети, чтобы при отключении интерфейса, обращенного к приложениям, кластер выполнял полное переключение при отказе
  2. Настроить ограждение.
0
ответ дан 4 December 2019 в 08:38

Теги

Похожие вопросы