借助容器技术,可以方便的在不同环境下部署服务,保证服务环境的一致性。docker swarm这个东西,可以方便的对容器进行编排管理。

docker swarm集群中,有manager节点与worker节点。

在工作项目中,需要在此集群新增一台机器,用于部署刚上线的服务。对于新上线的服务,需要先在这台机器上运行一段时间。稳定一段时间之后,再去除此限制,服务可以随机部署到一台生产的机器上。

首先介绍一下在一个集群中新增work机器的操作:

登录docker swarm的一个管理节点,运行:

[root@machine01 swarm]# docker swarm join-token worker
To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN--5krx9k52xqyv5qypt22rkmclbb0mxqbv49fvw7ru2iby7zmm4b-2xw3h4rjoz9jn7h5gjdxt3sdv 192.168.20.155:

运行后得到添加worker节点的命令,再登录到新的机器上,运行上个命令产生的添加机器命令,即可完成docker swarm集群新增机器的操作。

新增节点完成之后,设置此节点标签如下:

docker node update --label-add application=generic --label-add staging=true machine01
docker node update --label-add application=generic --label-add staging=true machine01

机器新增之后,介绍一下如何限制服务启动时选择的机器,有两种方式:

方式一:

通过 --constraint参数设定启动微服务的节点标签,如果需要限定某个微服务只能启动在camel机器中:

--constraint node.labels.application==generic,如果只有新增的机器的application标签值为generic,那么通过此限制,微服务启动时,只会在新增的机器上启动。

方式二:

通过--placement-pref 标签:

如果application标签中,有些机器的值为generic,有些是special。但是staging标签只有新的这台机器使用,那么通过如下的启动参数:

--placement-pref spread=application --placement-pref spread=staging,就可以限制启动在新的机器,如果新的机器挂了,那么微服务就会启动在别的机器。

因为此命令只是表示优先选择符合条件的机器,如果找不到,那么启动此微服务的时候等于没有限制。官网描述如下:

docker swarm 部署服务时,限制服务启动后所在的机器的更多相关文章

  1. docker swarm部署spring cloud服务

    一.准备docker swarm的集群环境 ip 是否主节点   192.168.91.13 是   192.168.91.43 否   二.准备微服务 ①eureka服务 application.y ...

  2. 基于docker 如何部署surging分布式微服务引擎

    1.前言 转眼间surging 开源已经有1年了,经过1年的打磨,surging已从最初在window 部署的分布式微服务框架,到现在的可以在docker部署利用rancher 进行服务编排的分布式微 ...

  3. Docker Swarm部署集群

    一.Swarm简介 Swarm是Docker的一个编排工具,参考官网:https://docs.docker.com/engine/swarm/ Swarm 模式简介 要在Swarm模式下运行dock ...

  4. 从零开始,使用Docker Swarm部署集群教程

    本文首先从Dockerfile创建了一个简单web镜像 然后将web镜像推送到了远程仓库,以备后面集群中不同机器自动下载 之后使用docker-compose.yml配置了一个应用 而后新建了2台虚拟 ...

  5. 容器基础(八): 使用docker swarm部署程序

    环境 基于上一节的env/server:v0.1, env/worker:v0.1镜像, 在基于debian8.2的两台机器上测试部署docker swarm. docker service部署 ➜ ...

  6. Docker Compose部署Nexus3时的docker-compose,yml代码

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  7. mysql启动服务时提示"服务名无效"

    1,首先说明一下我的环境,我刚开始是用的XAMPP这个集成的软件,里面安装了apache, mysql,tomcat这些软件,然后通过控制面板对其进行启动关闭的操作,这些操作很方便,但是我就用net ...

  8. Mysql----mysql启动服务时提示"服务名无效"

    1,首先说明一下我的环境,我刚开始是用的XAMPP这个集成的软件,里面安装了apache, mysql,tomcat这些软件,然后通过控制面板对其进行启动关闭的操作,这些操作很方便,但是我就用net ...

  9. 使用node搭建服务时,服务可以启动,但是无法访问

    一开始搭建的是没有问题,能够正常启动和访问,然后吃了个饭回来就变成只能启动,浏览器访问不了了. 说真的,这是一个常识问题.使用node搭建服务访问本地文件,服务搭建的没有问题,能够正常启动.但是在浏览 ...

随机推荐

  1. 使用CUPS打印服务

    目录 1. 测试环境 2 2. CUPS介绍 3 2.1 CUPS的配置文件 3 2.1.1 cupsd.conf 3 2.1.2 cups-files.conf 3 2.1.3 printcap 3 ...

  2. win10下 git运行出现 fatal: open /dev/null or dup failed: No such file or directory

    在C:\Window\System32 位置,找到cmd,以管理员运行cmd,输入 sfc/scannow命令,进行修复操作.然后重启就可以用了

  3. 对于Linux内核执行过程的理解(基于fork、execve、schedule等函数)

    382 + 原创作品转载请注明出处 + https://github.com/mengning/linuxkernel/ 一.实验环境 win10 -> VMware -> Ubuntu1 ...

  4. [工作积累] D3D10+ 中 Pixel Shader 的input semantic和参数顺序

    由于semantic的使用,我们有理由相信 vertex shader的output 和 pixel shader的input是按照semantic来匹配的,而跟传入顺序无关.印象dx9时代是这样. ...

  5. 芯灵思SinlinxA33开发板 Linux平台总线设备驱动

    1.什么是platform(平台)总线? 相对于USB.PCI.I2C.SPI等物理总线来说,platform总线是一种虚拟.抽象出来的总线,实际中并不存在这样的总线. 那为什么需要platform总 ...

  6. 1-Two Sum @LeetCode

    1-Two Sum 题目 思路 题目中得到的信息有: 都是整数,并且可正可负,也可一个值包含多个: 只有一个正确的结果. 方法一: 最直接的思路就是两重循环遍历,时间复杂度是O(n^2),这样肯定不行 ...

  7. 【C#】stream图像转byte的问题

    Image xx = Image.FromStream(linkList[ii].stream); byte[] bytes = new Byte[linkList[ii].stream.Length ...

  8. Git使用之(pathspec master did not match any file(s) known to git)

    一 问题概述 今天在工作中遇到一个问题,使用很久的一个local git repository,里面只有develop分支,那么现在想将分支切换到master分支,问题来了,在切换到master分支时 ...

  9. 时间规划在Optaplanner上的实现

    在与诸位交流中,使用较多的生产计划和路线规划场景中,大家最为关注的焦点是关于时间的处理问题.确实,时间这一维度具有一定的特殊性.因为时间是一维的,体现为通过图形表示时,它仅可以通过一条有向直线来表达它 ...

  10. java 通信

    UDP package com.le; import org.junit.Test; import java.io.IOException; import java.net.DatagramPacke ...