Кластеризация с использованием Etcd
Недавно на одном из проектов перед нами поставили задачу — разработать кластеризируемую систему для управления гипервизорами. Таким образом заказчик хотел сохранить высокую доступность и отказоустойчивость системы, а также обеспечить связность при работе в географически разнесенных Data-центрах. В итоге мы рассмотрели кучу вариантов, но остановились на Etdc.
Чтобы запустить кластер Etcd, нужно как минимум три узла. Число узлов всегда будет нечетным. Так мы обеспечиваем кворум. В различных гайдах и инструкциях рекомендуется использовать три или пять узлов, максимум — семь. Если сделать больше узлов, это снизит производительность, поскольку на сбор кворума будет уходить больше времени.
Поясню: у нас практически любая операция должна получить кворум от всех узлов, поэтому чем больше узлов — тем ниже скорость операции.
Чтобы обойти это, можно подключить так называемый Learner, то есть не голосующую ноду. Она, как и остальные, синхронизируется с кластером, но не голосует. Если одна нода у нас выбывает, Learner можно быстро включить.
Что касается кластера Etcd, разделенного между Data-центрами, то, если мы будем использовать два Data-центра, система не будет High Availability. В таком случае лучше использовать третий Data-центр, так называемую кворумную площадку. Это может быть любая виртуальная машина в третьем месте, вплоть до ноутбука системного администратора.
Об опыте работы с Etcd рассказываем в большой статье. Делитесь мнением в комментариях.