Я пытаюсь создать двухузловые Linux-серверы с высокодоступным apache, используя glusterfs 3.7.6 для репликации данных и pacemaker + corosync в качестве диспетчера ресурсов. Однако я вижу проблему с gluster в конкретном сценарии, когда оба узла выключаются, и один из них сначала подключается к сети. Несмотря на то, что на этом узле есть кирпич и служба gluster работает, процесса кирпича нет.
[root@node1 ~]# gluster volume status data
Status of volume: data
Gluster process TCP Port RDMA Port Online Pid
------------------------------------------------------------------------------
Brick node1:/gluster_data N/A N/A N N/A
NFS Server on localhost N/A N/A N N/A
NFS Server on localhost N/A N/A N N/A
Task Status of Volume data
------------------------------------------------------------------------------
There are no active volume tasks
И когда я запускаю другой узел, кажется, все работает, и я могу смонтировать том.
[root@node1 ~]# gluster volume status data
Status of volume: data
Gluster process TCP Port RDMA Port Online Pid
------------------------------------------------------------------------------
Brick node1:/gluster_data 49152 0 Y 2674
Brick node2:/gluster_data 49152 0 Y 3086
NFS Server on localhost N/A N/A N N/A
Self-heal Daemon on localhost N/A N/A Y 2796
NFS Server on node2 N/A N/A N N/A
Self-heal Daemon on node2 N/A N/A Y 3085
Task Status of Volume data
------------------------------------------------------------------------------
There are no active volume tasks
И на этом этапе, если я завершите работу node2, процесс блока node1 останется активным, так что по крайней мере я могу смонтировать и использовать его.
[root@node1 ~]# gluster volume status data
Status of volume: data
Gluster process TCP Port RDMA Port Online Pid
------------------------------------------------------------------------------
Brick node1:/gluster_data 49152 0 Y 2674
NFS Server on localhost N/A N/A N N/A
Self-heal Daemon on localhost N/A N/A Y 2796
Task Status of Volume data
------------------------------------------------------------------------------
There are no active volume tasks
Итак, по моим наблюдениям, для работы тома gluster оба узла должны быть подключены хотя бы на мгновение, чтобы блоки могли запуститься, а затем если один узел выйдет из строя, это не повлияет на работу тома. Итак, как я могу заставить его работать, когда один из узлов выходит из строя после полного отключения электроэнергии?
Проблема, которая возникает у любого узла кластера при выходе из полной остановки:
Есть ли у меня последнее состояние, или нет? Я не хочу утверждать
последнее
, если я отстаю от других узлов.
Вот почему кластеризация очень часто включает некий механизм кворума, так что существующие узлы могут голосовать по состоянию и сходятся по консенсусу. Два узловых кластера не могут использовать этот механизм, так как никогда не будет раздела "большинство". В релизе 3.7 Gluster получил возможность кворума.
http://gluster.readthedocs.org/en/release-3.7.0beta1/Features/server-quorum/
В этом документе говорится, что 2-узловые кластеры не могут его использовать по той самой причине, которую я описал выше.
В вашем случае, вы можете подумать о создании некоторых узлов, предназначенных только для управления, в вашей установке Gluster. Это будут пэры, которые опробованы
в кластере, но не содержат никаких хранилищ. Вся их причина существования будет заключаться в поддержании состояния кластера. Они могут существовать в различных стойках, центрах данных, фазах питания, чтобы попытаться убедиться, что они находятся в другом отказоустойчивом домене, нежели кирпичи хранилища. Это увеличит количество членов в кластере, а также повысит ваши шансы иметь раздел большинства, если один из блоков хранилища окажется без другого.
Неожиданно, поведение, которое вы видите, следующее: работает по назначению и не может быть изменено без добавления дополнительных серверов в кластер.
.