docker swarm 部署服务时,限制服务启动后所在的机器
借助容器技术,可以方便的在不同环境下部署服务,保证服务环境的一致性。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 部署服务时,限制服务启动后所在的机器的更多相关文章
- docker swarm部署spring cloud服务
一.准备docker swarm的集群环境 ip 是否主节点 192.168.91.13 是 192.168.91.43 否 二.准备微服务 ①eureka服务 application.y ...
- 基于docker 如何部署surging分布式微服务引擎
1.前言 转眼间surging 开源已经有1年了,经过1年的打磨,surging已从最初在window 部署的分布式微服务框架,到现在的可以在docker部署利用rancher 进行服务编排的分布式微 ...
- Docker Swarm部署集群
一.Swarm简介 Swarm是Docker的一个编排工具,参考官网:https://docs.docker.com/engine/swarm/ Swarm 模式简介 要在Swarm模式下运行dock ...
- 从零开始,使用Docker Swarm部署集群教程
本文首先从Dockerfile创建了一个简单web镜像 然后将web镜像推送到了远程仓库,以备后面集群中不同机器自动下载 之后使用docker-compose.yml配置了一个应用 而后新建了2台虚拟 ...
- 容器基础(八): 使用docker swarm部署程序
环境 基于上一节的env/server:v0.1, env/worker:v0.1镜像, 在基于debian8.2的两台机器上测试部署docker swarm. docker service部署 ➜ ...
- Docker Compose部署Nexus3时的docker-compose,yml代码
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- mysql启动服务时提示"服务名无效"
1,首先说明一下我的环境,我刚开始是用的XAMPP这个集成的软件,里面安装了apache, mysql,tomcat这些软件,然后通过控制面板对其进行启动关闭的操作,这些操作很方便,但是我就用net ...
- Mysql----mysql启动服务时提示"服务名无效"
1,首先说明一下我的环境,我刚开始是用的XAMPP这个集成的软件,里面安装了apache, mysql,tomcat这些软件,然后通过控制面板对其进行启动关闭的操作,这些操作很方便,但是我就用net ...
- 使用node搭建服务时,服务可以启动,但是无法访问
一开始搭建的是没有问题,能够正常启动和访问,然后吃了个饭回来就变成只能启动,浏览器访问不了了. 说真的,这是一个常识问题.使用node搭建服务访问本地文件,服务搭建的没有问题,能够正常启动.但是在浏览 ...
随机推荐
- 简述osi七层模型和TCP/IP五层模型
OSI七层模型 OSI七层模型的划分 应用层(Application).表示层(presentation).会话层(session).传输层(Transport).网络层(Network).数据链路层 ...
- 跨域访问技术CORS(Cross-Origin Resource Sharing)简介
为什么要用CORS? CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing). 它允许浏览器向跨源服务器,发出XMLHttp ...
- KiCad EDA 原理图库的最佳实践
KiCad EDA 原理图库的最佳实践 由于有 Alias 别名元件,可以不用一个每一个元件都有一个元件. 对每种元件类型建议一个元件库. 因为 Value 和 元件名是一样的,所以元件名要尽可能的简 ...
- 03day->python基本数据类型
基本数据类型 1.数字(int) a = 5 a.bit_length() # 查看数字实际用到的bit位 2.布尔值(bool) 用于条件判断 3.字符串(str) ...
- hanlp 加载远程词库示例
说明 ·目前的实现方式是以远程词库的内容重新构建CustomDictionary.trie,demo主要是为了实现同步远程词库,对性能暂不作考虑,对性能要求要以CustomDictionary.dat ...
- MQTT研究之EMQ:【基础研究】
EMQ版本V2, emqttd-centos7-v2.3.11-1.el7.centos.x86_64.rpm 下载地址:http://emqtt.com/downloads/2318/centos7 ...
- android studio 升级到3.3.1后,提示程序包不存在
android studio 升级到3.3.1后,提示程序包不存在 原因 主Module--A 引用了其他Moduel--B里的jar库, 只需要把B的dependencies改成如下(implent ...
- Open Source 开发工具集
Open Source 开发工具集 转自:http://www.linuxforum.net原作者:gogoliu(Pooh-Bah) 编辑器: vi:老牌编辑器,在各个unix和unix-like平 ...
- ubuntu中连接mssql数据库sqlserver
参考文章 https://blog.csdn.net/fangaoxin/article/details/5386149 (感谢作者) sudo apt-get install tdsodbc sud ...
- Stripes视图框架实现纯Java代码控制表现层参考文档
https://blog.csdn.net/boonya/article/details/14101477 Stripes是一个开放源码的Web应用程序框架的基础上的模型 - 视图 - 控制器(MVC ...