内容简介:上次了解了docker Swarm,这次一起动手操作,搭建swarm的集群环境,一起测试下三种环境下的服务发现和负载均衡,一个自定义下的overlay下的网络发现,一个Ingress下的服务发现,一个是Ingress+link下的,跟上次Mesos一样我们先建立三台服务虚拟机。 源码:docker运行状态,切换到root用户
上次了解了docker Swarm,这次一起动手操作,搭建swarm的集群环境,一起测试下三种环境下的服务发现和负载均衡,一个自定义下的overlay下的网络发现,一个Ingress下的服务发现,一个是Ingress+link下的,跟上次Mesos一样我们先建立三台服务虚拟机。 源码:
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
<pre><code class="">![](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: alpine command: - "ping" - "www.baidu.com" networks: - "idig8-overlay" deploy: replicas: 2 restart_policy: condition: on-failure resources: limits: cpus: "0.1" memory: 50M depends_on: - nginx nginx: image: nginx networks: - "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的服务发现,负载均衡。
>>原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
>>原文链接地址:上一篇:已是最新文章
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Elasticsearch 集群搭建和集群原理
- Zookeeper学习系列【二】Zookeeper 集群章节之集群搭建
- Spark集群环境搭建
- Zookeeper搭建集群
- FastDFS集群搭建
- Zookeeper集群环境搭建
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C语言常用算法分析
明日科技 / 2012-1 / 39.80元
《C语言学习路线图•C语言常用算法分析》共分为4篇,第1篇为算法基础篇,包括程序之魂——算法、数据结构基础、查找与排序算法、基本算法思想等内容;第2篇为常用算法篇,包括数学算法、矩阵与数组问题、经典算法等内容;第3篇为趣味算法篇,包括数学趣题、逻辑推理题等内容;第4篇为算法竞技篇,包括计算机等级考试算法实例、程序员考试算法实例、信息学奥赛算法实例等内容。 《C语言学习路线图•C语言常用算法分......一起来看看 《C语言常用算法分析》 这本书的介绍吧!