首页 > 其他分享 >Docker Swarm Cluster 部署

Docker Swarm Cluster 部署

时间:2024-01-11 11:26:16浏览次数:30  
标签:swarm agent Swarm Running nginx portainer Docker docker Cluster

1、部署环境

服务器名称 IP地址 备注
node01 10.32.161.124 Manager
node02 10.32.161.125 Work
node03 10.32.161.126 Work

2、Docker CE安装

参考:https://www.cnblogs.com/a120608yby/p/9883175.html

3、更改所有节点配置

# 修改配置并重启docker
# vi /etc/docker/daemon.json
{
    "live-restore": false
}


# systemctl restart docker

# 防火墙配置
firewall-cmd --add-port={2377/tcp,7946/tcp,7946/udp,4789/udp}
firewall-cmd --runtime-to-permanent

# 安装命令补全
dnf install bash-completion -y

4、在Manager节点上初始化

# docker swarm init
Swarm initialized: current node (bfa2c8gfcxgmb60uq4e0j9zgp) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-5yz0ag8l4mqj1gw20kl6fn4j38gj9rs4oefi6pgyuz40wsjotp-1tpgymi77j5idqanazqbpsmoj 10.32.161.124:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

5、将Work节点加入集群

# docker swarm join \
--token SWMTKN-1-5yz0ag8l4mqj1gw20kl6fn4j38gj9rs4oefi6pgyuz40wsjotp-1tpgymi77j5idqanazqbpsmoj 10.32.161.124:2377
This node joined a swarm as a worker.

6、在Manager节点上验证集群节点情况

# docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
bfa2c8gfcxgmb60uq4e0j9zgp *   node01     Ready     Active         Leader           24.0.7
c6zanp6akzdpzefiyudynajcc     node02     Ready     Active                          24.0.7
yuw9tg4ufwmtslanebshyg7zb     node03     Ready     Active                          24.0.7

7、在Manager节点上创建镜像和服务

# 创建服务
# docker service create --name swarm_cluster --replicas=2 -p 80:80 nginx:stable-alpine
ue6t4lnrn9s5udcowue6v3oe5
overall progress: 2 out of 2 tasks 
1/2: running   [==================================================>] 
2/2: running   [==================================================>] 
verify: Service converged 

# 查看服务
# docker service ls
ID             NAME            MODE         REPLICAS   IMAGE                 PORTS
ue6t4lnrn9s5   swarm_cluster   replicated   2/2        nginx:stable-alpine   *:80->80/tcp

# docker service inspect swarm_cluster --pretty

ID:             ue6t4lnrn9s5udcowue6v3oe5
Name:           swarm_cluster
Service Mode:   Replicated
 Replicas:      2
Placement:
UpdateConfig:
 Parallelism:   1
 On failure:    pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Update order:      stop-first
RollbackConfig:
 Parallelism:   1
 On failure:    pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Rollback order:    stop-first
ContainerSpec:
 Image:         nginx:stable-alpine@sha256:089520833b93077841d3cdc7ab1f7b817de73c7e10070b71b85fa97da7623dbe
 Init:          false
Resources:
Endpoint Mode:  vip
Ports:
 PublishedPort = 80
  Protocol = tcp
  TargetPort = 80
  PublishMode = ingress 

# docker service ps swarm_cluster
ID             NAME              IMAGE                 NODE      DESIRED STATE   CURRENT STATE           ERROR     PORTS
p8ik8k4eijfk   swarm_cluster.1   nginx:stable-alpine   node02    Running         Running 2 minutes ago             
l6qosoijkpzw   swarm_cluster.2   nginx:stable-alpine   node03    Running         Running 2 minutes ago 

# 访问服务
# for i in {124..126}; do curl -I 10.32.161.$i; done
HTTP/1.1 200 OK
Server: nginx/1.24.0
Date: Thu, 11 Jan 2024 02:47:49 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Tue, 11 Apr 2023 17:21:57 GMT
Connection: keep-alive
ETag: "64359735-267"
Accept-Ranges: bytes

HTTP/1.1 200 OK
Server: nginx/1.24.0
Date: Thu, 11 Jan 2024 02:47:49 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Tue, 11 Apr 2023 17:21:57 GMT
Connection: keep-alive
ETag: "64359735-267"
Accept-Ranges: bytes

HTTP/1.1 200 OK
Server: nginx/1.24.0
Date: Thu, 11 Jan 2024 02:47:49 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Tue, 11 Apr 2023 17:21:57 GMT
Connection: keep-alive
ETag: "64359735-267"
Accept-Ranges: bytes

# 服务伸缩
# docker service scale swarm_cluster=3
swarm_cluster scaled to 3
overall progress: 3 out of 3 tasks 
1/3: running   [==================================================>] 
2/3: running   [==================================================>] 
3/3: running   [==================================================>] 
verify: Service converged 

# docker service ps swarm_cluster
ID             NAME              IMAGE                 NODE      DESIRED STATE   CURRENT STATE           ERROR     PORTS
p8ik8k4eijfk   swarm_cluster.1   nginx:stable-alpine   node02    Running         Running 5 minutes ago             
l6qosoijkpzw   swarm_cluster.2   nginx:stable-alpine   node03    Running         Running 5 minutes ago             
u8yxsvmn8up7   swarm_cluster.3   nginx:stable-alpine   node01    Running         Running 9 seconds ago 

8、Portainer CE 安装

# 下载部署文件
curl -L https://downloads.portainer.io/ce2-19/portainer-agent-stack.yml -o portainer-agent-stack.yml

# 部署portainer
# docker stack deploy -c portainer-agent-stack.yml portainer
Creating network portainer_agent_network
Creating service portainer_agent
Creating service portainer_portainer

# docker stack ps portainer 
ID             NAME                                        IMAGE                           NODE      DESIRED STATE   CURRENT STATE           ERROR     PORTS
ppo2yz1g5jjx   portainer_agent.bfa2c8gfcxgmb60uq4e0j9zgp   portainer/agent:2.19.4          node01    Running         Running 2 minutes ago             
1puaw3gom6ts   portainer_agent.c6zanp6akzdpzefiyudynajcc   portainer/agent:2.19.4          node02    Running         Running 2 minutes ago             
e5f04449exnr   portainer_agent.yuw9tg4ufwmtslanebshyg7zb   portainer/agent:2.19.4          node03    Running         Running 2 minutes ago             
2i6ae0pwrhbv   portainer_portainer.1                       portainer/portainer-ce:2.19.4   node01    Running         Running 2 minutes ago  

  Portainer访问

访问地址:http://Manager地址:9000/
默认账号:admin

 

参考:

https://docs.docker.com/engine/swarm/swarm-tutorial/create-swarm/
https://docs.portainer.io/start/install-ce/server/swarm/linux

  

标签:swarm,agent,Swarm,Running,nginx,portainer,Docker,docker,Cluster
From: https://www.cnblogs.com/a120608yby/p/17957423

相关文章

  • Docker安装nacos(配置文件映射)
    1、拉取镜像dockerpullnacos/nacos-serverPS:这是拉取最新的nacos版本,若是要拉取指定版本,则可以在后面加上版本号(如:dockerpullnacos/nacos-server:v2.2.0)2、创建存储nacos数据信息的目录在根目录下创建/data/docker/nacos目录,用于挂载存储nacos的数据信息mkdir/data/doc......
  • docker安装oracle并修改服务名修改字符集
    拉取镜像dockerpullregistry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g 创建容器dockerrun-d-p1521:1521--nameoracle11gregistry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g  查看容易dockerps-a 进入容器dockerexec-itoracle11gbash 切......
  • docker自建镜像&上装镜像
    创建一个文件名称:Dockerfile 内容:FROMopenjdk:8-jre #拉取openjdk:8-jre这个镜像ADD1center-1.0.jar app.jar #jar包放到和dockerfile同级EXPOSE8761   #端口ENTRYPOINT["java","-jar","/app.jar"]  #启动jar包命令 FROM[镜像:版本]:指定所依赖的基础......
  • docker安装tomcat
    Tomcat安装拉取镜像:dockerpulltomcat:8.5.46-jdk8-openjdk  [root@node~]#mkdir-p/data/tomcatcas/webapps[root@node~]#chmod-R777/data/tomcatcas/ 创建挂载路径容器  路径不对的话自己修改下dockerrun-d --namemy_web--restartalways-p808......
  • docker安装nginx
    Nginx安装 1、拉取镜像(不指定版本,默认最新版) dockerpullnginx  2、创建挂载目录     mkdir-p/data/nginx/conf    mkdir-p/data/nginx/logmkdir-p/data/nginx/html [root@localhostconf]#mkdir-p/data/nginx/html[root@localhostconf]#......
  • docker安装es
    Es安装拉取esdockerpullelasticsearch:6.6.1    启动dockerrun-p9200:9200-p9300:9300--namees6.6\-e"discovery.type=gold-application"\-eES_JAVA_OPTS="-Xms1024m-Xmx1024m"\-delasticsearch:6.6.1进入容器dockerexec-ites6.6......
  • docker可视化工具部署
    在线安装安装前最好自己安装docker 具体参考官网https://1panel.cn/docs/installation/online_installation/RedHat/CentOScurl-sSLhttps://resource.fit2cloud.com/1panel/package/quick_start.sh-oquick_start.sh&&shquick_start.sh Ubuntucurl-sSLhttps......
  • 基于 Docker 打造前端持续集成开发环境
    基于Docker打造前端持续集成开发环境写在前面:这不是一篇有新意的文章,因为这篇文章半年前我就发布在其他平台上过,为什么在知乎上旧文新发?除了想要把发布在其他地方的文章统一放到知乎上之外,还源于我最近在面试一些前端工程师时的一些疑惑,发现很多应聘高级前端岗的开发者对J......
  • docker compose 方式再次部署kodbox 可道云 nas服务
    本次dockercompsoe方式部署的可道云使用三个服务话不多说先上docker-compose.yml,着急的直接dockercomposeup-d运行version:'3.5'services:db:image:mariadbcommand:--transaction-isolation=READ-COMMITTED--binlog-format=ROWvolumes:-"/r......
  • 分布式机器学习的故事:Docker改变世界
    分布式机器学习的故事:Docker改变世界Docker最近很火。Docker实现了“集装箱”——一种介于“软件包”和“虚拟机”之间的概念——并被寄予厚望,以期革新Internet服务以及其他大数据处理系统的开发、测试、和部署流程。为了使用Docker,需要了解不少工具及其设计思路;而这些工具的文......