Chinaunix首页 | 论坛 | 博客
  • 博客访问: 314421
  • 博文数量: 52
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 577
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-27 14:21
个人简介

知道自己该干嘛,知道自己能干嘛

文章分类

全部博文(52)

文章存档

2019年(1)

2018年(8)

2017年(2)

2016年(11)

2015年(3)

2014年(10)

2013年(17)

我的朋友

分类: 系统运维

2016-07-06 00:07:09


                              好久没写东西了,把最近学习的 docker 简单的做个部署记录, 这次我们要部署一个 docker swarm 集群,
以及docker daemon之间用来通信的overlay网络。
 
                                                 部署环境:
                                                                centos 7.2
                                                                docker engine:  1.11.2
                                                                swarm version:  swarm/1.2.3
                                                 
                                                 部署步骤:
                                                                (1) 部署docker daemon
                                                                (2) 部署 swarm 集群 ,本例为 一个 manager , 两个 node
                                                                (3) 创建 overlay 网络 ,测试跨 deamon之间的网络连通性以及是否能提供NS服务支持

                                                 开始部署:
                                                                step 1 :  setup docker daemon
                                                                              (1) yum update
                                                                              (2) tee /etc/yum.repos.d/docker.repo <<-'EOF' 
                                                                                           name=Docker Repository
                                                                                           baseurl=
                                                                                           enabled=1 
                                                                                           gpgcheck=1 
                                                                                           gpgkey=
                                                                                           EOF  
                                                                                                   (创建用于 yum 安装的官方 repo 文件)
                                                                              (3) yum -y install docker-engine
                                                                              (4) mkdir  /etc/systemd/system/docker.service.d/
                                                                              (5) vim /etc/systemd/system/docker.service.d/docker.conf 
                                                                                    [Service]
                                                                                    ExecStart=
                                                                                    ExecStart=/usr/bin/docker daemon -H tcp://0.0.0.0:2375  \
                                                                                                     -H unix:///var/run/docker.sock  \
                                                                                                     --insecure-registry=registry.XXOO.com:5000  \
                                                                                                     --cluster-advertise=eth0:2375  \
                                                                                                     --cluster-store consul://10.3.1.141:8500
                                                                              (6)  systemctl start docker
                                                                                                      其他两个节点同理部署
                             
                                                                step2 :  deploy swarm cluster
                                                                                
                                                                              node 分布:
                                                                              swarm mananger : 10.3.1.141
                                                                              swarm node: 10.3.1.234 10.3.1.60
                                                                              (1) 部署 swarm 集群所使用的 kv 服务, manager 节点
                                                                              docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap
                                                                              (2) 部署swarm manager
                                                                              docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise 10.3.1.141:4000 consul://10.3.1.141:8500 
                                                                              (3) 登陆 node 节点,加入 swarm  集群
                                                                              docker run -d swarm join --advertise=10.3.1.234:2375 consul://10.3.1.141:8500
                                                                              (4) 在 swarm manager 执行 docker info,查看集群状态
                                                                              docker info | grep -A3 2375
                                                                                           WARNING: No kernel memory limit support
                                                                                           VM_1_60_centos: 10.3.1.60:2375
                                                                                           └ ID: 5VJL:OARY:G6ZY:V6ZL:SB5B:J2B5:LGYL:PXZ7:APA2:R4IO:3ODP:OKBC
                                                                                           └ Status: Healthy
                                                                                           └ Containers: 1
                                                                                            --
                                                                                           VM_1_234_centos: 10.3.1.234:2375
                                                                                          └ ID: MMOC:DG3Y:M5VP:I5BV:XRUO:TXPR:P7MD:HD5L:3LR4:2RTE:7Z4B:QTKM
                                                                                          └ Status: Healthy
                                                                                          └ Containers: 1
                                                                             集群健康良好,接下来 构建夸主机通讯的 overlay 网络
                                                                              
                                                                 step3 : 创建 overlay 网络
                                                                             登陆 swarm manager 节点
                                                                             docker -H :4000 network create --driver overlay --subnet=10.0.9.0/24 overlay-net

                                                                 step4 : 集群测试
                                                                             分别指定启动两个容器在不同的节点,通过 manager 节点去启动容器,并测试双方是否可以解析容器名称
                                                                             登陆 swarm manager 节点,指定节点启动容器,以nginx 景象为例
                                                                             docker -H :4000 run -itd --name=web --net=overlay-net --env="constraint:node==VM_1_60_centos" nginx
                                                                             docker -H :4000 run -itd --name=web2 --net=overlay-net -env="constraint:node==VM_1_234_centos" nginx
                                                                             docker ps
                   CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
                    6d2b5306f00b        nginx               "nginx -g 'daemon off"   4 seconds ago       Up 3 seconds        80/tcp, 443/tcp     VM_1_234_centos/web2
                    6d0ec15c4c16        nginx               "nginx -g 'daemon off"   25 seconds ago      Up 24 seconds       80/tcp, 443/tcp     VM_1_60_centos/web
                                                                           
                                                                            测试NS,以及连通性
                                                                            docker network inspect overlay-net
                                                                           "Containers": {
                                                                            "6d0ec15c4c167835be87c5dbdd4a55652483c6b3a031590803620e1dc717de4a": {
                                                                            "Name": "web",
                                                                            "EndpointID": "c664c6478b060f727ad5bcf3e416acc934651eb3d28aea97017dda7a3859ea28",
                                                                            "MacAddress": "02:42:0a:00:09:02",
                                                                            "IPv4Address": "10.0.9.2/24",
                                                                            "IPv6Address": ""
                                                                              },
                                                                            "6d2b5306f00b9648d7213aa0c8ec8e17827eac858767c55cda0d7b3f5d57fa64": {
                                                                            "Name": "web2",
                                                                            "EndpointID": "49b1c3e206ffec8b03a9617ec658c3c88be92b3042e2d9d8511523b787d6b12c",
                                                                            "MacAddress": "02:42:0a:00:09:03",
                                                                            "IPv4Address": "10.0.9.3/24",
                                                                            "IPv6Address": ""
                                                                             }

                                                                            docker exec -it web ping -c 3 web2
                                                                             PING web2 (10.0.9.3): 56 data bytes
                                                                             64 bytes from 10.0.9.3: icmp_seq=0 ttl=64 time=0.610 ms
                                                                             64 bytes from 10.0.9.3: icmp_seq=1 ttl=64 time=0.539 ms
                                                                             64 bytes from 10.0.9.3: icmp_seq=2 ttl=64 time=0.513 ms
                                                                             --- web2 ping statistics ---
                                                                             3 packets transmitted, 3 packets received, 0% packet loss
                                                                             round-trip min/avg/max/stddev = 0.513/0.554/0.610/0.041 ms

                                                                             OK, 可以看到我们web容器,已经可以和web2容器通信
                                                                             今天我们的目的达到,建立 swarm 集群,overlay 网络,容器可以跨主机通信



阅读(1290) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~