docker从1.12版(及后续版本)集成了swarmkit。可以方便的实现docker集群。它有哪些特点呢:

  • 集成了集群功能
  • 分散设计:manager和worker两种节点。
  • 声明式服务模式
  • 可伸缩
  • 达到期望值——当某些有节点崩溃的时候,会在其他节点创建相应容器。
  • 跨主机网络——采用overlay网络,docker可在不同的主机间通讯。
  • 服务发现——内置服务发现功能,不需要额外使用etcd、consul、zookeeper.
  • 负载均衡
  • 安全通信
  • 安全回滚

docker命令概览

从命令 docker -h 可以清楚的看到一些新的管理命令,这些管理命令下面还有子命令。

docker container

docker image

docker network

docker node

docker plugin

docker secret

docker service

docker stack

docker swarm

docker system

docker volume

例如:docker swarm init 初始化一个集群,其他命令直接 -h 查看命令就可以了。

本篇按docker官方教程顺序大致介绍一下,也将一下自己的体验过程中遇到的问题和解决办法分享出来。

创建集群

本节的目标:

*创建一个集群

*添加节点到集群

*部署服务到swarm集群中

*管理集群

准备工作

*在vmware中的虚拟机(这里是centos 7.3 )

192.168.139.128(manager1)

192.168.139.129(manager2)

192.168.139.130(manager3)

192.168.139.131(worker)

*安装docker1.12或以后的版本(这里是docker 1.13.1)

*设置虚拟机IP

虚拟机中的共享主机IP,在docker swarm创建了overaly网络后,可能引起IP变化,可修改 /etc/sysconfig/network-scripts/ifcfg-ens33来固定IP。

*开启防火墙端口

2377/tcp 、7946/tcp/udp,4789/udp端口

创建集群(swarm mode)

在一台128 manager上执行:

# docker swarm init --advertise-addr=192.168.139.128:2377

 Swarm initialized: current node (htqmmiiiw8z4cww3c4n1mkbkz) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-1xl2p1wd6r2ak0ekqtzmw0lf2fc78glrsgqm02wdqmxqap9yjv-8tezcdr89dgsv3byjxm90yvhv \
192.168.139.128:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

此时128就是集群的manager节点(同时也是集群的worker节点),根据返回的信息,我们可以方便的添加一些worker节点,作为集群要考虑单点问题,故我们需要多添加几台作为manager节点。添加之前可以查看一下当前集群中的节点情况:

# docker node ls

ID                           HOSTNAME        STATUS  AVAILABILITY  MANAGER STATUS
m7vv962jgkvjn5padsem5cbmz * swarm.node1_m1 Ready Active Leader

然后执行:

docker swarm join-token manager

返回信息:

To add a manager to this swarm, run the following command:

docker swarm join

--token SWMTKN-1-6191qy3f6xkj39cg51gka40mgpq9c7o5tvyu19h3b1o0thh0e4-2kvhkye3194i7mxg3okjdqlog

192.168.139.128:2377

顺便说一下docker swarm join-token 就是查看如何添加manager或worker节点的token

这里打算再添加1个manager节点,在129上执行

docker swarm join \
--token SWMTKN-1-1xl2p1wd6r2ak0ekqtzmw0lf2fc78glrsgqm02wdqmxqap9yjv-ai5q09y6ogmfct4v5xhgsfmga \
192.168.139.128:2377

将130,131作为worker节点,执行

docker swarm join \
--token SWMTKN-1-6191qy3f6xkj39cg51gka40mgpq9c7o5tvyu19h3b1o0thh0e4-e1urle7qhwwvyufdqri4fre4s \
192.168.139.128:2377

现在可以在每一个manager节点上查看一下所有的节点(docker node ls):

9bwmkfxz0fgflp4zu6luequaa swarm.node3-m3 Ready Active

hntv80xrlm22x17i792cdr2j3 swarm.node2_m2 Ready Active Reachable

m7vv962jgkvjn5padsem5cbmz * swarm.node1_m1 Ready Active Leader

yiyz9v3huqd7m0kgjvdu5vppt swarm.node4 Ready Active

可以看到多了一个reachable的管理节点,如果leader挂了,那么reachable节点就会提升为leader。这里面有一些具体的关于raft算法的不在累述。

到此,我们的简易集群已经创建好了,看起来是不是太easy了?

可能会遇到的坑:

  • 没开防火墙的2377/tcp 、7946/tcp/udp,4789/udp端口。
  • 虚拟机中的共享主机IP,在docker swarm创建了overaly网络后,可能引起IP变化,可修改 /etc/sysconfig/network-scripts/ifcfg-ens33来固定IP。

Docker集群管理(三)—— docker swarm mode基础教程的更多相关文章

  1. Docker集群管理(一)—— 基础docker+swarm+shipyard

    目的 学习docker的集群管理,摸索出高可用的docker微服务架构方案.本篇文章只初步的了解下swarm(docker新版已集成了swarm)的使用,了解docker的发现服务的基础方法(dock ...

  2. docker集群管理

    docker集群管理 ps:docker machine     docker swarm       docker compose  在Docker Machine发布之前,你可能会遇到以下问题: ...

  3. docker集群管理之kubernetes

    一.简介 kubernetes又叫做k8s,是Google开发的一款开源的docker集群管理工具,在这里对它的“发家史”,我不做过多的阐述,有时间大家可以自己去百度一下: 下面我要讲的就是容易混淆的 ...

  4. 基于zookeeper+mesos+marathon的docker集群管理平台

    参考文档: mesos:http://mesos.apache.org/ mesosphere社区版:https://github.com/mesosphere/open-docs mesospher ...

  5. docker集群管理之swarm

    一.简介 docker集群管理工具有swarm.k8s.mesos等,我所用到的是swarm和k8s,这篇文章主要介绍swarm:swarm是docker集成的原生 管理工具,只要你安装上docker ...

  6. Docker集群管理(二)—— docker+swarm+etcd+shipyard

    引言 前一篇介绍如何简单的搭建一个可视化管理的docker集群,本篇将在此基础之上引入etcd发现服务. 目的 使用etcd发现服务解决swarm内置发现服务的不稳定问题.etcd采用raft算法,这 ...

  7. Centos下安装Docker集群管理工具Shipyard

    一. Docker Shipyard是什么 ? shipyard是一个开源的docker管理平台,其特性主要包括: 支持镜像管理.容器管理. 支持控制台命令 容器资源消耗监控 支持集群swarm,可以 ...

  8. Docker集群管理工具 - Kubernetes 部署记录 (运维小结)

    一.  Kubernetes 介绍 Kubernetes是一个全新的基于容器技术的分布式架构领先方案, 它是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernete ...

  9. centos7上基于kubernetes的docker集群管理

    kubernetes和docker的作用这里就不作介绍了,直接进入主题. 本文的目的是搭建docker集群,并使用kubernetes管理它们. 文中的软件环境除了kubernetes和docker, ...

随机推荐

  1. Python学习(002)--Python介绍

    一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为AB ...

  2. Mac 下配置php环境

    Mac OS X 内置了Apache 和 PHP,这样使用起来非常方便.本文以Mac OS X 10.6.3为例.主要内容包括: 启动Apache 运行PHP 安装MySQL 使用phpMyAdmin ...

  3. Java中多线程

    引 如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个 ...

  4. proxool配置及测试(数据库用的MySQL)

    Proxool连接池设置   Proxool连接池是sourceforge下的一个开源项目,这个项目提供一个健壮.易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况. ...

  5. 微信小程序代码片段

    微信小程序代码片段是一种可分享的小项目,可用于分享小程序和小游戏的开发经验.展示组件和 API 的使用.复现开发问题等等.分享代码片段会得到一个链接,所有拥有此分享链接的人可以在工具中导入此代码片段. ...

  6. rest_cherrypy

    一.简介 A REST API FOR SALT 二.安装,配置 yum -y install salt-api rest_cherrypy: port: # disable_ssl: True ss ...

  7. 虚拟机lamp环境下,Apache配置虚拟主机

    1.在Apache配置文件中开启虚拟主机功能:即:Include etc//extra/httpd-vhosts.conf把前面的#去掉: 2.在extra目录下找到文件httpd-vhosts.co ...

  8. test20180830

    所有试题限制均为128MB,1Sec 总分100(•́へ•́╬). 试题一 A题 问题描述: Bob 有 n 个士兵,他们排成一列按照从左到右编号为 1 到 n,每个士兵都有自己的 IQ 值,Bob ...

  9. 用户态监控网络接口up、down事件

    网上搜索(https://blog.csdn.net/qq123386926/article/details/50695725)可以直接使用netlink现成的接口实现: #include <s ...

  10. JQuery 在网页中查询

    最近遇到客户的一个需求,要在网页中添加一个Search 功能,其实对于网页的搜索,Ctrl+F,真的是非常足够了,但是客户的需求,不得不做,这里就做了个关于Jquery Search function ...