「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

栏目: 编程工具 · 发布时间: 6年前

内容简介:为了让学习的知识融汇贯通,目前是把所有的集群都放在了一个虚拟机上,如果这个虚拟机宕机了怎么办?俗话说鸡蛋不要都放在一个篮子里面,把各种集群的节点拆分部署,应该把各种节点分机器部署,多个宿主机,这样部署随便挂哪个主机我们都不担心。源码:https://github.com/limingios/netFuture/blob/master/docker-swarm/

为了让学习的知识融汇贯通,目前是把所有的集群都放在了一个虚拟机上,如果这个虚拟机宕机了怎么办?俗话说鸡蛋不要都放在一个篮子里面,把各种集群的节点拆分部署,应该把各种节点分机器部署,多个宿主机,这样部署随便挂哪个主机我们都不担心。

源码:https://github.com/limingios/netFuture/blob/master/docker-swarm/

「实战篇」开源项目 <a href='https://www.codercto.com/topics/20577.html'>docker</a> 化运维部署-借助dockerSwarm搭建集群部署(九)

一起在说说docker swarm

swarm 是docker的三剑客一员,之前都说过了,可以看中级和高级啊 。

1. docker machine 容器服务

2. docker compose 脚本服务

3. docker swarm 容器集群技术

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

  • 去中心化的设计

    >Swarm Manager 也承担worker节点的作用。

    >Swarm Worker 运行容器部署项目

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

Swarm是没有中心节点的,挂到其中一个其他是不会挂掉的。Swarm Manager 如果master挂了,立马选举一个新的master。

  • 创建集群环境

    >首先机器已经安装了docker环境。

docker swarm init
  • 加入swarm集群
#加入到manager中
docker swarm join-token manager
#加入到worker中
docker swarm join-token worker

环境搭建

应用 IP地址 服务 配置 安装应用 安装方式
docker-swarm-manager1 192.168.66.100 docker-swarm-manager1 单核 2g内存 docker-swarm-manager1 docker
docker-swarm-manager2 192.168.66.101 docker-swarm-manager2 单核 2g内存 docker-swarm-manager2 docker
docker-swarm-node1 192.168.66.102 docker-swarm-node1 单核 2g内存 docker-swarm-node1 docker
docker-swarm-node2 192.168.66.103 docker-swarm-node2 单核 2g内存 docker-swarm-node2 docker

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

docker swarm环境

一共4个节点,2个manager节点,2个work节点,manager不光是管理,而且也干活,说白了一共4个干活的节点。

创建docker swarm集群

su -
#密码vagrant
docker swarm init

报错注意:如果你在新建集群时遇到双网卡情况,可以指定使用哪个 IP,例如上面的例子会有可能遇到下面的错误。

Error response from daemon: could not choose an IP address to
 advertise since this system has multiple addresses on different
 interfaces (10.0.2.15 on enp0s3 and 192.168.66.100 on enp0s8) 
- specify one with --advertise-addr

再次创建docker swarm集群192.168.66.100

docker swarm init --advertise-addr 192.168.66.100 --listen-addr 192.168.66.100:2377
docker swarm join-token manager

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九) 「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

再次创建docker swarm集群192.168.66.101

当前节点以manager的身份加入swarm集群

docker swarm join --token SWMTKN-1-4itumtscktomolcau8a8cte98erjn2420fy2oyj18ujuvxkkzx-9qutkvpzk87chtr4pv8770mcb 192.168.66.100:2377

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

再次创建docker swarm集群192.168.66.102

当前节点以worker的身份加入swarm集群

docker swarm join --token SWMTKN-1-4itumtscktomolcau8a8cte98erjn2420fy2oyj18ujuvxkkzx-f2dlt8g3hg86gyc9x6esewtwl 192.168.66.100:2377

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

再次创建docker swarm集群192.168.66.103

当前节点以worker的身份加入swarm集群

docker swarm join --token SWMTKN-1-4itumtscktomolcau8a8cte98erjn2420fy2oyj18ujuvxkkzx-f2dlt8g3hg86gyc9x6esewtwl 192.168.66.100:2377

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

查看swarm集群

只能在manager节点内执行

leader挂掉后,reachable就可以管理集群了。

docker node ls

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

查看swarm集群的网络

只能在manager节点内执行

docker network ls

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

创建容器间的共享网络

只能在manager节点内执行

docker network create -d overlay --attachable swarm_test
docker network ls

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

目前是4台机器,如果想让4台机器内的容器可以进行共享,overlay的网络就可以了,只需要在创建容器的时候–net=swarm_test

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

创建5个pxc容器

  • 192.168.66.100

    >创建2个容器。之前也说过如何创建,最为重要的是共享网络一定要使用swarm的共享网络。

docker volume create v1
docker volume create backup1
#增加域名解析
echo "nameserver 8.8.8.8" | tee /etc/resolv.conf > /dev/null 
sudo curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://b81aace9.m.daocloud.io
sudo systemctl restart docker
docker run -d -p 3306:3306  --net=swarm_test \
        --name=node1 \
        -e CLUSTER_NAME=PXC \
        -e MYSQL_ROOT_PASSWORD=a123456 \
        -e XTRABACKUP_PASSWORD=a123456 \
        -v v1:/var/lib/mysql \
        --privileged \
        -v backup1:/data \
        percona/percona-xtradb-cluster
docker ps

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

docker volume create v2
docker run -d -p 3307:3306  --net=swarm_test \
        --name=node2 \
        -e CLUSTER_NAME=PXC \
        -e MYSQL_ROOT_PASSWORD=a123456 \
        -e XTRABACKUP_PASSWORD=a123456 \
        -v v2:/var/lib/mysql \
        --privileged \
        -v backup1:/data \
        -e CLUSTER_JOIN=node1 \
        percona/percona-xtradb-cluster
docker ps

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

  • 192.168.66.101

    >创建1个容器。之前也说过如何创建,最为重要的是共享网络一定要使用swarm的共享网络。

docker volume create v3
docker volume create  backup3
docker run -d -p 3307:3306  --net=swarm_test \
        --name=node3 \
        -e CLUSTER_NAME=PXC \
        -e MYSQL_ROOT_PASSWORD=a123456 \
        -e XTRABACKUP_PASSWORD=a123456 \
        -v v3:/var/lib/mysql \
        --privileged \
        -v backup3:/data \
        -e CLUSTER_JOIN=node1 \
        percona/percona-xtradb-cluster
docker ps

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

  • 192.168.66.102

    >创建1个容器。之前也说过如何创建,最为重要的是共享网络一定要使用swarm的共享网络。

docker volume create v4
docker volume create  backup4
docker run -d -p 3307:3306  --net=swarm_test \
        --name=node4 \
        -e CLUSTER_NAME=PXC \
        -e MYSQL_ROOT_PASSWORD=a123456 \
        -e XTRABACKUP_PASSWORD=a123456 \
        -v v4:/var/lib/mysql \
        --privileged \
        -v backup4:/data \
        -e CLUSTER_JOIN=node1 \
        percona/percona-xtradb-cluster
docker ps
  • 192.168.66.103

    >创建1个容器。之前也说过如何创建,最为重要的是共享网络一定要使用swarm的共享网络。

docker volume create v4
docker volume create  backup4
docker run -d -p 3307:3306  --net=swarm_test \
        --name=node4 \
        -e CLUSTER_NAME=PXC \
        -e MYSQL_ROOT_PASSWORD=a123456 \
        -e XTRABACKUP_PASSWORD=a123456 \
        -v v4:/var/lib/mysql \
        --privileged \
        -v backup4:/data \
        -e CLUSTER_JOIN=node1 \
        percona/percona-xtradb-cluster
docker ps

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

容器集群

在这个示意图里面,画了4个 linux 的主机,都安装了docker虚拟机,假如我现在想安装A程序,直接选择Docker-1这个主机里面的容器安装A程序,这样没有问题。但是单节点单容器来部署,一旦这个节点挂掉的话,A程序就没有,为了防止这样我们有冗余设计,直接在Docker-2这个主机里面的容器也安装A程序,这样的话,Docker-1里面的A程序挂了,Docker-2里面的A程序也可以运行。这个功能有点像负载均衡,其实真的很像。docker swarm提供的东西跟负载均衡还是有区别的。swarm 只是提供了容器状态的管理,如果Docker-1里面的A程序挂了,发现本来二个,现在变成1个了危险,立马在起一个吧。实时保证docker容器内的数量。

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

容器集群适合的场景

容器集群不适合有状态程序,例如数据库,缓存等等

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

退出Swarm集群

#Manager退出必须加--force
docker swarm leave --force

删除节点

“` bash

service docker stop

#Manager节点需要先降级

docker node demoted docker node rm docker network

PS:这次主要说了3点比较重要的:通过docker-swarm的网络搭建容器化通信网络,创建集群的时候–net 加入docker-swarm创建的网络,方便通信。不哪些适合做容器化集群,数据库和缓存。如何操作docker-swarm中的节点。

「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

百度未收录

>>原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!

>>原文链接地址:上一篇:

下一篇:


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

About Face 2.0

About Face 2.0

Alan Cooper、Robert M. Reimann / Wiley / March 17, 2003 / USD 35.00

First published seven years ago-just before the World Wide Web exploded into dominance in the software world-About Face rapidly became a bestseller. While the ideas and principles in the original book......一起来看看 《About Face 2.0》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具