Docker swarm 集群搭建
Swarm是Docker公司在2014年12月初发布的一套较为简单的工具,用来管理docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机。Swarm使用标准的Docker API接口作为其前端访问入口,换言之,各种形式的Docker Client(docker client in Go, docker_py, docker等)均可以直接与Swarm通信。Swarm几乎全部用go语言来完成开发,上周五,4月17号,Swarm0.2发布,相比0.1版本,0.2版本增加了一个新的策略来调度集群中的容器,使得在可用的节点上传播它们,以及支持更多的Docker命令以及集群驱动。
Swarmdeamon只是一个调度器(Scheduler)加路由器(router),Swarm自己不运行容器,它只是接受docker客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使Swarm由于某些原因挂掉了,集群中的节点也会照常运行,当Swarm重新恢复运行之后,它会收集重建集群信息。下面是Swarm的结构图
环境部署
实验环境
操作系统: Centos 7.2
操作系统内核版本:3.10.0-327.36.1.el7.x86_64
Docker 版本:Docker version1.12.6
dtest01 10.139.12.49 swarm manager
dtest02 10.139.11.109 swarm node
dtest03 10.139.12.5 swarm mode
环境准备
关闭seliunx 以dtest01 为例, dtest02、dtest03 按照同样的方法操作
sed -i 's/SELINUX=enabled /SELINUX= disabled/g' /etc/selinux/config
重启服务器reboot
关闭防火墙以dtest01 为例, dtest02、dtest03 按照同样的方法操作
systemctl stop firewalld
systemctl disable firewalld
配置hosts以dtest01 为例, dtest02、dtest03 按照同样的方法操作
[root@dtest01 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.139.12.49 dtest01
10.139.11.109 dtest02
10.139.12.5 dtest03
配置ssh 免登陆
使用ssh-keygen 命令生成一路回车键
[root@dtest01 ~]# ssh-keygen
配置所有节点密钥登录.
配置所下节点密钥互信, 在node1可以免密码登录各节点,只在dtest01上执行:
分发sshkey到各个节点
[root@node1 ~]# ssh-copy-id dtest01
[root@node1 ~]# ssh-copy-id dtest02
[root@node1 ~]# ssh-copy-id dtest03
安装docker
以dtest01 为例, dtest02 、dtest03 按照此方法操作
yum install docker –y
查看 docker -v
Docker version 1.12.6, build 88a4867/1.12.6
启动docker systemctl start docker
开机自启动 systemctl enable docker
创建 Swarm集群
在dtest01 上初始化swram集群:
docker swarm init --advertise-addr 10.139.12.49
Swarm initialized: current node(1ov1r9l904zhvs4uoygt0tmi3) is now a manager.
To add a worker to this swarm, run thefollowing command:
docker swarm join \
--tokenSWMTKN-1-4qu7h72chrzlycoltrfu9aitp3omoju46nxey73bjjjf69co4h-4c6benvo38h8wyhiti8j9xd1t\
10.139.12.49:2377
查看docker swarm 是否创建成功
[root@dtest01 ~]# netstat -tnlp | grep docker
tcp6 0 0 :::7946 :::* LISTEN 4646/dockerd-curren
tcp6 0 0 :::2377 :::* LISTEN 4646/dockerd-curren
检查 docker swarm mode信息:
Swarm:active
NodeID: 1ov1r9l904zhvs4uoygt0tmi3
Is Manager: true
ClusterID: br2kb43qhxea1vl2zgygmfq0c
Managers: 2
Nodes: 3
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Heartbeat Tick: 1
Election Tick: 3
查看swarm集群列表
[root@dtest01 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
1ov1r9l904zhvs4uoygt0tmi3 * dtest01.novalocal Ready Active Leader
将dtest02和dtest03使用worker节点方式加入swarm集群
首先在node1上面查询集群的命令和密钥,在dtest02 、dtest03 分别执行下面红色区域的命令
[root@ dtest01 ~]# docker swarm join-token worker
To add a worker to this swarm, run thefollowing command:
docker swarm join \
--tokenSWMTKN-1-4qu7h72chrzlycoltrfu9aitp3omoju46nxey73bjjjf69co4h-4c6benvo38h8wyhiti8j9xd1t\
10.139.12.49:2377
[root@dtest02 ~]# docker swarm join --tokenSWMTKN-1-4qu7h72chrzlycoltrfu9aitp3omoju46nxey73bjjjf69co4h-4c6benvo38h8wyhiti8j9xd1t10.139.12.49:2377
This node joined a swarm as a worker.
[root@dtest02 ~]# docker swarm join --tokenSWMTKN-1-4qu7h72chrzlycoltrfu9aitp3omoju46nxey73bjjjf69co4h-4c6benvo38h8wyhiti8j9xd1t10.139.12.49:2377
This node joined a swarm as a worker.
查看集群节点
[root@dtest01 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
1ov1r9l904zhvs4uoygt0tmi3 * dtest01 Ready Active Leader
4v1mjgrvpdba9uxmv9riti96n dtest02 Ready Active
9cd5n3rgd6n5ids6mxuqcfd3c dtest03 Ready Active
为了swarm集群的高可用,和避免单点故障. 我们希望建立多个manager节点集群.将dtest02提升为manager节点
docker node promote dtest02
[root@dtest01 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
1ov1r9l904zhvs4uoygt0tmi3 * dtest01 Ready Active Leader
4v1mjgrvpdba9uxmv9riti96n dtest02 Ready Active Reachable
9cd5n3rgd6n5ids6mxuqcfd3c dtest03 Ready Active
现在我们可以看到, 已经有2个manager节点了, 一个Leader节点, 一个Reachable节点. 现在你也可以在dtest02上面管理整个swarm集群.
[root@dtest02 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
1ov1r9l904zhvs4uoygt0tmi3 * dtest01 Ready Active Leader
4v1mjgrvpdba9uxmv9riti96n dtest02 Ready Active Reachable
9cd5n3rgd6n5ids6mxuqcfd3c dtest03 Ready Active
备注:查看命令帮助 docker node –help
使用dtest02让dtest03下线
docker node update --availability drain9cd5n3rgd6n5ids6mxuqcfd3c
[root@dtest02 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
1ov1r9l904zhvs4uoygt0tmi3 dtest01 Ready Active Leader
4v1mjgrvpdba9uxmv9riti96n * dtest02 Ready Active Reachable
9cd5n3rgd6n5ids6mxuqcfd3c dtest03 Ready Drain
使用dtest02让dtest03上线
docker node update --availability active 9cd5n3rgd6n5ids6mxuqcfd3c
[root@dtest02 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
1ov1r9l904zhvs4uoygt0tmi3 dtest01 Ready Active Leader
4v1mjgrvpdba9uxmv9riti96n * dtest02 Ready Active Reachable
9cd5n3rgd6n5ids6mxuqcfd3c dtest03 Ready Active
本文转自 水滴石川1 51CTO博客,原文链接:http://blog.51cto.com/sdsca/1962601,如需转载请自行联系原作者
Docker swarm 集群搭建相关推荐
- 正式环境docker部署hyperf_应用部署 - Docker Swarm 集群搭建 - 《Hyperf v1.1.1 开发文档》 - 书栈网 · BookStack...
Docker Swarm 集群搭建 现阶段,Docker容器技术已经相当成熟,就算是中小型公司也可以基于 Gitlab.Aliyun镜像服务.Docker Swarm 轻松搭建自己的 Docker集群 ...
- Docker Swarm集群搭建以及服务命令等操作
前言:之前都是采用rancher可视化管理工具进行管理K8S进一步管理容器,但是每次机器宕机后rancher中集群特别容易挂掉,出现的问题五花八门,在网上很难搜到解决方案,所以准备采用docker官方 ...
- docker swarm集群搭建及使用Portainer、shipyard
一.规划 1.swarm01作为manager节点,swarm02和swarm03作为worker节点. # cat /etc/hosts 127.0.0.1 localhost 192.168.13 ...
- 持续集成docker—第三篇(docker swarm集群搭建)
一.规划 1.net-master作为manager节点,net-salve作为worker节点. cat >>/etc/hosts<<EOF 47.96.65.70 yund ...
- 【Docker】docker swarm集群搭建和相关命令分享
Docker swarm 集群通过 docker cli 来创建,并通过docker cli来实现应用的部署和集群的管理. Docker swarm集群的搭建相对简单,这里使用三台虚拟机(一个管理节点 ...
- docker swarm 集群搭建与服务更新
title: "docker swarm 搭建与服务更新"date: 2021-12-15T17:54:53+08:00Description: ""Tags: ...
- Docker Swarm集群搭建
Docker Swarm提供Docker容器集群服务,可以将多个Docker主机封装为单个单行的虚拟Docker主机,快速打造一套容器云平台. DockerSwarm提供很多新特性,如 具有容错能力的 ...
- Docker swarm集群搭建教程
一.什么是Swarm Swarm这个项目名称特别贴切.在Wiki的解释中,Swarm behavior是指动物的群集行为.比如我们常见的蜂群,鱼群,秋天往南飞的雁群都可以称作Swarm behavio ...
- Docker Swarm集群仓库和可视化管理
Docker Swarm集群仓库和可视化管理 1 背景 2 环境 3 安装操作 3.1 registary部署 3.1.1 下载 3.1.2 部署 3.2 portainer部署 3.2.1 下载 3 ...
最新文章
- 5G RRC——为NAS层提供连接管理,消息传递等服务; 对接入网的底层协议实体提供参数配置的功能; 负责UE移动性管理相关的测量、控制等功能...
- python 压缩文件(1)
- Python(18)-字典dictionary、集合
- 园林景观cad_景观广场及绿化设计(附CAD平面图)
- 如何使用Javascript复制到剪贴板
- 深度神经网络与卷积神经网络的区别
- DoubleClick公司推出移动广告平台
- Nginx 更新静态页面 不生效
- html转换markdownpad,GitHub - negrochn/markdownpad2_toc: MarkdownPad2导出HTML支持[TOC]
- 深度学习--FAISS向量数据库
- 素数:素数判断、找素数、计算素数和、素数求和
- 北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛(重现赛)题解
- 费舍尔方法(Fisher‘s method)的数学原理解释
- Stm32完整安装包,包含Keil5,野火大学堂,Flymcu,Ch340,stm32F1和F4的器件支持包,STM32CubeMX
- Sequelize.js 入门
- 遭到强烈反对后,Apple推迟了扫描设备以查找虐待儿童图像的计划
- Attention-based Extraction of Structured Information from Street View Imagery:基于注意力的街景图像提取结构化信息
- Win7系统下的立体声混音录音的声卡的设置方法
- java写的网络版斗地主_Java实现简单的斗地主游戏
- oracle12c导入,Oracle 12c pdb使用expdp/impdp导入导出
热门文章
- JAVA实现调整数组顺序使奇数位于偶数前面问题(《剑指 offer》)
- AppStore 拒绝审核原因:PLA 2.3
- 一个listMap里map其中的一个字段的值相同,如何判断这个字段相同,就把这个map的其他字段存入另一个map中...
- ssh整合之六管理我们的配置文件
- delete from inner join
- MyEclipse10安装SVN插件
- 【UEditor】关于导入ueditor-1.1.3.jar的问题---
- go语言实现排序算法
- 趋势科技、亚马逊AWS作后盾,天云趋势首款SaaS安全服务强势来袭
- 一生只见一次的大彗星今天来了!