Size: a a a

2020 November 25

AS

Artem Savinov in rannts
А как запрос делаешь? Dns свой или провайдерский?
источник

AS

Artem Savinov in rannts
*сервер
источник

RB

Roman Bolkhovitin in rannts
$ dig @8.8.8.8 google.com

;; ANSWER SECTION:
google.com.    24  IN  A  64.233.165.113
google.com.    24  IN  A  64.233.165.139
google.com.    24  IN  A  64.233.165.100
google.com.    24  IN  A  64.233.165.138
google.com.    24  IN  A  64.233.165.102
google.com.    24  IN  A  64.233.165.101
источник

RB

Roman Bolkhovitin in rannts
падазрительна
источник

БС

Байт Словович... in rannts
что удивительно, ya.,ru только одни айпишнег возвращает, а Yandex.ru уже 4...
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Хм, похоже не подходит мне запрос через DNS. У меня docker, и он оказывается не через DNS round-robin всё делает, а через какой-то балансировщик. Т.е. интересующий меня хост ведёт на IP адрес, который не принадлежит ни одному контейнеру. А два контейнера в которые он роутится имеют совсем другие IP адреса.
источник

RB

Roman Bolkhovitin in rannts
ты из контейнера реолвишь?
у 127.0.0.11:53 спрашиваешь?
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Ааа, нахрен это всё - проще руками писать конфиг один раз.
Я просто хотел сделать поддержку скейлинга средствами docker swarm, но при этом реализовать балансировку по хешу от параметра в URL-е.
Но вся эта бадяга скорее всего будет плохо дружить с blue-green deploy, когда у меня одновременно будет старая версия контейнера и обновлённая. На старую надо продолжать гнать пакеты по старым конектам, а новые конекты пихачить в новый контейнер. Если я в этот момент сделаю reload для конфига haproxy, то есть вероятность, что потеряю старые конекты.

Мне не надо скейлить сервисы каждый день, потому проще не юзать возможности масштабирования от докера, а самому руками поднимать столько контейнеров, сколько нужно. И прописать их явно в конфиг для haproxy
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Roman Bolkhovitin
ты из контейнера реолвишь?
у 127.0.0.11:53 спрашиваешь?
я через ping смотрю на IP адрес 😊
источник

RB

Roman Bolkhovitin in rannts
в сворме из-за оверлейной сети наверное чудеса какие-нибудь происходят, а на голом докер-композе все более-менее предсказуемо. я в песочнице как-то игрался с хапрокси и балансировкой по днс и оно завелось, и прометей тоже завелся, в смысле дискавери в нем
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Ну у меня swarm в рамках одной ноды, поэтому там скорее всего не должно как-то сильно аффектить эта оверлейная сеть
источник

KK

Kirill (Cykooz) Kuzm... in rannts
docker-compose вероятно как-то так же работает в плане балансировки при скалировании контейнеров - просто запускает в докере специальный балансировщик. Это более надёжно чем DNS round-robin, т.к. обычно приложения стараются кешировать ответы DNS и в этом случае round-robin будет фигово работать
источник

RB

Roman Bolkhovitin in rannts
емнип в композе вообще никакой магии нет и если у тебя конфиг типа

services:
   server:
       ports:
         - 8080:8080


и ты сделаешь scale, то контейнеров будет сколько скажешь, а ходить через 8080 будешь все время в первый контейнер и надо делать как-то типа:

services:
   server:
       ports:
         - "8080-8090:8080"

тогда появится возможность ходить в несколько контейнеров

а в сворме уже появляется балансировка трафика силами самого сворма, но я не помню нюансов
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Нет, не на первый будешь ходить, а на все с раунд-робином
источник

KK

Kirill (Cykooz) Kuzm... in rannts
В самом докере просто поднимается балансер, на который вешается хост с именем твоего сервиса
источник

RB

Roman Bolkhovitin in rannts
источник

SZ

Sergey Z in rannts
Ого, если в композе указать диапазон, то достучаться можно до всех контейнеров? А как порты биндиться будут? Я думал скрипты какие-то костылять надо.
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Но в целом это настраивается как-то. Вот для swarm можно указать будет у тебя DNS round-robin, или через vIP

   endpoint_mode: vip - Docker assigns the service a virtual IP (VIP) that acts as the front end for clients to reach the service on a network. Docker routes requests between the client and available worker nodes for the service, without client knowledge of how many nodes are participating in the service or their IP addresses or ports. (This is the default.)

   endpoint_mode: dnsrr - DNS round-robin (DNSRR) service discovery does not use a single virtual IP. Docker sets up DNS entries for the service such that a DNS query for the service name returns a list of IP addresses, and the client connects directly to one of these. DNS round-robin is useful in cases where you want to use your own load balancer, or for Hybrid Windows and Linux applications.
источник

RB

Roman Bolkhovitin in rannts
Kirill (Cykooz) Kuzminykh
Нет, не на первый будешь ходить, а на все с раунд-робином
что-то у меня в композе первый вариант вообще подниматься не хочет, один инстанс запускает, а при скейлинге говорит port already allocated, хотя вроде когда-то такой вариант заводился, просто балансировка не работала.... что ж склероз и фантомные воспоминания делают то )
источник

RB

Roman Bolkhovitin in rannts
Sergey Z
Ого, если в композе указать диапазон, то достучаться можно до всех контейнеров? А как порты биндиться будут? Я думал скрипты какие-то костылять надо.
диапазон можно, а вот как конкретно оно будет мапиться - ХЗ )))
источник