7.3. Исключение узлов из кластера

Настройка функций изоляции в кластере включает выбор устройств и методов изоляции.
Ниже перечислены особенности настройки изоляции в cluster.conf.
  1. Секция fencedevices содержит список исключающих устройств, каждое из которых определено в элементе fencedevice (см. Пример 7.3, «Добавление устройства APC в cluster.conf»).
  2. Метод изоляции определяется при помощи элемента fence для каждого clusternode в секции clusternodes. Атрибут name в строке method содержит название метода, а элемент device содержит характеристики устройства изоляции (см. Пример 7.4, «Добавление методов изоляции в cluster.conf»).
  3. Для методов, контролирующих доступ к хранилищу и SAN, в clusternodes надо будет добавить секцию unfence. Этот параметр предотвращает подключение изолированного узла к хранилищу до тех пор, пока он не будет перезагружен. Подробную информацию можно найти на справочной странице fence_node(8).
    unfence включает элемент device, идентичный одноименному элементу в секции fence, но с параметром action= "on" (или "enable"). То есть обе секции ссылаются на одно устройство из fencedevice.
    Присвоение параметру action значения "on" или "enable" отвечает за активацию узла после перезагрузки (см. Пример 7.4, «Добавление методов изоляции в cluster.conf» и Пример 7.5, «Несколько методов изоляции для одного узла»).
    Подробную информацию о unfence можно найти на справочной странице fence_node.
  4. Увеличьте значение config_version на единицу. Например, если исходное выражение выглядело как config_version="2", после изменения оно будет выглядеть так: config_version="3".
  5. Сохраните /etc/cluster/cluster.conf.
  6. Дополнительно можно выполнить проверку соответствия формата схеме в cluster.rng:
    [root@example-01 ~]# ccs_config_validate 
    Configuration validates
    
  7. Выполните cman_tool version -r, чтобы скопировать изменения на остальные узлы в кластере. При этом еще раз будет проверен формат файла. Предварительно убедитесь, что на всех узлах выполняется процесс ricci.
  8. Убедитесь, что конфигурация была скопирована.
  9. Раздел 7.4, «Настройка резервных доменов» содержит дальнейшую информацию.
При необходимости можно создать более сложные схемы изоляции, определив несколько методов для каждого узла и несколько устройств для каждого метода. Тогда если не удалось исключить узел согласно одному алгоритму, fenced выберет другой, затем третий и т.п.
Иногда для изоляции узла может потребоваться отключить два пути ввода-вывода или два порта питания. Для этого надо определить как минимум два устройства для одного метода. Процесс fenced запустит агент изоляции один раз для каждой строки fencedevice. Изоляция успешна при условии успешной изоляции всех устройств.
«Примеры настройки изоляции» содержит примеры сложной конфигурации.
Инструкции по настройке конкретных типов устройств можно найти на их справочных страницах (например, fence_apc). Приложение A, Параметры устройств изоляции, справочные файлы агентов изоляции в /usr/sbin/, схемы /usr/share/cluster/cluster.rng и /usr/share/doc/cman-X.Y.ZZ/cluster_conf.html (например, /usr/share/doc/cman-3.0.12/cluster_conf.html) содержат дополнительную информацию.

7.3.1. Примеры настройки изоляции

Примеры простой конфигурации с одним методом изоляции для каждого узла и одним устройством для каждого метода:
Примеры более сложных схем:

Примечание

Приведенные примеры могут быть модифицированы для достижения конкретной цели.

Пример 7.3. Добавление устройства APC в cluster.conf


<cluster name="mycluster" config_version="3">
   <clusternodes>
     <clusternode name="node-01.example.com" nodeid="1">
         <fence>
         </fence>
     </clusternode>
     <clusternode name="node-02.example.com" nodeid="2">
         <fence>
         </fence>
     </clusternode>
     <clusternode name="node-03.example.com" nodeid="3">
         <fence>
         </fence>
     </clusternode>
   </clusternodes>
   <fencedevices>
         <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/>
   </fencedevices>
   <rm>
   </rm>
</cluster>

Здесь в секцию fencedevices добавлен элемент fencedevice с параметрами agent, ipaddr, login, name и passwd.

Пример 7.4. Добавление методов изоляции в cluster.conf


<cluster name="mycluster" config_version="3">
   <clusternodes>
     <clusternode name="node-01.example.com" nodeid="1">
         <fence>
            <method name="APC">
              <device name="apc" port="1"/>
             </method>
         </fence>
     </clusternode>
     <clusternode name="node-02.example.com" nodeid="2">
         <fence>
            <method name="APC">
              <device name="apc" port="2"/>
            </method>
         </fence>
     </clusternode>
     <clusternode name="node-03.example.com" nodeid="3">
         <fence>
            <method name="APC">
              <device name="apc" port="3"/>
            </method>
         </fence>
     </clusternode>
   </clusternodes>
   <fencedevices>
         <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/>
   </fencedevices>
   <rm>
   </rm>
</cluster>

В этом примере для каждого из трех узлов будет добавлен метод APC для устройства с именем apc с уникальным номером порта. Например, для node-01.example.com будет выделен порт 1 (port="1"). Выражение (device name="apc") ссылается на одноименное устройство в секции fencedevices: fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example".

Пример 7.5. Несколько методов изоляции для одного узла


<cluster name="mycluster" config_version="3">
   <clusternodes>
     <clusternode name="node-01.example.com" nodeid="1">
         <fence>
            <method name="APC">
              <device name="apc" port="1"/>
             </method>
            <method name="SAN">
	      <device name="sanswitch1" port="11"/>
             </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="11" action="on"/> 
         </unfence
     </clusternode>
     <clusternode name="node-02.example.com" nodeid="2">
         <fence>
            <method name="APC">
              <device name="apc" port="2"/>
            </method>
            <method name="SAN">
	      <device name="sanswitch1" port="12"/>
             </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="12" action="on"/> 
         </unfence
     </clusternode>
     <clusternode name="node-03.example.com" nodeid="3">
         <fence>
            <method name="APC">
              <device name="apc" port="3"/>
            </method>
            <method name="SAN">
	      <device name="sanswitch1" port="13"/>
             </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="13" action="on"/> 
         </unfence
     </clusternode>
   </clusternodes>
   <fencedevices>
        <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/>
        <fencedevice agent="fence_sanbox2" ipaddr="san_ip_example"
login="login_example" name="sanswitch1" passwd="password_example"/>
   </fencedevices>
   <rm>
   </rm>
</cluster>


Пример 7.6. Изоляция с многопутевыми устройствами


<cluster name="mycluster" config_version="3">
   <clusternodes>
     <clusternode name="node-01.example.com" nodeid="1">
         <fence>
            <method name="SAN-multi">
	      <device name="sanswitch1" port="11"/>
	      <device name="sanswitch2" port="11"/>
	    </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="11" action="on"/>
             <device name="sanswitch2" port="11" action="on"/>
         </unfence
     </clusternode>
     <clusternode name="node-02.example.com" nodeid="2">
         <fence>
            <method name="SAN-multi">
	      <device name="sanswitch1" port="12"/>
	      <device name="sanswitch2" port="12"/>
            </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="12" action="on"/>
             <device name="sanswitch2" port="12" action="on"/>
         </unfence
     </clusternode>
     <clusternode name="node-03.example.com" nodeid="3">
         <fence>
            <method name="SAN-multi">
	      <device name="sanswitch1" port="13"/>
	      <device name="sanswitch2" port="13"/>
            </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="13" action="on"/>
             <device name="sanswitch2" port="13" action="on"/>
         </unfence
     </clusternode>
   </clusternodes>
   <fencedevices>
        <fencedevice agent="fence_sanbox2" ipaddr="san_ip_example"
login="login_example" name="sanswitch1" passwd="password_example"/> 
        <fencedevice agent="fence_sanbox2" ipaddr="san_ip_example"
login="login_example" name="sanswitch2" passwd="password_example"/> 
   </fencedevices>
   <rm>
   </rm>
</cluster>


Пример 7.7. Изоляция узлов с двумя источниками питания


<cluster name="mycluster" config_version="3">
   <clusternodes>
     <clusternode name="node-01.example.com" nodeid="1">
         <fence>
            <method name="APC-dual">
              <device name="apc1" port="1"action="off"/>
              <device name="apc2" port="1"action="off"/>
              <device name="apc1" port="1"action="on"/>
              <device name="apc2" port="1"action="on"/>
             </method>
         </fence>
     </clusternode>
     <clusternode name="node-02.example.com" nodeid="2">
         <fence>
            <method name="APC-dual">
              <device name="apc1" port="2"action="off"/>
              <device name="apc2" port="2"action="off"/>
              <device name="apc1" port="2"action="on"/>
              <device name="apc2" port="2"action="on"/>
            </method>
         </fence>
     </clusternode>
     <clusternode name="node-03.example.com" nodeid="3">
         <fence>
            <method name="APC-dual">
              <device name="apc1" port="3"action="off"/>
              <device name="apc2" port="3"action="off"/>
              <device name="apc1" port="3"action="on"/>
              <device name="apc2" port="3"action="on"/>
            </method>
         </fence>
     </clusternode>
   </clusternodes>
   <fencedevices>
       <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc1" passwd="password_example"/>
       <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc2" passwd="password_example"/>
   </fencedevices>
   <rm>
   </rm>
</cluster>


При настройке изоляции узла с двумя источниками питания необходимо настроить одновременное отключение их портов.