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,就可以限制启动在新的机器,如果新的机器挂了,那么微服务就会启动在别的机器。
因为此命令只是表示优先选择符合条件的机器,如果找不到,那么启动此微服务的时候等于没有限制。官网描述如下:
最新文章
- iOS url中文编码
- 云虚拟主机开源 DedeCMS 安装指南
- Unity3D入门
- Ubuntu 安装 mysql 并修改数据库目录
- nginx学习(1):编译、安装、启动
- YII Framework学习教程-YII的国际化
- 二维码zxing源码分析(二)decode部分
- Linux时间函数
- XHProf 初探
- tableview选择的时候不要cell的高亮显示样式
- 国产数据库-KingbaseES在linux下的安装
- 关于SQL的一些小知识
- 团队作业10--事后分析(Beta版本)
- Httpd2.2常见配置及功能
- c# IPC实现本机进程之间的通信
- PYTHON使用入门
- Java笔记(十四) 并发基础知识
- Msfvenom学习总结
- 程序的流程控制-分支结构 if
- 15个优秀的开源项目,让你轻松应对Android开发
热门文章
- 你想知道吗?come
- 【简书】在阿里云自带的CentOS + LAMP环境下部署一个Laravel项目
- robotframework之滚动条
- 自定义事件——Event和CustomEvent
- C#用反射实现两个类的对象之间相同属性的值的复制
- 【转】/etc/rc.d/rc与/etc/rc.d/init.d的关系介绍
- Oracle 动态SQL 注意细节 ORA-00911: 无效字符
- webAPP如何实现移动端拍照上传(Vue组件示例)?
- declaration may not appear after executable statement in block
- Centos 7 64位 minimal 最小化安装的系统中静默安装oracle 11g r2