首页 > 其他分享 >Docker Swarm管理

Docker Swarm管理

时间:2024-08-13 12:25:40浏览次数:15  
标签:管理 -- 节点 Swarm manager 集群 Docker root docker

一、 Docker Swarm 群集部署

        Docker 自诞生以来,其容器特性以及镜像特性给 DevOps 爱好者带来诸多方便。然而在很长一段时间内,Docker 只能在单机上运行,其跨主机部署、运行与管理能力颇受外界诟病。跨主机能力薄弱,导致 Docker 容器与主机的形成高度耦合,降低了 Docker 容器的灵活性,难以实现容器的迁移、分组等功能。

1.1案例前置知识点

1.Docker Swarm 概述

        Docker Swarm 是 Docker 社区提供的基于 Docker 的集群管理调度工具,能够将多台主机构建成一个 Docker 集群,用户通过 API来管理多个主机上的 Docker,并结合 Overlay网络实现容器的调度与相互访问。
        Docker Swarm 默认对外提供两种 API。

  • 标准的 Docker APl:包括 Docker Client、Dokku、Compose、DockerUl、Jenkins 等,它们可以通过 Swarm 工具与 Docker 集群进行通信;
  • 集群管理 AP|:用于集群的管理。

2.基本特性

        Docker 集群管理和编排的特性是通过 SwarmKit 进行构建的,其中 Swarm 模式是Docker Engine 内置支持的一种默认实现。Docker 1.12 以及更新的版本,都支持 Swarm 模式。用户可以基于 Docker Engine 构建 Swarm 集群,然后就可以将应用服务(ApplicationService)部署到 Swarm 集群中。

        Docker Swarm 具有如下基本特性:

  • 去中心化设计
  • 声明式服务模型       
  • 协调预期状态与实际状态的一致性
  • 多主机网络
  • 负载均衡
  • 安全策略
  • 滚动更新
  • 集群管理集成进 Docker Engine
  • 缩放
  • 服务发现
  • 默认安全

3.关机概念

下面是 Docker Swarm 中主要的关键概念。

(1)节点

        每个参与到 Swarm 集群中的 Docker Engine 都称之为一个节点。在单个物理计算机或云服务器上运行一个或多个节点,但是生产环境下的集群部署通常包括分布在多个物理和云机器上的 Docker 节点。集群中节点主要分为管理节点与工作节点。
        若要将应用程序部署到集群中,则需要将服务定义提交给管理节点。管理节点将被称为任务的工作单元分派给工作节点。为了维持Swarm 集群的目标状态,管理节点还将承担编排和集群管理的功能。一旦存在多个管理节点时,会选出一个领导来进行任务编排。
        工作节点用于接收并执行来自管理节点分发的任务。默认情况下,管理节点也是工作节点,也可以把它配置成只充当管理节点的角色。工作节点将所负责任务的当前状态通知给管理节点,以便管理节点可以维护每个工作节点的期望状态。

(2)服务与任务

        服务定义了需要在工作节点上执行的任务。它是 Swarm 系统的中心结构,也是用户和 Swarm 交互的主要根源。
        创建服务时,可以指定要使用的容器镜像以及在运行容器中执行的命令。
        在复制服务模型中,Swarm 管理器根据所需状态中设置的比例在节点之间分配特定数量的副本任务。
        任务是 Swarm 集群中最小的调度单位,每个任务都包含一个容器和需要在容器中执行的指令。管理器根据服务中定义的副本数量将任务分配给工作节点。一旦某个任务被分配到某个节点,就不能再移动到其他节点。它只能在分配的节点上运行或者失败。

(3)负载均衡

        集群管理器使用负载均衡入口来公开对外提供的服务。集群管理器可以自动为PublishedPort(对外发布的端口)分配服务,也可以为服务配置 PublishedPort。部署服务时可以指定任何未使用的端口为服务端口;如果部署服务时未指定端口,Swarm 管理器会为服务自动分配 30000-32767 范围内的端口。
        外部组件(例如云负载均衡器)可以访问集群中任何节点的PublishedPort 上的服务,无论该节点当前是否正在运行该服务的任务。集群中的所有节点都将入口连接到正在运行的任务实例。
        Swarm 模式有一个内部 DNS 组件,可以自动为 Swarm 中的每个服务分配一个 DNS条目。集群管理器使用内部负载均衡来根据服务的 DNS名称在集群内的服务之间分发请求。

4.工作原理

        在 Swarm 集群中部署镜像创建一个服务时。在一些大的应用上下文环境中需要各种服务配合工作,这样的服务通常称之为微服务。微服务可能是一个 HTTP 服务器、数据库、或者分布式环境中运行的任何其他可执行的程序。
        在创建服务时,可以指定要使用的容器镜像以及容器中要运行的命令。服务还可以定义下面选项:

  • 集群要对外服务的端口;
  • 在集群中用于服务之间相连的 Overlay 网络;
  • 滚动更新策略;
  • 集群总运行的副本数量。

下面从以下几个方面具体介绍服务、任务与容器的具体工作方法。

(1)服务、任务与容器

        当服务部署到集群时,Swarm 管理节点会将服务定义作为服务所需状态。然后将服务调度为一个或多个副本任务。这些任务在集群节点上彼此独立运行。
        容器是一个独立的进程。在 Swarm 集群中,每个任务都会调用一个容器。一旦容器运行,调度程序认为该任务处于运行状态。如果容器健康监测失败或者终止,那么任务也终止。

(2)任务与调度

        任务是集群内调度的原子单位。当创建或者更新服务来声明所需的服务状态时,协调器通过调度任务来实现所需的状态。
        任务是单向的机制,它通过一系列状态单独进行:分配、准备、运行等操作。如果任务失败,协调器将删除任务与容器,然后根据服务指定的所需状态创建一个新的任务来代替它。

(3)待处理的服务

        配置服务时,若集群中当前没有可用的节点。在这种情况下,也可以成功配置服务,但所配置服务会处于待处理状态(挂起状态)。以下是服务可能处于待处理状态的几个示例。
        如果在集群中所有节点被暂停或耗尽时,创建了一个服务,服务则被挂起,直到节点可用。实际上,当节点恢复时,第一个可用的节点将会获得所有的任务,这在生产环境中并不是一件好事。

  • 配置服务时可以为服务预留特定数量的内存。如果集群中没有节点满足所需的内存量,服务则被挂起,直到有可用的节点运行其任务。如果指定了非常大的内存值(如 500G),任务将永久挂起,除非确实有一个满足该条件的节点。
  • 配置服务时可以对服务施加约束,并且可能无法在给定时间履行约束,服务则被挂起。
(4)副本和全局服务

服务部署分为两种类型:副本服务和全局服务。

  • 副本服务:指定要运行的相同任务的数量,每个副本都是相同的内容。
  • 全局服务:是在每个节点上运行一个任务的服务。不需要预先指定任务数量。每当将一个节点添加到集群中,调度器将创建一个任务,并且调度器将任务分配给新加入的节点。全局服务最好是监控代理、反病毒扫描程序等等想要在集群中每个节点上运行的容器。

1.3案列环境

1.案列环境

2.案例需求

        本案例的需求如下:
        部署 Docker Swarm 集群,要求集群中包含一个管理节点(manager)和两个工作节点(worker01、worker02)。

3.案例实现思路

   本案例的实现思路如下:
(1)准备 Docker Swarm 部署环境;
(2)部署 Docker Swarm 集群。

二、基础环境配置

1.设置主机名

(1)manager主机
[root@localhost ~]# hostnamectl set-hostname manager
[root@localhost ~]# bash
(2)worker01主机
[root@localhost ~]# hostnamectl set-hostname worker01
[root@localhost ~]# bash
(3)worker02主机
[root@localhost ~]# hostnamectl set-hostname worker02
[root@localhost ~]# bash

2.修改所有主机的hosts文件

[root@manager ~]# vim /etc/hosts
192.168.10.101 manager
192.168.10.102 worker01
192.168.10.103 worker02

3.设置所有主机的firewalld防火墙(如果防火墙关闭,可不用设置)

[root@manager ~]# firewall-cmd --zone=public --add-port=2377/tcp --permanent
[root@manager ~]# firewall-cmd --zone=public --add-port=7946/tcp --permanent
[root@manager ~]# firewall-cmd --zone=public --add-port=7946/udp --permanent
[root@manager ~]# firewall-cmd --zone=public --add-port=4789/tcp --permanent
[root@manager ~]# firewall-cmd --zone=public --add-port=4789/udp --permanent
[root@manager ~]# firewall-cmd --reload

firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --zone=public --add-port=7946/tcp --permanent
firewall-cmd --zone=public --add-port=7946/udp --permanent
firewall-cmd --zone=public --add-port=4789/tcp --permanent
firewall-cmd --zone=public --add-port=4789/udp --permanent
firewall-cmd --reload

三、部署 Docker Swarm 集群

1.在manager主机上创建 Docker Swarm 集群

[root@manager ~]# docker swarm init --advertise-addr 192.168.10.101
Swarm initialized: current node (x3v12rmfw9c0isq1nppaaoogh) is now a manager.
To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-6d54xvraob3ea6peasvp5pgrtqp2f83vlfm7ag9q8ra6x1jqz3-1r93r88x483n7ofx96qj0cvjk 192.168.10.201:2377

2.在所有worker节点加入集群

[root@worker01 ~]# docker swarm join --token SWMTKN-1-6d54xvraob3ea6peasvp5pgrtqp2f83vlfm7ag9q8ra6x1jqz3-1r93r88x483n7ofx96qj0cvjk 192.168.10.201:2377

[root@worker02 ~]# docker swarm join --token SWMTKN-1-6d54xvraob3ea6peasvp5pgrtqp2f83vlfm7ag9q8ra6x1jqz3-1r93r88x483n7ofx96qj0cvjk 192.168.10.201:2377

3.查看集群信息

[root@manager ~]# docker info

........
 Swarm: active
  NodeID: x3v12rmfw9c0isq1nppaaoogh
  Is Manager: true
  ClusterID: 0mps950k70s2oqphe75jzykqq
  Managers: 1
  Nodes: 3
........

4.查看 Swarm 集群中 Node 节点的详细状态信息

[root@manager ~]# docker node ls
ID                      HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
x3v12rmfw9c0isq1nppaaoogh *   manager    Ready     Active         Leader           20.10.1
mripmqlv2rw84xzywaclvqolj     worker01   Ready     Active                          20.10.1
gxxa4apflvapwcygvdgy0mdvh     worker02   Ready     Active                          20.10.1

查看 manager 节点详细信息:docker node inspect manager
查看 worker01 节点详细信息:docker node inspect worker01 
查看 worker02 节点详细信息:docker node inspect worker02

四、Docker Swarm 节点管理

1.将管理节点的 AVAILABILITY 值修改为 Drain 状态,使其只具备管理功能

[root@manager ~]# docker node update --availability drain manager
manager
[root@manager ~]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
rerfkmyfkbc74a04x22tpfo5j *   manager             Ready               Drain               Leader              19.03.9
irwxgrg6o8l69b6i024rkbury     worker01            Ready               Active                                  19.03.9
j7yit1q52486uhonee8jmhwgo     worker02            Ready               Active                                  19.03.9

注意:

节点的 AVAILABILITY 有三种状态:Active、 Pause、Drain。

Active:集群中该节点可以被指派任务。

Pause:集群中该节点不可以被指派新的任务,但是其他已经存在的任务保持运行。

Drain:集群中该节点不可以被指派新的任务,Swarm Scheduler 停掉已经存在的任务,并将它们调度到可用的节点上

2.添加标签元数据

  • 支持给每个节点添加标签元数据
  • 根据标签可选择性地调度某个服务部署到期望的一组节点上
[root@manager ~]# docker node update --label-add group=g2 worker01
[root@manager ~]# docker node inspect worker01
[root@manager ~]# docker service create --name mynginx --constraint 'node.labels.group==g2' nginx

备注:

constraint 约束

查看mynginx容器所在的主机

[root@manager ~]# docker service ps mynginx

3.节点提权/降权

将 worker01 和 worker02 都升级为管理节点

[root@manager ~]# docker node promote worker01 worker02
[root@manager ~]# docker node ls
对上面已提权的 worker01 和 worker02 执行降权操作
[root@manager ~]# docker node demote worker01 worker02

4.退出 Swarm 集群

[root@manager ~]# docker swarm leave
Error response from daemon: You are attempting to leave the swarm on a node that is participating as a manager. Removing the last manager erases all current state of the swarm. Use `--force` to ignore this message.

注意:

如果集群中还存在其它的工作节点,同时希望管理节点退出集群,则需要加上一个强制

选项

[root@manager ~]# docker swarm leave --force
Node left the swarm.

在work节点上退出swarm

[root@worker01 ~]# docker swarm leave

注意:

工作节点退出集群后通过 docker swarm join 命令并指定对应的 token 值重新加入集群。

如果管理节点也推出了群,需要在管理节点上使用docker swarm init --advertise-addr 192.168.10.201命令再生成一次群,其他节点再加入一次群即可,相当于重新创建一次群集

主要:

集群解散后,swarm创建的service会被删除掉

五、Docker Swarm 服务管理

创建好swarm群集

1.创建服务

(1)使用 docker service create 命令创建 Docker 服务,从 Docker 镜像 nginx 创建一个名称为 web 的服务,指定服务副本数为 2。
[root@manager ~]# docker service create -p 80:80 --replicas 2 --name web nginx
[root@manager ~]# docker service logs -f web

注意:

看到提示 Configuration complete; ready for start up后,可以Ctrl+C

(2)查看当前已经部署启动的全部应用服务
[root@manager ~]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
zgxqdeu3dph2        web                 replicated          2/2                 nginx:latest
(3)可以查询指定服务的详细信息
[root@manager ~]#  docker service ps web
ID             NAME           IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
nc0lvzyt6fv8   web.1          nginx:latest        worker01            Running             Running 4 minutes ago                       
rknekib3x3eg   web.2          nginx:latest        manager             Running             Running 4 minutes ago  

[root@manager ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
305d6fe1e1e4        nginx:latest        "/docker-entrypoint.…"   5 minutes ago       Up 5 minutes        80/tcp              web.2.rknekib3x3egb9atn4qxub8nj

2.显示服务详细信息

(1)以 JSON 格式显示方法 Web 服务的详细信息
[root@manager ~]# docker service inspect web
(2)以易于阅读方式显示 Web 服务的详细信息
[root@manager ~]# docker service inspect --pretty web

3.服务的扩容缩容

(1)将前面已经部署的 2 个副本的 Web 服务,扩容到 3 个副本
[root@manager ~]# docker service scale web=3
(2)通过 docker service ps web 命令查看服务扩容结果
[root@manager ~]# docker service ps web
ID              NAME       IMAGE               NODE      DESIRED STATE       CURRENT STATE            ERROR               PORTS
nc0lvzyt6fv8        web.1               nginx:latest        worker01            Running             Running 10 minutes ago                       
rknekib3x3eg        web.2               nginx:latest        manager             Running             Running 10 minutes ago                       
oxrqtrsuswcr        web.3               nginx:latest        worker02            Running             Running 13 seconds ago  
(3)缩容

进行服务缩容操作时只需要设置副本数小于当前应用服务拥有的副本数即可,大于指定缩容副本数的副本会被删除

[root@manager ~]# docker service scale web=1
web scaled to 1
overall progress: 1 out of 1 tasks 
1/1: running   
verify: Service converged 
[root@manager ~]#  docker service ps web
ID          NAME         IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
nc0lvzyt6fv8        web.1               nginx:latest        worker01            Running             Running 11 minutes ago  

4.删除服务

[root@manager ~]# docker service rm web

5.滚动更新

[root@manager ~]# docker service create --replicas 3 --name redis --update-delay 10s redis:3.0.6
[root@manager ~]#  docker service ps redis
ID        NAME      IMAGE         NODE           DESIRED STATE       CURRENT STATE           ERROR               PORTS
9dtcqqyptmbn        redis.1             redis:3.0.6         manager             Running             Running 3 minutes ago                       
p4agvfmprmgm        redis.2             redis:3.0.6         worker01            Running             Running 3 minutes ago                       
vqo6493g9cws        redis.3             redis:3.0.6         worker02            Running             Running 3 minutes ago   

更新已经部署服务所在容器中使用的镜像版本

[root@manager ~]# docker service update --image redis:3.0.7 redis

6.添加自定义 Overlay 网络

在创建服务时,通过--network选项指定使用的网络为已存在的 Overlay 网络

[root@manager ~]# docker network create --driver overlay my-network
[root@manager ~]# docker service create --replicas 3 --network my-network --name myweb nginx

备注:

如果 Swarm 集群中其他节点上的 Docker 容器也使用 my-network 网络,那么处于该

Overlay 网络中的所有容器之间都可以进行通信

7.数据卷创建与应用

(1)创建数据卷
[root@manager ~]# docker volume create product-kgc
(2)将nginx容器连接到数据卷
[root@manager ~]# docker service create --mount type=volume,src=product-kgc,dst=/usr/share/nginx/html --replicas 1 --name kgc-web-01 nginx
[root@manager ~]# docker service ps kgc-web-01
ID             NAME            IMAGE            NODE       DESIRED STATE       CURRENT STATE            ERROR               PORTS
58g31r3ppwid        kgc-web-01.1        nginx:latest        worker01            Running             Running 24 seconds ago   

注意:

要确定好容器是在哪个节点运行的,可以看出,此案例中实在work01中运行的

(3)查看数据卷
[root@manager ~]# docker volume inspect product-kgc
[
    {
        "CreatedAt": "2021-01-24T09:19:33+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/product-kgc/_data",
        "Name": "product-kgc",
        "Options": {},
        "Scope": "local"
    }
]
(4)到work01中查看数据是否进行同步
[root@worker01 ~]# cd /var/lib/docker/volumes/product-kgc/_data/ 
[root@worker01 _data]# mkdir test01 test02 
[root@worker01 _data]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
8875962fb67b        nginx:latest        "/docker-entrypoint.…"   16 minutes ago      Up 16 minutes       80/tcp              kgc-web-01.1.58g31r3ppwidwi7x4m8vdy14y
41fdf50c16c2        nginx:latest        "/docker-entrypoint.…"   17 minutes ago      Up 17 minutes       80/tcp              myweb.1.m89ipfy43w38n5f0qtckq55gb
4aa3abe80967        redis:3.0.7         "docker-entrypoint.s…"   18 minutes ago      Up 18 minutes       6379/tcp            redis.2.mczchtpy4uy7i52tyycwjd9uk

[root@worker01 _data]# docker exec -it 8875962fb67b bash
root@8875962fb67b:/# ls /usr/share/nginx/html/
50x.html  index.html  test01  test02

8.使用 bind 类型挂载数据卷

(1)创建测试目录
[root@manager ~]# mkdir -p /var/vhost/www/aa 
[root@worker01 ~]# mkdir -p /var/vhost/www/aa 
[root@worker02 ~]# mkdir -p /var/vhost/www/aa
在manager节点安装nfs-utils
[root@manager ~]# yum -y install nfs-utils
设置nfs共享
[root@manager ~]# vim /etc/exports
/var/vhost/www/aa *(rw,sync,no_root_squash)
启动nfs服务
[root@manager ~]# systemctl start nfs
[root@manager ~]# systemctl start rpcbind
在其他work节点挂载
yum -y install nfs-utils
mount 192.168.10.101:/var/vhost/www/aa /var/vhost/www/aa/
(2)创建 2 个 kgc-web-02 服务
[root@manager ~]# docker service create --replicas 2 --mount type=bind,src=/var/vhost/www/aa,dst=/usr/share/nginx/html/ --name kgc-web-02 nginx
(3)验证数据是否同步
[root@worker01 _data]# touch /var/vhost/www/aa/mytest
[root@worker01 _data]# docker service ps kgc-web-02
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
toejwbvg8nau        kgc-web-02.1        nginx:latest        manager             Running             Running 2 minutes ago                       
kv04aj4vt84g        kgc-web-02.2        nginx:latest        worker02            Running             Running 2 minutes ago  
[root@worker01 _data]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
d292452b1f39        nginx:latest        "/docker-entrypoint.…"   57 seconds ago      Up 56 seconds               80/tcp              kgc-web-02.1.toejwbvg8nau452rvexc0i1c9
6360a54d2bd1        nginx:latest        "/docker-entrypoint.…"   22 minutes ago      Up 22 minutes               80/tcp              myweb.3.51xngm6q6zj9jo4vllohbptqn
930b56c8671c        redis:3.0.7         "docker-entrypoint.s…"   23 minutes ago      Up 23 minutes               6379/tcp            redis.1.o2regcre7k626suqytpmqpidi
ada092f9959f        redis:3.0.6         "/entrypoint.sh redi…"   27 minutes ago      Exited (0) 23 minutes ago                       redis.1.9dtcqqyptmbnybz1ub3wfzuzj
[root@worker01 _data]# docker exec -it d292452b1f39 bash
root@d292452b1f39:/# ls /usr/share/nginx/html/
mytest

标签:管理,--,节点,Swarm,manager,集群,Docker,root,docker
From: https://blog.csdn.net/henanchenxuyuan/article/details/141154417

相关文章

  • SSM基于Java通识课程管理系统v87xr 线上测试
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:学生,教师,教学视频,课程信息,选课信息,专业,学院,职称开题报告内容一、课题背景随着信息技术的飞速发展,教育领域对高效、智能的管理系统需求日益迫切......
  • docker 构建java 部署包
    去官网查找对应的镜像资源。 建议最好选择官方的镜像,避免出现一些奇奇怪怪的问题。  由于JDK8现在开始收费,因此只能使用OpenJDK的镜像。   .1.拉取Java镜像.dockerpulljava:openjdk-8  2.运行java容器。a.先创建一个Java目录:mkdir/app/zh_lawsuit_or......
  • 工作五年后,做技术还是做管理?
    后台有同学留言,问了这样一个问题:我现在工作五年了,之前一直做的软件测试工作。其中功能测试做了3年,测试开发也做了2年了,平时做一些提效工具和测试平台开发。目前想跳槽,是继续技术岗位呢还是转测试管理岗位?很有意思的一个问题,也是很多工作几年后的同学都会遇到的问题:职业生涯规......
  • KingbaseES RAC运维案例之---集群及数据库管理
    案例说明:KingbaseESRAC在部署完成后,进行日常的集群及数据库管理。适用版本:KingbaseESV008R006C008M030B0010操作系统版本:[root@node201KingbaseHA]#cat/etc/centos-releaseCentOSLinuxrelease7.9.2009(Core)集群架构:如下所示,node1和node2为集群节点:节点信息:......
  • docker-compose 部署https harbor
    httpsharbor提升安全性,部署更加合规一、配置Harbor证书1、生成自签名ca和ca证书,subj信息看需求修改这里的-subj参数设置了证书的主题信息,包括国家代码(C),州或省份(ST),城市(L),组织(O),和常用名(CN)。有效期设置为20年。#生成CA私钥opensslgenrsa-outca.key4......
  • 如何挑选最适合您需求的项目管理系统
    国内外主流的10款国外项目管理软件对比:PingCode、Worktile、Trello、Monday.com、ClickUp、Jira、Asana、Tapd、Tower、Teambition。在管理复杂项目时,选对工具是成功的关键。全生命周期项目管理系统不仅可以帮助你保持项目的进度和预算控制,还能优化资源分配和风险管理。但面对......
  • 基于Dango+微信小程序的广西东盟旅游资源信息管理系统+80003(免费领源码)可做计算机毕业
    django广西-东盟旅游资源信息管理系统小程序摘 要在社会快速发展和人们生活水平提高的影响下,旅游产业蓬勃发展,旅游形式也变得多样化,使旅游资源信息的管理变得比过去更加困难。依照这一现实为基础,设计一个快捷而又方便的基于小程序的旅游资源信息管理系统是一项十分重要并且......
  • 如何选择合适的在线文档管理工具?
    国内外主流的10款在线文档管理软件对比:PingCode、Worktile、腾讯文档、石墨文档、语雀、Egnyte、ZohoOfficeSuite、MicrosoftSharePoint、ONLYOFFICEDocSpace、DocuWareCloud。在当今的数字化办公环境中,有效管理和分享文档变得至关重要,但找到一个既能满足功能需求又便于团......
  • RabbitMQ普通集群同一宿主机docker搭建
    1.准备3个节点安装rabbitmq,搭建集群(注意:每个节点启动间隔15~20s,如果启动失败,需删除宿主机文件重新启动)2.宿主机文件目录手动创建,并设置可操作权限准备宿主机文件目录cd/usr/local/创建rabbitmq映射目录mkdirrabbitmqcdrabbitmqmkdir1mkdir2mkdir3cd1mkdirli......
  • SpringBoot饮品店管理系统 毕业设计-附源码63617
    摘要随着社会的发展和人们生活水平的提高,饮品店在城市中的数量和规模不断增长。饮品店作为一个重要的零售业态,承载了人们对于饮品的需求和追求,具有广阔的市场潜力。然而,随着饮品店的数量增多和竞争加剧,传统的管理方式已经无法满足日益增长的需求。传统的饮品店管理方式往......