VPN-ээр Docker Swarm: даалгавар ажиллаж байгаа ч үйлчилгээний дуудлага бүтэлгүйтэж байна
Хоёр сайт дээр даалгавар ажиллаж байгаа ч үйлчилгээнүүдийн хоорондын дуудлага хугацаа хэтэрч байна. Overlay-д зангилаа хоорондын маршрут, орчуулаагүй хаяг, VXLAN-д 50 байтын зай хэрэгтэй.
Хоёр сайт дахь гурван менежер, таван ажилчин туннелээр холбогдсон бөгөөд docker service ls хоёр талд ажиллаж буй даалгавруудыг харуулж байхад үйлчилгээнүүдийн хоорондын дуудлага хугацаа хэтэрч байна. Swarm-ын логт ямар нэгэн буруу зүйл харагдахгүй байна. Энэ хослол нь өгөгдлийн хавтгайн асуудлын шинж: удирдлагын хавтгай зангилаануудыг олсон боловч капсуллагдсан фрэймүүд замналаа туулж чадаагүй.
Сүлжээ overlay-ээс өмнө байх ёстой
Swarm-ын overlay капсуллагдсан фрэймүүдийг зангилааны хаягуудын хооронд шууд түлхдэг, энэ нь зангилаа бүрд бусад бүх зангилаа орчуулгагүйгээр хүрч чадах хаяг туннелийн өгч буй интерфэйс дээр хэрэгтэй гэсэн үг. Зөвхөн клиентүүдийг нийтэлсэн порт руу зөөдөг туннель хангалтгүй. Доод давхарга хоёр чиглэлд зангилаанаас зангилаа руу маршрутлах ёстой.
Swarm-д хүрэхээс өмнө үүнийг шалгаарай. Зангилаа бүрээс хамтрагчийн туннелийн хаяг руу маршрутыг шалгаж, ping хийгээд дараа нь удирдлагын портыг шалгана. Хэрэв 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-г бууруул, эсвэл драйвер багтах ачааг зарлахаар overlay-ийн MTU-г тохируул.
docker network create --driver overlay --attachable --opt com.docker.network.driver.mtu=1400 swarm-overlay
ingress сүлжээ автоматаар үүсдэг тул өөрчлөх гэдэг нь байранд нь засах биш, устгаж дахин үүсгэх гэсэн үг.
Зөвхөн туннелийн нэг талыг зассанаар жижиг MTU л чухал хэвээр байна.
Лог биш, өгөгдлийн хавтгайг ажигла
VXLAN портыг хоёр үзүүрт барьж ав. Нэг талаас гарч нөгөө талд хүрэх фрэйм нь доод давхарга зүгээр, асуудал overlay дотор байгааг илтгэнэ. Гарч хэзээ ч хүрэхгүй фрэйм нь маршрут эсвэл шүүлтүүр гэсэн үг. Огт гарахгүй фрэйм нь эх хаяг буруу гэсэн үг.
Хэдэн секундын дараа арилах үйлчилгээ илрүүлэх алдаа нь ихэвчлэн пакетын төсөв эсвэл тогтворгүй зам руу заадаг, raft кворум руу биш.
Ажиллаж байсан цонхны бичлэгийг хадгал, учир нь түүнийг эвдэрсэнтэй харьцуулах нь тохиргоог дахин уншихаас хурдан.