如何为多宿主的Docker容器添加(静态)多播路由?

我们希望将用户stream量与应用内部stream量分开,以便设置多宿主主机并安装Docker。 Docker容器连接到两个networking接口(主networking是连接到主机eth0的默认网桥接口,第二个接口通过MACVLAN连接到主机的eth1)。 正常的stream量正常工作,但我们希望将应用(Hazelcast,Tomcat)组播stream量引导到第二个接口:

# docker run --rm -ti myImage bash # docker network connect macvlantest <containerid> 

IP地址分配正确:

 [root@7ac12ba74a6e /]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2769: eth0@if2770: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 02:42:ac:11:00:31 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.17.0.49/16 scope global eth0 valid_lft forever preferred_lft forever 2771: eth1@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/ether 02:42:ac:1d:01:06 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.29.1.6/16 scope global eth1 valid_lft forever preferred_lft forever 

旋转看起来还好:

 # ip route default via 172.17.0.1 dev eth0 172.17.0.0/16 dev eth0 proto kernel scope link src 172.17.0.49 172.29.0.0/16 dev eth1 proto kernel scope link src 172.29.1.6 

当然,现在可以手动添加静态路由来将stream量引导到第二个接口。 这将需要通过--cap-add NET_ADMIN ,find与正确的networking接口,并分配实际的组播路由。

有没有什么办法默认添加静态路由到容器? 还是有更好的方式来处理与Docker容器的组播stream量?

谷歌search显示没有什么有用的多播和multihoming相关。

Interesting Posts