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

Как правильно настроить двухузловую систему glusterfs?

Я пытаюсь создать двухузловые 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 в кластер, но не размещайте хранилище. Вся причина их существования - поддерживать состояние кластера. Они могут находиться в разных стойках, центрах обработки данных, фазах питания, чтобы попытаться убедиться, что они находятся в другом домене сбоя, чем блоки хранилища. Это увеличит количество членов в кластере и увеличит ваши шансы получить мажоритарный раздел, если один из блоков хранения появится без другого.

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