macvlan
ネットワークに基づいた1つの追加インターフェイスを持つDocker Swarmスタック内のサービスが必要です。これは、このサービスのJBoss Clusterが、現在オーバーレイネットワークでサポートされていないIPマルチキャストを介して通信する必要があるためです。MACVLANネットワークのDocker Swarmコンテナが間違ったゲートウェイになりました - インターネットにアクセスできない
私はそのようmacvlan
ネットワークを作成しました:
# Worker 1:
docker network create --config-only --subnet 10.140.0.0/16 -o parent=ens224.800 --ip-range 10.140.1.0/24 swarm-multicast-config-only
# Worker 2:
docker network create --config-only --subnet 10.140.0.0/16 -o parent=ens224.800 --ip-range 10.140.2.0/24 swarm-multicast-config-only
# Worker 3:
docker network create --config-only --subnet 10.140.0.0/16 -o parent=ens224.800 --ip-range 10.140.3.0/24 swarm-multicast-config-only
# Master:
docker network create -d macvlan --scope swarm --internal --config-from swarm-multicast-config-only swarm-multicast
マルチキャストは、クラスタの形のように完全に正常に動作します。
しかし: とすぐに私は私のコンテナのいずれかにこのmacvlan
ネットワークを割り当てるように、このコンテナは、もはやインターネットにアクセスすることができます。 macvlan
ネットワークのないすべてのコンテナは正常に動作します。
は、ここに私のスタックファイルです:
version: '3.3'
services:
### Backend ###
petshop-backend:
image: com-registry.xxx.local/petshop-backend:100
extra_hosts:
- "petshop-db:10.164.210.214"
networks:
- backend
- external_access
deploy:
mode: replicated
replicas: 3
### USER INTERFACE ###
petshop-ui:
image: com-registry.xxx.local/petshop-ui:107
networks:
external_access:
backend:
swarm-multicast:
aliases:
- ui-multicast
ports:
- "1002:8080"
deploy:
mode: replicated
replicas: 3
networks:
external_access:
driver: overlay
internal: false
backend:
driver: overlay
internal: true
swarm-multicast:
external: true
私はインターネットにアクセスするためにpetshop-ui
のコンテナを有効にするにはどうすればよいですか? 彼らはmacvlan
ネットワークの範囲からですが、存在しない10.140.1.0のデフォルトゲートウェイを取得します。ここpetshop-ui
コンテナのいずれかのルーティングテーブルがあります:例えばワーキングインターネットアクセス
[[email protected] /]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.140.1.0 0.0.0.0 UG 0 0 0 eth2
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth4
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.140.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth2
10.255.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth3
コンテナ、 petshop-backend
はデフォルトゲートウェイとして172.18.0.1
を持っています。ここでは、そのようなルーティングテーブルです:
[[email protected] /]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.18.0.1 0.0.0.0 UG 0 0 0 eth2
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth2
移動 'EXTERNAL_ACCESSで下へfalse'のは、それはおそらく –
@TarunLalwani働くだろう - 完璧に動作します。これはあまり透明ではないようですが。どうもありがとうございます! – t3chris