Docker Swarm

 Swarm是Docker的一个编排工具,在之前我们只是在一台机器来进行docker的管理:

 但是有时容器并不一定都在一台主机上,如果是分布式的处于多台主机上,这时就可以借助于Swarm,Swarm是Docker自带的编排工具,只要你安装了Docker就会存在Docker Swarm工具。

Swarm中的模式是有两大类节点,一类是manager节点,另一类是worker节点,manager节点相当于对服务的创建和调度,worker节点主要是运行容器服务,当然manager节点也是可以运行的。

manager节点状态、信息的同步根据Raft consensus group的网络进行通信同步的,而worker之间的通信依靠的是Gossip network做到的。

另外一个重要的概念就是service,我们可以在一个manager节点上创建一个服务,但是可以根据这一个服务创建多个容器的任务,这些容器任务运行在不同的节点上。

那么如何进行Swarm集群的搭建呢?

  • 在swarm模式下初始化一个Swarm集群,并且将当前主机加入到该集群作为manager节点
  • 加入其它节点到该集群中
  • 部署service到该集群中

 

三种方式:建议第一种,我也只试了第一种。

1. Vagrant + Virtualbox
  1. 先初始化manager的cluster,宣告地址
    1. docker swarm init --advertise-addr=192.168.205.10
  2. 添加worker到manage cluster
    1. docker swarm join --token SWMTKN-1-5zj189y4mz8yttawc6jlq1vb86hcu4lbzzo1nts1yzu7d9teaa-7g0w1oyppjynrqki1zy1pk3xi 192.168.205.10:2377
2. Docker Machine + Virtualbox
  1. docker-machine creat swarm-manager
  2. docker-machine creat swarm-work1
  3. docker-machine creat swarm-work2
  4. 之后和Vagrant + Virtualbox的方法一样了
3. Play with docker https://labs.play-with-docker.com/

 

第一种:

docker swarm --help

docker swarm init --help

  检查防火墙 systemctl status firewalld.service

 关闭防火墙 systemctl stop firewalld.service

  永久关闭  systemctl disable firewalld.service

 

  初始化Manager

 docker swarm init --advertise-addr=192.168.126.131

 

  work节点加入(初始化Manager后会输出下面这条指令)

 docker swarm join --token SWMTKN-1-37yp1apign9310smt9bf39xo3czj1w6img5pa6l5gaoy23ics6-1zdbn8kz6rnzjmn6h4z95r0w6 192.168.126.131:2377

 

 查看节点

 docker node ls

 

 

第二种

安装VirtualBox 

1. 首先下载oracle_vbox.asc文件到本地:

wget -q https://www.virtualbox.org/download/oracle_vbox.asc

再执行import:

sudo rpm --import oracle_vbox.asc
cd 进入目录:/etc/yum.repos.d 

vim virtualbox.repo

[virtualbox]

name=Oracle Linux / RHEL / CentOS-$releasever / $basearch - VirtualBox

baseurl=http://download.virtualbox.org/virtualbox/rpm/el/$releasever/$basearch

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://www.virtualbox.org/download/oracle_vbox.asc

 yum install VirtualBox-5.2 -y

 

安装docker-machine:

base=https://github.com/docker/machine/releases/download/v0.16.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
  sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&
  chmod +x /usr/local/bin/docker-machine

验证docker-machine:

docker-machine version

 

上一篇:MySQL高级篇(SQL优化、索引优化、锁机制、主从复制)


下一篇:MySQL中可以使用SELECT …INTO语句对变量进行赋值