原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文链接地址:『高级篇』docker之DockerSwarm的集群环境搭建(28)

上次了解了docker Swarm,这次一起动手操作,搭建swarm的集群环境,一起测试下三种环境下的服务发现和负载均衡,一个自定义下的overlay下的网络发现,一个Ingress下的服务发现,一个是Ingress+link下的,跟上次Mesos一样我们先建立三台服务虚拟机。 源码:https://github.com/limingios/msA-docker swarm分支

server01

docker运行状态,切换到root用户

docker version

默认情况下network的结构

docker network ls

查看ip地址

ifconfig

设置manager,初始化manager节点,添加一个work在swarm上,运行下面的命令可以添加work,加入到这个manage中。

docker swarm init --advertise-addr 192.168.66.101

server02

执行添加到manager的命令。

server03

执行添加到manager的命令。

在server01中添加了server02 和server03的work后,查看网络

之前是只有三个,一个bridge,一个host,一个none;多了个docker_gwbridge,一个ingress。

ingress的overlay网络,这个网络需要借助docker-gwbridge这个网桥进行连接。如果是

docker network ls

docker swarm的如何高可用

目前的manager只有一个,如果manager节点挂了,这个集群也就挂了。docker swarm 有高可用的状态,就是将server02 和server03 ,manager节点本身也可以提供服务运行的状态,即便我们三个节点都是manager也是可以运行服务的。现在把三个节点都变成manager节点试一下。

docker node ls

升级server02成为manager。变成了Reachable,这个跟zookeeper的原理是一样的,当一个leader挂了之后,通过选取可以产生一个新的leader。

docker node promote docker-swarm-02
docker node promote docker-swarm-03

PS:以上就完成高可用的docker swarm的集群环境,其实真心比其他的简单。

测试集群环境

  • 小的镜像测试

创建一个小的镜像,完成ping www.baidu.com

docker service create --name test1 alpine ping www.baidu.com
docker service ls

``` 查看日志
docker service logs test1

![](https://upload-images.jianshu.io/upload_images/11223715-f6ac8c36146450df.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)* nginx的环境测试
``` bash
docker service create --name nginx nginx
docker service ls

曾经有老铁问我,如果是容器创建了需要修改创建时候的配置怎么办,我告诉他想给当前容器做个tag打成一个镜像A,然后通过镜像A,生成新的一个新的容器在run里增加你的配置,记住前提是要把原来的容器删除。

对于docker swarm中的service 难道也需要删除?其实不需要直接通过docker service update来完成。

docker service ls
docker service update --publish-add 8080:80 nginx
docker service ls

现在的nginx 太少了只有1个,如果挂了,还要打电话让人解决。其实还是有办法的。多起几个。可以多等一会,时间就不紧急了,吃了饭再过去。

docker service scale nginx=3
docker service ls

  • 默认使用的Ingress下的overlay网络,两个service之前是无法通过service的名称进行访问的。可以试试。

自定义网络添加到docker swarm中。

  • 删除刚才创建nginx 和test1
docker service rm nginx test1

  • 创建网络

    docker network create -d overlay idig8-overlay

  • 创建一个service指定网络

    nginx

docker service create --network idig8-overlay --name nginx -p 8080:80 nginx

alpine

 docker service create --network idig8-overlay --name alpine alpine ping www.baidu.com

  • 查看alpine所在的机器,进入容器,ping nginx

    查看是在server02这台机器上。

docker service ps alpine

进入server02机器,ping 容器名称是nginx的 发现可以ping通

docker ps
docker exec -it 387dd735de74 sh
ping nginx

PS:当前的网络Ingress,容器之间的访问方式可以通过名字访问。在自定义的网络下swarm每个service,都创建一个dnsadress,一定要是自定义的overlay的。

  • dnsrr的方式

    描述是参数不对,在dnsrr下不能开放端口的,他们之间是冲突的。dnsrr是给只通过名字访问。如果不加入overlay的网络它就是独立的。

    docker service create --name nginx-b --endpoint-mode dnsrr -p  8090:80 nginx

如果想dnsrr网络可以被访问,可以针对这个service增加overlay的网络

docker service updata --network-add idig8-overlay nginx-b
  • docker stack

    单机模式下,我们可以使用 Docker Compose 来编排多个服务,而在Docker Swarm 通过 Docker Stack 我们只需对已有的 docker-compose.yml 配置文件稍加改造就可以完成 Docker 集群环境下的多服务编排。

version: "3.4"
services:alpine:image: alpinecommand:- "ping"- "www.baidu.com"networks:- "idig8-overlay"deploy:replicas: 2restart_policy:condition: on-failureresources:limits:cpus: "0.1"memory: 50Mdepends_on:- nginxnginx:image: nginxnetworks:- "idig8-overlay"ports:- "8080:80"
networks:idig8-overlay:external: true

查看stack的命令,上边走的是vip负载均衡的方式而不是dnsrr的方式。

docker stack ls
# -c 文件名 组名
docker stack deploy -c service.yml  test

PS:dockerSwarm的服务发现,负载均衡。

转载于:https://blog.51cto.com/12040702/2350041

『高级篇』docker之DockerSwarm的集群环境搭建(28)相关推荐

  1. 『高级篇』docker之APIGateway(17)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『高级篇』docker之APIGateway(17) 这次说最后一个模块APIGateway,他的功能就是将我们客户端的请求统 ...

  2. 『高级篇』docker容器来说什么是微服务(三)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『高级篇』docker容器来说什么是微服务(三) 上一节说了单体架构,单体架构也无法适应我们的服务,来说说微服务,看能否解决单 ...

  3. 『高级篇』docker之开发课程EdgeService(16)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『高级篇』docker之开发课程EdgeService(16) 课程的edgeService依赖于课程服务的dubbo服务,对 ...

  4. 『高级篇』docker之安全认证kubernetes命令熟悉(40)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『高级篇』docker之安全认证kubernetes命令熟悉(40) 安全版的kubernetes集群我们部署完成了. 下面我 ...

  5. 『高级篇』docker之开发用户服务EdgeService(13)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『高级篇』docker之开发用户服务EdgeService(13) 上一节开发了用户服务,即将开发的是用户服务EdgeServ ...

  6. 『高级篇』docker容器来说微服务优势和不足(四)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『高级篇』docker容器来说微服务优势和不足(四) 来看看微服务有哪些优势和不足. 优势 独立性 从构建部署,扩容收容,容错 ...

  7. C++轻量级微服务_『高级篇』docker容器来说什么是微服务(三)

    上一节说了单体架构,单体架构也无法适应我们的服务,来说说微服务,看能否解决单体架构的问题. 什么是微服务 最近两,三年才出现的新名词,虽然时间还不是很长,几乎每个软件从业人员对它有影响,也都通过微服务 ...

  8. 『中级篇』docker之CI/CD持续集成-(终结篇)(77)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker之CI/CD持续集成-(终结篇)(77) 今天是中级终结篇的最后一次了,想想在二个月的时间,每天的坚持学 ...

  9. 『中级篇』docker企业版本地安装之UCP(57)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker企业版本地安装之UCP(57) 安装虚拟机,准备安装docker ee,源码:https://githu ...

最新文章

  1. 文件魔术数字_如何使用魔术脚手架自动创建文件并节省时间
  2. 织梦Cms怎么一直服务器维护中,织梦cms文档关键词维护中频率详解
  3. 关于Unity实现AR功能(四)设置相机的对焦
  4. java实现抽奖游戏_Java实现游戏抽奖算法
  5. jmeter 压测 RabbitMQ_单机
  6. Tesla 两年前车祸致死案,事故报告终发布
  7. 语音识别技术在汽车上的应用
  8. python第九天课程:遇到了金角大王
  9. smart-link原理
  10. c语言的常用英语单词和翻译,c语言通用英语词汇带翻译
  11. 线程安全的几种单例模式
  12. Protel DXP2004 中文版 下载及安装
  13. 树莓派安装smbus_树莓派学习之I2C通信
  14. 软件架构思想和系统架构图
  15. 产品设计-产品框架设计
  16. SDNU-1014 页码问题
  17. 100+大屏模板免费领!葡萄城BI行业应用方案重磅发布!
  18. 中国大学慕课公开课-《视听语言》-学习笔记-6
  19. can和could的用法_can和could的用法
  20. 【源码】粒子图像测速PIV简介及MATLAB工具箱PIVlab

热门文章

  1. 4 app版本号 swift_已开源 app 实现检查更新的简单方式
  2. 【思维导图】音乐为何会让我们产生特定情绪?
  3. Gear 360新款发布!预购有礼哦
  4. 新上市Lighthouse专用芯片TS3633规格介绍
  5. java web的ssh框架_JavaWeb_(SSH论坛)_二、框架整合
  6. Magic Leap 2实测出炉:视场角增大20度,重量减轻20%,透光率低至0.3%让AR特效更逼真...
  7. AlphaFold和RoseTTAFold双剑合璧,成功预测蛋白质复合体结构,北大校友领衔登上Science...
  8. 颜水成团队开源VOLO:无需额外数据,首次在ImageNet上达到87.1%的精度
  9. Debug无忧!清华校友打造Python调试神器:反向追踪变量、数据流等 | 开源
  10. 自动驾驶年度激辩:载货比载人更快,商业化应成为评价指标 | MEET2021