重搭docker集群

以前尝试使用consul搭建了docker集群,当时对底层为什么要执行那些命令不是太理解,直到昨天研究了etcd集群之后,终于对docker集群搭建时的一些命令有了新的认识。今天尝试配合etcd搭建docker集群,以这里记录以备忘。

创建docker swarm集群mange节点

还是使用上一篇文章里搭建好的etcd集群服务,其地址为http://192.168.99.100:2381,http://192.168.99.100:2383,http://192.168.99.100:2385

1

docker-machine create -d virtualbox --engine-registry-mirror=https://xxx.mirror.aliyuncs.com --swarm --swarm-master --swarm-opt="replication" --swarm-discovery="etcd://192.168.99.100:2381" --engine-opt="cluster-store=etcd://192.168.99.100:2381" --engine-opt="cluster-advertise=eth1:2376" node1

这里解释一下这条命令: * --swarm指定了创建docker主机时开启swarm集群功能 * --swarm-master指定了创建docker主机后要在docker主机里运行一个swarm manage的docker容器 * --swarm-opt="replication" 启用swarm manage节点之间的复制功能 * --swarm-discovery="etcd://192.168.99.100:2381"指定swarm集群所使用的发现服务地址 * --engine-opt="cluster-store=etcd://192.168.99.100:2381" docker引擎所使用的KV存储服务地址 * --engine-opt="cluster-advertise=eth1:2376" swarm集群里该节点向外公布的服务地址。这里为什么是eth1,刚开始我也觉得很奇怪,后来我使用docker-machine ssh node1登入docker主机,再执行ifconfig才发现使用docker-machine创建的docker主机一般eth1为外部可访问的网络接口。

为了避免swarm集群manage节点的单点故障,这里再创建一个manage节点

1

docker-machine create -d virtualbox --engine-registry-mirror=https://xxx.mirror.aliyuncs.com --swarm --swarm-master --swarm-opt="replication" --swarm-discovery="etcd://192.168.99.100:2381" --engine-opt="cluster-store=etcd://192.168.99.100:2381" --engine-opt="cluster-advertise=eth1:2376" node2

创建docker swarm集群普通节点

docker-machine create -d virtualbox --engine-registry-mirror=https://xxx.mirror.aliyuncs.com --swarm --swarm-discovery="etcd://192.168.99.100:2381" --engine-opt="cluster-store=etcd://192.168.99.100:2381" --engine-opt="cluster-advertise=eth1:2376" node3

docker-machine create -d virtualbox --engine-registry-mirror=https://xxx.mirror.aliyuncs.com --swarm --swarm-discovery="etcd://192.168.99.100:2381" --engine-opt="cluster-store=etcd://192.168.99.100:2381" --engine-opt="cluster-advertise=eth1:2376" node4

这里创建了两个docker swarm集群普通节点

检查swarm集群的状况

docker集群创建好了,用docker客户端连上去查看一下集群的状况。

eval $(docker-machine env --swarm node2)
docker info

Containers: 6
 Running: 6
 Paused: 0
 Stopped: 0
Images: 4
Server Version: swarm/1.2.5
Role: replica
Primary: 192.168.99.104:3376
Strategy: spread
Filters: health, port, containerslots, dependency, affinity, constraint
Nodes: 4
 node1: 192.168.99.104:2376
  └ ID: A77F:BLVI:ZVRM:7RIL:XHGX:5K4F:OO3I:MPTE:JVJU:IBK2:NIPM:LDRJ
  └ Status: Healthy
  └ Containers: 2 (2 Running, 0 Paused, 0 Stopped)
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 1.021 GiB
  └ Labels: kernelversion=4.4.17-boot2docker, operatingsystem=Boot2Docker 1.12.1 (TCL 7.2); HEAD : ef7d0b4 - Thu Aug 18 21:18:06 UTC 2016, provider=virtualbox, storagedriver=aufs
  └ UpdatedAt: 2016-08-24T15:33:34Z
  └ ServerVersion: 1.12.1
 node2: 192.168.99.105:2376
  └ ID: EGYZ:TXBG:S3AR:W35S:Q3Y5:24GH:NEWN:ZAQP:R7QN:W3KR:VWGQ:YFRH
  └ Status: Healthy
  └ Containers: 2 (2 Running, 0 Paused, 0 Stopped)
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 1.021 GiB
  └ Labels: kernelversion=4.4.17-boot2docker, operatingsystem=Boot2Docker 1.12.1 (TCL 7.2); HEAD : ef7d0b4 - Thu Aug 18 21:18:06 UTC 2016, provider=virtualbox, storagedriver=aufs
  └ UpdatedAt: 2016-08-24T15:33:07Z
  └ ServerVersion: 1.12.1
 node3: 192.168.99.106:2376
  └ ID: OJAQ:GLMP:2LKC:6PSU:JYT6:DOGM:O5LA:IAS3:EZYG:G5NV:ON3F:76TF
  └ Status: Healthy
  └ Containers: 1 (1 Running, 0 Paused, 0 Stopped)
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 1.021 GiB
  └ Labels: kernelversion=4.4.17-boot2docker, operatingsystem=Boot2Docker 1.12.1 (TCL 7.2); HEAD : ef7d0b4 - Thu Aug 18 21:18:06 UTC 2016, provider=virtualbox, storagedriver=aufs
  └ UpdatedAt: 2016-08-24T15:33:00Z
  └ ServerVersion: 1.12.1
 node4: 192.168.99.107:2376
  └ ID: W6EL:DUI6:LWEV:T55B:YJ2O:GBIQ:S3CA:GAKD:OMC7:YBVE:NKE4:TT4U
  └ Status: Healthy
  └ Containers: 1 (1 Running, 0 Paused, 0 Stopped)
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 1.021 GiB
  └ Labels: kernelversion=4.4.17-boot2docker, operatingsystem=Boot2Docker 1.12.1 (TCL 7.2); HEAD : ef7d0b4 - Thu Aug 18 21:18:06 UTC 2016, provider=virtualbox, storagedriver=aufs
  └ UpdatedAt: 2016-08-24T15:33:23Z
  └ ServerVersion: 1.12.1
Plugins:
 Volume:
 Network:
Kernel Version: 4.4.17-boot2docker
Operating System: linux
Architecture: amd64
CPUs: 4
Total Memory: 4.085 GiB
Name: 7d436f0f312b
Docker Root Dir:
Debug mode (client): false
Debug mode (server): false
WARNING: No kernel memory limit support

Over,一个四节点的docker集群就这么简单的搭建好了。

下一步计划

参照http://www.alauda.cn/2016/01/18/docker-1-9-network/研究一下容器网络模型(Container Network Model,简称CNM),同时研究一下实际场景中如何使用pipework来灵活地定制容器的网络。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

DBA必备技能:RAC 如何安装新主机识别老存储恢复数据库

编辑手记:在 DBA 的日常工作中,经常会遇到 RAC 的一个节点失效的情况,或者通过存储迁移主机,如何恢复环境,加入集群是 DBA 的必备技能。 ? 张大朋...

3685
来自专栏快乐八哥

使用Docker-Docker for Web Developers(2)

1. 使用镜像 1.1 在Docker Hub上查找镜像 我们查找一下之前博客里面,推送到Docker Hub里面的bage88/docker-demo,能看到...

20710
来自专栏康怀帅的专栏

CoreOS 容器 Rkt 简单介绍

由于 Docker 已经成为事实上的容器老大,这里暂且将 rkt 内容放入 docker 文件夹。哈哈 官方网站:https://coreos.com/rkt/...

4857
来自专栏散尽浮华

记录一次redis cluster集群故障-运维笔记

公司的一个系统业务出现故障,提示查询redis失败。查询相关日志,分析过程记录如下:

4795
来自专栏码代码的陈同学

Spring Cloud之极端续租间隔时间的影响

本文基于某环境一个真实Case,它配置了非常极端的续租间隔时间。虽然知道服务注册的基本知识,但未深入了解过,正好基于这个Case学习下。

1946
来自专栏康怀帅的专栏

Docker Compose version 3 使用详解

Define application stacks built using multiple containers, services, and swarm c...

6.7K6
来自专栏云知识学习

Kubernetes1.10 HA高可用集群搭建文档

k8s-master01的keepalived.conf,配置文件有几点需要注意的,在下面有补充。

2.4K15
来自专栏轻量级微服务

Kubernetes Service & LB & Networking :Services

使用标签选择器创建服务,Service 直接关联 Pod,示例:部署 Mysql (细节见文末附录1),再创建服务:

1554
来自专栏ml

关于docker 意外停止,重新快速启动措施

2367
来自专栏大魏分享(微信公众号:david-share)

厉害了!全CI/CD工具链的实现 | 基于OCP离线: Openshift3.9学习系列第五篇

干货巨献:Openshift3.9的网络管理大全.加长篇---Openshift3.9学习系列第二篇

3644

扫码关注云+社区

领取腾讯云代金券