Три менаџери и пет работници на две локации, поврзани со тунел, и docker service ls покажува задачи што работат од двете страни, додека повиците меѓу услугите истекуваат. Ништо во дневниците на Swarm не изгледа погрешно. Таа комбинација е потпис на проблем во рамнината на податоци: контролната рамнина ги најде јазлите, а инкапсулираните рамки никогаш не го поминаа патот.

Мрежата мора да постои пред overlay

Overlay на Swarm турка инкапсулирани рамки директно меѓу адресите на јазлите, што значи секој јазол треба адреса до која секој друг јазол може да стигне без превод, на интерфејсот што го обезбедува тунелот. Тунел што пренесува само клиенти до објавен порт не е доволен. Долниот слој мора да рутира од јазол до јазол во двете насоки.

Тестирајте го тоа пред да го допрете Swarm. Од секој јазол проверете ја рутата до тунелската адреса на партнерот, пингнете ја и потоа тестирајте го контролниот порт. Ако ping работи, а портот не, тунелот е во ред и филтер стои на патот.

ip -brief address
ip route get 10.20.0.12
ping -c3 10.20.0.12
nc -vz 10.20.0.12 2377

Ако рутата покажува на физичкиот интерфејс наместо на tun0 или wg0, overlay ќе инкапсулира на адреса до која далечната локација не може да стигне, и симптомот ќе изгледа како загуба на пакети.

Проверете која адреса ја објавува секој јазол

Демонот објавува една адреса и партнерите ја користат за рамнината на податоци. На домаќин со повеќе мрежи лесно е да се објави LAN или јавната адреса додека тунелот носи нешто друго. Проверете ја наместо да претпоставувате и фиксирајте ја при придружувањето со --advertise-addr кога стандардната е погрешна. Јазол што објавува адреса достапна само нему сепак се придружува на swarm, а дефектот подоцна се појавува како услуги што не можат да комуницираат меѓу локации.

Менувањето на објавената адреса подоцна не е уредување на конфигурацијата, зашто јазолот мора да излезе и повторно да се придружи.

Запишете ја објавената адреса по јазол во вашите белешки, зашто тоа објаснува повеќето асиметрични дефекти.

Masquerade е вообичаениот виновник

Кога порта стои меѓу јазлите и тунелот, вообичаената грешка е да се примени masquerade на сè што излегува од физичкиот интерфејс. Тоа ги препишува и внатрешните адреси на overlay, па секој партнер изгледа како да доаѓа од портата и VXLAN партнерите престануваат да се препознаваат. Резултатот е исчезнат или еднонасочен инкапсулиран сообраќај додека обичните ping сè уште работат.

Рутирајте го префиксот на overlay преку портата и оставете го непреведен. Ако преводот навистина е потребен за друг префикс, ограничете го таму и никогаш на опсегот што го користи overlay.

ip route add 172.16.0.0/22 via 10.20.0.1
iptables -t nat -I POSTROUTING -o tun0 -s 172.16.0.0/22 -j ACCEPT

Проверете го редоследот на правилата како и текстот, зашто широко MASQUERADE порано во синџирот победува тесен исклучок подоцна.

VXLAN бара простор во пакетот

VXLAN додава 50 бајти на рамките што ги носи. Долен слој од 1500 бајти што носи внатрешна рамка од 1500 бајти создава инкапсулиран пакет што ниту еден пат нема да го достави, а дефектот изгледа како повремено откривање услуги, а не како проблем со големина. Или намалете го MTU на тунелот на двата краја или поставете го MTU на overlay така што драјверот ќе објави корисен товар што се собира.

docker network create --driver overlay --attachable --opt com.docker.network.driver.mtu=1400 swarm-overlay

Ingress мрежата се создава автоматски, па нејзината промена значи отстранување и повторно создавање, а не уредување на место.

Ако поправите само една страна од тунелот, помалиот MTU сепак останува тој што е важен.

Гледајте ја рамнината на податоци, а не дневниците

Фатете го портот VXLAN на двата краја. Рамките што излегуваат од едната страна и пристигнуваат на другата значат дека долниот слој е во ред и проблемот е внатре во overlay. Рамките што заминуваат и никогаш не пристигнуваат значат рута или филтер. Рамките што воопшто не заминуваат значат дека изворната адреса е погрешна.

Дефектите во откривањето услуги што исчезнуваат по неколку секунди обично укажуваат на буџетот за пакети или на нестабилен пат, а не на raft кворум.

Зачувајте го снимањето од работен прозорец, зашто споредувањето со расипаниот е побрзо од повторно читање на конфигурацијата.

Поврзани статии