Управление серверами и контейнерами Docker с помощью serf
Я использую Serf вместо того, чтобы связывать контейнеры вместе, чтобы я мог перезапустить контейнеры Docker без разрыва ссылок. На каждом сервере я запускаю один контейнер с открытыми портами Serf, на которые ссылается каждый другой локальный контейнер, а затем использует Serf для обнаружения других локальных контейнеров. Это прекрасно работает на одном сервере, но я хотел бы связать два сервера и заставить их обнаруживать службы, работающие на обоих из них, чтобы я мог в конечном итоге подключить другой подчиненный сервер, если захочу.
Проблема состоит в том, что, как только я соединяю их обоих, запустив serf join с IP-адресами других серверов, они вступают в контакт, но затем сразу же видят отказ другого сервера и его контейнеров, что логично.
Что я могу сделать, просто использовать один кластер для контейнеров и серверов? Или я могу использовать что-то еще для связи между серверами и контейнерами вместо своего взломанного решения?
1 ответ
То, что вы ищете, это аналог Serf, также Хашикорп, по имени Консул. Фактически Consul использует библиотеку Serf для некоторых базовых функций, но она используется для этой высокоуровневой оркестровки, особенно для кластеров, управляемых Serf. По моему опыту, Serf отлично подходит для организации контейнеров на одном хосте, а Consul отлично подходит для организации самих хостов, эффективно соединяя ваши экземпляры Serf так, как вы себе представляете (термин, который используется в документации Consul, - это поведение "осведомлен о центре данных").,