Я пытаюсь создать двухузловые 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 Volume оба узла должны быть подключены хотя бы на мгновение, чтобы кирпичи могли запуститься, а затем, если один из узлов выйдет из строя, это не повлияет на работу тома. Итак, как я могу заставить его работать, когда один из узлов выходит из строя после полного отключения электроэнергии?
Проблема, с которой сталкивается любой узел кластера при выходе из точки:
У меня последнее состояние или нет? Я не хочу требовать
latest
если я отстаю от других узлов.
Вот почему кластеризация очень часто включает в себя какой-то механизм кворума, поэтому существующие узлы могут голосовать за состояние и сходиться на консенсусе. Кластеры с двумя узлами не могут использовать этот механизм, поскольку никогда не будет «мажоритарного» раздела. В выпуске 3.7 Gluster получил функцию кворума.
http://gluster.readthedocs.org/en/release-3.7.0beta1/Features/server-quorum/
В этом документе они заявляют, что двухузловые кластеры не могут использовать его по той самой причине, которую я описал выше.
В вашем случае вы можете рассмотреть возможность создания некоторых узлов только для управления в вашей настройке Gluster. Это будут коллеги, которые probed
в кластер, но не размещайте хранилище. Вся причина их существования - поддерживать состояние кластера. Они могут находиться в разных стойках, центрах обработки данных, фазах питания, чтобы попытаться убедиться, что они находятся в другом домене сбоя, чем блоки хранилища. Это увеличит количество членов в кластере и увеличит ваши шансы получить мажоритарный раздел, если один из блоков хранения появится без другого.
К сожалению, поведение, которое вы видите, работает как задумано и не может быть изменен без добавления дополнительных серверов в кластер.