服务器技术

Docker上搭建LTS + Zookeeper

2017-05-17  本文已影响47人  GoGooGooo

由于工作需要定时任务,所以就用了LTS
http://git.oschina.net/hugui/light-task-scheduler

首先,说下踩了好几天的坑,由于Docker容器内的IP外部无法访问,尤其要注意JobTracker和Tasktarcker在监听端口和任务调度的时候,写入到Zookeeper中的IP,如果是Docker内的IP你无论怎么试都不可能通的。

废话不多说,下面把坑填平:

第一步,Docker 如何分配宿主机网段 IP

1. 查看宿主机的网关配置

[root@localhost network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
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
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 14:18:77:5d:47:93 brd ff:ff:ff:ff:ff:ff
inet 172.16.10.45/24 brd 172.16.10.255 scope global em1
valid_lft forever preferred_lft forever

可以看到用的网关配置在em1中,下面我们去看em1中的配置

[root@localhost /]# vi /etc/sysconfig/network-scripts/ifcfg-em1
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=em1
UUID=8187477b-c5dd-4c41-a97c-01e955dd25e3
DEVICE=em1
ONBOOT=yes
IPADDR0=172.16.10.45
IPADDR1=172.16.10.55
NETMASK0=255.255.255.0
NETMASK1=255.255.255.0
GATEWAY0=172.16.10.254
GATEWAY1=172.16.10.254
DNS1=202.106.0.20

可以看到可用的网段

#####2. 创建 macvlan 网络
>关于 Docker 网络模式这里不再细说;由于默认的网桥方式无法满足需要,所以需要创建一个 macvlan 网络

docker network create -d macvlan --subnet=172.16.10.0/24 --gateway=172.16.10.254 -o parent=em1 gitlab-net

解释下上面这段:
* subnet: 指定网段(宿主机)
* gateway: 指定网关(宿主机)
* parent: 注定父网卡(宿主机)
* gitlab-net 别名

>创建以后可以使用 docker network ls 查看

[root@localhost lts-example-tasktarcker-springboot]# docker network ls
NETWORK ID NAME DRIVER SCOPE
9bc3b477f850 bridge bridge local
6b7e1452cf1c gitlab-net macvlan local
d66b9819df04 host host local
a37b6526f0ce none null local


#####3. 创建容器指定网络
>```
docker run --net=gitlab-net --ip=172.16.10.54 -p 8091:8080 -t --name lts-tasktarcker-springboot lts-tasktarcker-springboot/1.7.0

解释下上面这段:

[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0342d44ddfa1 lts-tasktarcker-springboot/1.7.0 "java -Djava.secur..." 30 minutes ago Up 30 minutes lts-tasktarcker-springboot
3b3836879dad lts-jobtracker-springboot/1.7.0 "java -Djava.secur..." 43 minutes ago Up 43 minutes lts-jobtracker-springboot

可以看到我们的Docker容器已经启动成功。

接下来,就可以用172.16.10.54来访问容器了,ping一下就可以验证

➜ / ping 172.16.10.54
PING 172.16.10.54 (172.16.10.54): 56 data bytes
64 bytes from 172.16.10.54: icmp_seq=0 ttl=63 time=2.055 ms
64 bytes from 172.16.10.54: icmp_seq=1 ttl=63 time=2.128 ms



####后续我会吧,整个的LTS + Zookeeper集群的一步步部署给写出来~~
上一篇下一篇

猜你喜欢

热点阅读