当前位置:网站首页>7.Swarm搭建集群
7.Swarm搭建集群
2020-11-06 22:38:00 【太猪-YJ】
使用dokcer会遇到的问题:
- 怎么去管理这么多容器?
- 怎么能方便的横向扩展
- 如果容器down了,怎么能恢复启动?
- 如何去更新容器而不影响业务?
- 如何去监控追踪这些容器?
- 怎么去调度容器的创建?
- 保护隐私数据?
Docker自带了容器编排工具:Swarm Mode
Manager节点作为管理者,为了维持高可用,不能只部署一个,如果部署多个又存在状态如何同步的问题。docker内置了分布式数据库,通过raft协议确保Manager信息是同步的,不会出现脑裂这种现象。
Worker节点是工作节点,它也需要和其他Worker节点数据同步,使用Gossip协议进行信息的同步。
我们通过swarm manager节点去部署一个service,我们是不知道这个service最终会运行在哪些容器节点上的。swarm manager会根据一些策略,比如内存,硬盘资源等,将service部署在某些container node中。
3 nodes swarm cluster setup
1.在第一台机器上,创建docker swarm manager命令
docker swarm init --advertise-addr=192.168.8.117 本机IP
创建成功,会返回 docker swarm join --token SWMTKN-1-1aud6ztpiwgujisqn20gb9lfldziidj0dz7lww3puod36t5j5d-c6azyl8d0rhhzd8c25u9laxxp 192.168.8.117:2377 用于其他docker swarm join本机,建立集群。
2.在第二台机器上,创建docker swarm并加入第一台机器,命令
docker swarm join --token SWMTKN-1-1aud6ztpiwgujisqn20gb9lfldziidj0dz7lww3puod36t5j5d-c6azyl8d0rhhzd8c25u9laxxp 192.168.8.117:2377
发生异常
Error response from daemon: rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing dial tcp 192.168.8.117:2377: connect: no route to host"
原因
如果要使用swarm功能,需要在所有manager node节点上开启2377端口。
解决办法
开放指定端口 firewall-cmd --zone=public --add-port=2377/tcp --permanent
重启防火墙才生效 systemctl restart firewalld
查看swarm node
docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
5xeakkex0klrezwb1p5y0pcja localhost.localdomain Ready Active 19.03.13
rk1pu6zgxkh278262d5yprzqi localhost.localdomain Ready Active 19.03.13
ulms2qb8gvnehsmgx7d7dcx9a * localhost.localdomain Ready Active Leader 19.03.13
搭建步骤:
1、环境准备:
1.1、准备三台已近安装docker engine的centos/Ubuntu系统主机(docker版本必须在
1.12以上的版本,老版本不支持swarm)
1.2、docker容器主机的ip地址固定,集群中所有工作节点必须能访问该管理节点
1.3、集群管理节点必须使用相应的协议并且保证端口可用
集群管理通信:TCP,端口2377
节点通信:TCP和UDP,端口7946
覆盖型网络(docker网络):UDP,端口4789 overlay驱动
说明:三台容器主机的ip地址分别为:
192.168.200.162(管理节点)
192.168.200.163(工作节点)
192.168.200.158(工作节点)
主机名称分别为:manager1、work1以及work2
vim /etc/hostname (修改完成后需要重启)
2、创建docker swarm
2.1、在manager1机器上创建docker swarm集群
docker swarm init ‐‐advertise‐addr 192.168.200.162
(‐‐advertise‐addr将该IP地址的机器设置为集群管理节点;如果是单节点,无需该参
数)
2.2、查看管理节点集群信息:
docker node ls
3、向docker swarm中添加工作节点:在两个工作节点中分别执行如下命令,ip地址是
manager节点的
3.1、添加两个work节点
docker swarm join ‐‐token xxx 192.168.200.138:2377 (worker1)
docker swarm join ‐‐token xxx 192.168.200.138:2377 (worker2)
(‐‐token xxx:向指定集群中加入工作节点的认证信息,xxx认证信息是在创建docker
swarm时产生的)
3.2、继续查看管理节点集群信息与之前的区别
docker node ls
4、在docker swarm中部署服务
在Docker Swarm集群中部署服务时,既可以使用Docker Hub上自带的镜像来启动服务,也
可以使用自己通Dockerfile构建的镜像来启动服务。如果使用自己通过Dockerfile构建的
镜像来启动服务那么必须先将镜像推送到Docker Hub中心仓库。为了方便读者的学习,这里
以使用Docker Hub上自带的alpine镜像为例来部署集群服务
4.1、部署服务
docker service create ‐‐replicas 1 ‐‐name helloworld alpine ping
docker.com
docker service create指令:用于在Swarm集群中创建一个基于alpine镜像的服务
‐‐replicas参数:指定了该服务只有一个副本实例
‐‐name参数:指定创建成功后的服务名称为helloworld
ping docker.com指令:表示服务启动后执行的命令
5.查看docker swarm集群中的服务
查看服务列表:docker service ls
查看部署具体服务的详细信息:docker service inspect 服务名称
查看服务在集群节点上的分配以及运行情况:docker service ps 服务名称
6、修改副本数量
在manager1上,更改服务副本的数量(创建的副本会随机分配到不同的节点)
docker service scale helloworld=5
7、删除服务(在管理节点)
docker service rm 服务名称
8、访问服务
8.1、查看集群环境下的网络列表:docker network ls
8.2、在manager1上创建一overlay为驱动的网络(默认使用的网络连接ingress)
docker network create ‐d=overlay my‐multi‐host‐network
8.3、在集群管理节点manager1上部署一个nginx服务
docker service create \
‐‐network my‐multi‐host‐network \
‐‐name my‐web \
‐p 8080:80 \
‐‐replicas 2 \
nginx
8.3、在管理节点查看服务的运行情况:
docker service ps my‐web
8.4、访问测试
版权声明
本文为[太猪-YJ]所创,转载请带上原文链接,感谢
https://my.oschina.net/xiaoyoung/blog/4699871
边栏推荐
- 2020年新规,微信封号怎么快速解除?
- MRAM高速缓存的组成
- Nanjing logo design and production, guide VI system design
- Ora-02292: complete constraint violation (midbjdev2.sys_ C0020757) - subrecord found
- Stickinengine architecture 12 communication protocol
- Windows 10 Bluetooth management page 'add Bluetooth or other devices' option click no response solution
- C language I blog assignment 03
- August 24, 2020: what are small documents? What's wrong with a lot of small files? How to solve many small files? (big data)
- Count the number of project code lines
- Qt音视频开发46-视频传输UDP版
猜你喜欢
[graffiti Internet of things footprints] panoramic introduction of graffiti cloud platform
Application of UHF RFID medical blood management system
Plug in bilibilibili new version 0.5.5
How to add modules to nginx image?
Common mathematical basic formulas of recursive and backtracking algorithms
Git remote library rollback specified version
A good thing for working people -- to temper the will of iron and steel requires such an efficient computer
How to make characters move
The method of local search port number occupation in Windows system
Count the number of project code lines
随机推荐
测试攻城狮必备技能点!一文带你解读DevOps下的测试技术
August 18, 2020: introduce Mr process?
How to make characters move
Stm32f030f4p6 compatible with smart micro mm32f031f4p6
Count the number of project code lines
消防器材RFID固定资产管理系统
2020-08-15: under what circumstances should data tasks be optimized?
Unexpected element.. required element
非易失性MRAM存储器应用于各级高速缓存
How to manage the authority of database account?
Common mathematical basic formulas of recursive and backtracking algorithms
Plug in bilibilibili new version 0.5.5
汽车维修app开发的好处与功能
[doodling the footprints of Internet of things] Introduction to Internet of things
Points to be considered when deleting mapping field of index in ES
In 2020, how can wechat seal numbers be quickly lifted?
实验一
Using JSON webtoken (JWT) to generate token in nodejs
September 3, 2020: naked writing algorithm: loop matrix traversal.
MRAM高速缓存的组成