Pracuję nad konfiguracją produkcji z Dockerem w trybie roju (używając Docker 17.03.1-ce). Będą zaangażowane 2 centra danych. W obu centrach danych wszystkie maszyny mają zarówno publiczny adres IP, jak i prywatny adres IP (lokalny do centrum danych) w sieci prywatnej, więc będą 2 sieci prywatne.
Ruch sieciowy przez prywatne interfejsy sieciowe jest bezpłatny, podczas gdy ruch przez interfejs publiczny nie przekracza pewnego limitu (i jest wolniejszy), więc w miarę możliwości wolałbym, aby ruch sieciowy przekraczał prywatne interfejsy.
Teraz z tego, co rozumiem (myślę), cały ruch między węzłami Docker w trybie roju przejdzie przez ten sam interfejs sieciowy, który jest używany do komunikowania się z mistrzami roju, które w moim przypadku będą musiały być publiczne, aby utworzyć sieć z wieloma DC możliwy. Najbardziej oczekiwany ruch będzie jednak między węzłami w tych samych kontrolerach domeny i byłoby bardzo miło, gdyby Docker mógł w jakiś sposób kierować ruch przez moje prywatne sieci, jeśli węzły źródłowy i docelowy znajdą się w tej samej sieci prywatnej.
Obawiam się, że nie jest to możliwe od razu po wyjęciu z pudełka, ponieważ mistrzowie roju nie wiedzą o tych prywatnych sieciach i adresach IP, które mają na nich węzły.
Jednym z rozwiązań, które mogłem wymyślić, jest skonfigurowanie sieci VPN i rozmieszczenie roju nad tym, ale to dodaje dodatkowej złożoności i wolałbym czyste rozwiązanie roju Docker.
Aktualizacja : jak zasugerowano w komentarzu, podstawą rozwiązania może być użycie iptables do kierowania ruchu wychodzącego do prywatnych adresów IP zamiast publicznych. Jeśli jednak chciałbym to zrobić, moim następnym problemem byłoby zarządzanie wszystkimi tymi regułami. Mając 10 serwerów w DC, potrzebowałbym 10 * 9 = 90 z nich, aby kierować cały możliwy ruch lokalny przez sieć prywatną. Mogę sobie wyobrazić, że może istnieje jakieś narzędzie, które mogłoby pomóc w takim zadaniu lub mógłbym je stworzyć, ale może jest to o wiele prostszy sposób.