swarm 모드 (Docker 17.03.1-ce 사용)에서 Docker로 프로덕션 설정을 작업 중입니다. 2 개의 데이터 센터가 관련됩니다. 두 데이터 센터 모두에서 모든 시스템은 사설 네트워크에 퍼블릭 IP와 사설 (로컬-데이터 센터) IP를 모두 가지고 있으므로 2 개의 사설 네트워크가 있습니다.
개인 네트워크 인터페이스를 통한 네트워크 트래픽은 무료이지만 공용 인터페이스를 통한 트래픽은 제한이 없으며 속도가 느리므로 가능한 경우 개인 인터페이스를 통해 네트워크 트래픽을 처리하는 것이 좋습니다.
이제 내가 이해하는 것에서 (스마일) swarm 모드의 Docker 노드 사이의 모든 트래픽은 swarm 마스터와 통신하는 데 사용되는 것과 동일한 네트워크 인터페이스를 통과합니다.이 경우 다중 DC 네트워킹을 수행하려면 공개 인터페이스가되어야합니다 가능한. 그러나 대부분의 예상 트래픽은 동일한 DC의 노드 사이에 있으며 소스 및 대상 노드가 동일한 개인 네트워크에있는 경우 Docker가 어떻게 내 개인 네트워크를 통해 트래픽을 라우팅 할 수 있다면 좋을 것입니다.
웜 마스터는 이러한 개인 네트워크와 노드가 가지고있는 IP에 대해 알지 못하기 때문에 이것이 가능하지 않을 수도 있습니다.
내가 생각할 수있는 한 가지 솔루션은 VPN을 설정하고 그 위에 웜을 배포하는 것입니다. 그러나 이것은 추가 복잡성을 추가하며 순수한 Docker 웜 솔루션을 선호합니다.
업데이트 : 의견에서 제안한 것처럼 솔루션의 기초는 iptables를 사용하여 나가는 트래픽을 퍼블릭 IP 대신 프라이빗 IP로 라우팅하는 것일 수 있습니다. 그러나이 작업을 수행하려면 다음 문제는 이러한 모든 규칙을 관리하는 방법입니다. DC에 10 대의 서버가 있으면 개인 네트워크를 통해 가능한 모든 로컬 트래픽을 라우팅하려면 10 * 9 = 90 개의 서버가 필요합니다. 그러한 작업을 지원하거나 만들 수있는 도구가 있다고 생각할 수 있지만 훨씬 간단한 방법이 있습니다.