ADSL代理之单线多播(docker部署)

安装ovs
rpm -ivh openvswitch-2.5.0-1.x86_64.rpm && /etc/init.d/openvswitch start
配置OVS
[root@squid-nj-51-11 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0 
BOOTPROTO="static"
DEVICE="br0"
ONBOOT="yes"
IPADDR=10.0.51.11
NETMASK=255.255.255.0
HOTPLUG=no
[root@squid-nj-51-11 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=static
root@squid-nj-51-11 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO="static"
DEVICE=eth1
ONBOOT="yes"
ovs-vsctl add-br br0  
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port br0 eth1

[root@squid-nj-51-11 ~]# ovs-vsctl show
Bridge "br0"
Port "eth1"
Interface "eth1"
Port "eth0"
Interface "eth0"
Port "br0"
Interface "br0"
type: internal
ovs_version: "2.5.0
配置Dockerfile
[yongjianhu@puppet adsl]$ cat Dockerfile 
FROM tcr.tuniu.io/public/centos:6.7
RUN yum install -y net-tools squid openssh-server rp-pppoe iptables vim-enhanced traceroute passwd sudo
RUN echo '"02512787188" * "093627"' >> /etc/ppp/pap-secrets
RUN echo "nameserver 218.2.135.1" > /etc/resolv.conf
ADD ifcfg-ppp0 /etc/sysconfig/network-scripts
ADD squid.conf /etc/squid
ADD options /etc/ppp
ADD iptables /etc/sysconfig
ADD sudoers /etc
ADD service.sh /opt
编译并上传Harbor仓库
docker build -t tcr.tuniu.io/adsl/adsl . --no-cache
docker push tcr.tuniu.io/adsl/adsl

服务器安装docker-engine及pull镜像
docker pull tcr.tuniu.io/adsl/adsl:02512787188
批量启动docker实例
#!/bin/bash
start() {
cat /root/adsl.txt |grep -Ev "^#|^$" | while read id ip
do
docker run --name=adsl$id -itd --net=none --privileged tcr.tuniu.io/adsl/adsl:02512787190 /bin/bash
ovs-docker add-port br0 eth0 adsl$id --ipaddress=$ip
docker exec -itd adsl$id "/opt/service.sh"
echo -e "\033[32;1mAdd adsl$id ok!\033[0m"
done
}
stop() {
docker ps | grep -E adsl[0-9]{2} &> /dev/null
if [ $? -eq 0 ];then
for id in `docker ps | grep -E adsl[0-9]{2} |awk '{print $10}'`
do
docker stop $id &> /dev/null && docker rm $id &> /dev/null
echo -e "\033[31;1mDelete $id ok!\033[0m"
done
else
exit 1
fi
#ovs-vsctl show |grep -Ev "eth0|eth1|br0" |grep Port |awk '{print $2}' |awk -F\" '{print $2}'
ovs-vsctl show |grep -Ev "eth0|eth1|br0" |grep Port |awk '{print $2}' |awk -F\" '{print $2}'| grep l &> /dev/null
#ovs-vsctl show |grep "No such device" &> /dev/null
if [ $? -eq 0 ];then
for i in `ovs-vsctl show |grep "No such device" |awk '{print $7}'`
do
ovs-vsctl del-port br0 $i
done
else
exit 2
fi
}
test() {
cat /root/adsl.txt |grep -Ev "^#|^$" | while read id ip
do
ip=`echo $ip| awk -F/ '{print $1}'`
curl -x $ip:3000 "http://ip.cn"
done

}
case "$1" in
start)
start
;;
stop)
stop
;;
test)
test
;;
*)
echo $"Usage: $0 {start|stop|test}"
exit 3
esac
0%