Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Да, сервисы в Consul, на них healthcheck'и.
Балансировка — типа Traefik, но свой велосипед. Когда всё это делалось Traefik только появился и чем-то не устроил, чего-то не хватало.
Там ничего необычного. Обычный nginx, с конфигом, формируемым consul-template. Список сервисов берётся из Consul по тегам + дополнительная конфигурация по сервисам — из Consul KV. Конфиг формируется, там все локейшены/апстримы и при изменениях nginx перечитывает конфиг. Апстримы сервисов добавляются/удаляются из апстримов nginx, соответственно.
Сервисы nginx прибиты к конкретным серверам с ролью "балансер". В DNS у сайтов прописаны все эти адреса. Это "домашний" кластер.
В рабочем примерно так же, но там ещё AS поверх DNS.
tags = [
"traefik.enable=true",
"traefik.frontends.A.rule=Host:site1.ru;PathPrefix:/api",
"traefik.frontends.B.rule=Host:site2.ru;PathPrefix:/api",
] template {
data = <<EOH
{{ range ls "backend" }}
{{ .Key }}={{ .Value }}{{ end }}
EOH
destination = "secrets/file.env"
env = true
}— можно крутить все без докера, если golang или java
Nomad: проблемы и решения