(no subject)

Jan 14, 2019 01:16

Вот, скажем, ElasticSearch. Для того, чтобы избежать ситуации split brain, надо конфигурировать три узла - чтобы при потере любого из них оставшиеся смогли выбрать главного. Допустим, один из них может не хранить данные, а только участовать в выборах - но это всё равно процесс, который надо где-то гонять.

А если у меня есть WSFC (Windows Server Failover Cluster) о двух серверах + witness (общий диск или общая папка на третьем хосте), то почему бы не гонять ElasticSearch как "роль" на этом кластере? Это ж просто Windows service, в конце концов. На одном сервере опустили - на другом тут же подняли. Нужен общий диск для данных, конечно, что будет мигрировать вместе с сервисом.

Да, не будет распределения нагрузки и будет некоторый downtime во время фэйловера. Но если это пофигу, то вай бы и нот, действительно?

Update: не, для узлов с данными идея плоха. Фэйловер-то отрабатывается гладко, но только активация шардов может занять кучу времени, во время которого кластер будет в red state.

Зато если у нас есть узел кластера, который занимается исключительно выборами мастера или становится мастером сам, но данных не содержит - то его посадить на WSFC вполне реально. Фэйловер занимает секунд 15, и никому от этого плохо не становится - максимум роль мастера перейдёт к другому узлу.

Если у нас есть множество кластеров ElasticSearch о двух серверах, то можно создать один такой центальный WSFC, который будет гонять множество таких вот "master-only" узлов - один на кластер.

computing

Previous post Next post
Up