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

Управление серверами и контейнерами Docker с помощью serf

Я использую Serf вместо того, чтобы связывать контейнеры вместе, поэтому я могу перезапускать контейнеры Docker без разрыва ссылок. На каждом сервере я запускаю один контейнер с открытыми портами Serf, на которые ссылается любой другой локальный контейнер, а затем использую Serf для обнаружения других локальных контейнеров. Это отлично работает с одним сервером, но я хотел бы связать два сервера и заставить их обнаруживать службы, работающие на обоих из них, чтобы я мог в конечном итоге подключить еще один подчиненный сервер, если захочу.

Проблема в том, что как только я подключаю их обоих, запустив serf join с IP-адресами других серверов, они входят в контакт, но затем сразу же видят другой сервер и его контейнеры как неисправные, что логично.

Могу ли я использовать один кластер для контейнеров и серверов? Или есть что-нибудь еще, что я могу использовать для связи между серверами и контейнерами вместо моего собственного взломанного решения?

Вы ищете аналог Serf, также от Hashicorp, который называется Консул. Фактически, Consul использует библиотеку Serf для некоторых своих базовых функций, но она используется для этой высокоуровневой оркестровки, в частности, для кластеров, управляемых Serf. По моему опыту, Serf отлично подходит для оркестровки контейнеров на одном хосте, а Consul отлично подходит для оркестровки самих хостов, эффективно соединяя ваши экземпляры Serf так, как вы себе представляете (термин, используемый в документации Consul для этого, называется поведением "с учетом центра обработки данных") .