Go游戏服务器开发的一些思考(六):Docker Swarm Mode
来源:互联网 发布:vb 中的structure 编辑:程序博客网 时间:2024/05/16 18:28
为什么使用Docker
一次搭建开发环境
搭好一次,到处拉取
统一的测试环境
不会因为机器不同、系统不同、安装软件不同,造成测试环境差异
直接提供部署方案
直接提供部署编排脚本,指导运维开服
专注于服务开发
不要再关注如何负载均衡、如何提供连续服务 等等一系列生产环境中的问题
为什么使用Docker Swarm,而不是 Kubernetes
这里列举下Swarm的优点
- Docker官方维护,一直在完善
- 简单,不需要额外工具 (仅需要安装Docker,Swarm、Compose等所有相关均集成进Docker)
- 简单,命令与Docker命令类似
Docker Swarm 介绍
目前最新的 Swarm (docker 1.13.0 以上版本),提供了以下功能:
Swarm集群
- 包含2种节点:manager(管理节点)和worker(容器节点)
- manager节点去中心化,即保证Swarm有效
- 跨主机,在Swarm前,用官方手段,Docker容器只能开单机
负载均衡
- 容器节点上内置代理,进行负载均衡
- 容器节点上即使不开容器实例,也可以被正常访问
服务发现
- 内置生成Swarm集群网络
- 内置生成DNS服务
服务扩缩
- 可以通过命令 增加或减少容器数量
滚动更新
- 按照时间间隔依次更新容器
- 更新期间某容器更新失败,则自动回滚
维护集群状态
- 实时维护集群到配置所期望的状态
- 容器失效重开
- 容器节点故障转移
Docker Swarm 安装介绍
让Swarm管理的机器(物理机、虚拟机、云) 均要安装Docker
Docker版本要求docker 1.13.0及以上
在作为manager的节点上执行
node_ip=192.168.93.183docker swarm init --advertise-addr=$node_ip
则生成一个管理节点,和集群token
其他节点通过执行以下语句加入Swarm集群
docker swarm join --token=?
如何查询token,可以在管理节点上执行以下语句
docker swarm join-token workerdocker swarm join-token manager
Docker Swarm 常见命令介绍
docker service 系列
- docker service ls
- docker service ps
- 其他见 docker service help
docker node 系列
- docker node ls
- 其他见 docker node help
docker volume 系列
- docker volume ls
- 其他见 docker volume help
docker-stack.yml 容器部署编排脚本
有了 Swarm集群后,上面还没有任何容器在运行。Docker通过docker-stack.yml来定义容器部署方式。并实时监视集群状态,使其达到docker-stack.yml中所描述的状态
目前 docker-stack.yml 版本为 v3.0。所有docker-stack.yml支持的格式及功能,官方文档中有详细介绍。文档地址如下:
https://docs.docker.com/compose/compose-file/
阅读全文
0 0
- Go游戏服务器开发的一些思考(六):Docker Swarm Mode
- Go游戏服务器开发的一些思考(二十五):Redis的Docker Swarm部署
- Go游戏服务器开发的一些思考(二十):Docker Swarm部署Etcd示例
- Go游戏服务器开发的一些思考(十八):Docker内网环境搭建(备忘)
- Go游戏服务器开发的一些思考(八):Docker桥接网络及固定IP
- Go游戏服务器开发的一些思考(七):Redis
- Go游戏服务器开发的一些思考(九):Docker桥接网络及固定IP (二)
- Go游戏服务器开发的一些思考(十六):IO游戏服务器架构
- Go游戏服务器开发的一些思考(二十一):Go语言的两处脑残设定
- Go游戏服务器开发的一些思考(二十三):Go语言Log库封装技巧
- Go游戏服务器开发的一些思考(二十六):Go Redis ORM库
- Go游戏服务器开发的一些思考(十四):IO游戏同步(二)
- Go游戏服务器开发的一些思考(十七):IO游戏同步(三)
- Go游戏服务器开发的一些思考(十一):IO游戏同步
- Go游戏服务器开发的一些思考(十三):behavior3go的一些坑(备忘)
- Go游戏服务器开发的一些思考(十九):服务器架构之服务发现
- Go游戏服务器开发的一些思考(五):goroutine看似美好的陷阱
- Go游戏服务器开发的一些思考(二):综合考察(上)
- 优化算法——牛顿法(Newton Method)
- JS基础整理,入个门。
- java基础学习二之异常
- 用Python抓取亚马逊云(AWS)的日志(CloudTrail)数据
- Spring使用java驱动定时调用MongoDB函数
- Go游戏服务器开发的一些思考(六):Docker Swarm Mode
- Mybatis优化
- 关于mob第三方登录的坑——微信篇
- onTouchEvent在DOWN事件里发送多条相同数据和UP里终止线程
- 优化算法——差分进化算法(DE)
- 8.4.1.6_图像与精灵的碰撞检测
- 编写Java程序,应用for循环打印菱形。
- 九度 1110:小白鼠排队
- python logging日志模块学习