广告
返回顶部
首页 > 资讯 > 后端开发 > Python >docker集群部署:第3部分:服务
  • 638
分享到

docker集群部署:第3部分:服务

集群docker 2023-01-31 04:01:17 638人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

Docker集群部署:第3部分:服务 介绍在第3部分中,我们将扩展应用程序并实现负载平衡。 关于服务在分布式应用程序中,应用程序的不同部分被称为“服务”。例如,一个视频共享站点,它可能包括一个用于将应用程序数据存储在数据库中的服务,后面的

Docker集群部署:第3部分:服务

  1. 介绍
    在第3部分中,我们将扩展应用程序并实现负载平衡。
  2. 关于服务
    分布式应用程序中,应用程序的不同部分被称为“服务”。例如,一个视频共享站点,它可能包括一个用于将应用程序数据存储在数据库中的服务,后面的视频转码服务用户上传东西,为前端服务等等。
    服务实际上只是“生产中的容器”。服务只运行一个镜像,但它定义镜像运行的方式 - 应该使用哪个端口,容器应该运行多少个实例,以便服务具有所需的容量,以及等等。缩放服务会更改运行该软件的容器实例的数量,从而为流程中的服务分配更多的计算资源。
    幸运的是,使用Docker平台定义,运行和扩展服务非常简单 - 只需编写一个docker-compose.yml文件即可。
  3. docker-compose.yml文件
    docker-compose.yml文件是一个YAML文件,它定义了Docker容器在生产中的行为方式。
    #cat docker-compose.yml
    version: "3"
    services:
    WEB:
    #replace username/repo:tag with your name and image details
    image: username/repo:tag
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"
    networks:
      - webnet
    networks:
    webnet:

    说明:我在vmware虚拟机测试时,使用的是如下脚本:

    version: "3"
    services:
    web:
    image: friendlyhello:latest
    deploy:
      replicas: 5
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"
    networks:
      - webnet
    networks:
    webnet:

    这个docker-compose.yml文件告诉Docker执行以下操作:
    (1)从注册表中取出我们在第2部分:容器中上传的镜像。
    (2)运行该镜像的5个实例作为一个服务调用web,限制每个使用,最多10%的CPU(跨所有核心)和50MB的RAM。(我未使用)
    (3)如果一个失败,立即重新启动容器。
    (4)指示Web容器通过称为webnet的负载均衡网络共享端口80。 (在内部,容器本身将在临时端口上发布到网站的端口80)。
    (5)定义webnet网络使用默认设置(这是一个负载均衡覆盖网络)。

  4. 运行新的负载均衡应用程序
    在我们使用docker stack deploy命令之前,我们先运行:
    #docker swarm init

    注意:
    (1)我们将在第4部分中介绍该命令的含义。如果不运行docker swarm init,则会显示“此节点不是swarm manager”的错误。
    (2)#docker swarm init --advertise-addr 10.0.0.38:2377中--advertise-addr的作用:
    如果未指定,Docker将检查系统是否是单个IP地址,如是单个ip,docker将该IP地址与侦听端口(默认2377)一起使用。如果系统有多个IP地址,则 --advertise-addr必须指定正确的地址,以便进行管理器间通信和覆盖网络。

    现在让我们来运行它。你必须给你的应用程序起个名称。在这里,它被命名为getstartedlab。
    #docker stack deploy -c docker-compose.yml getstartedlab

    我们的单个服务堆栈在一台主机上运行了5个部署映像的容器实例。让我们来查看下。

    在我们的应用程序中获取一项服务的服务ID:
    #docker service ls (或docker ps)

    将看到Web服务的输出,并以你的应用程序名称作为前缀。如果你将其命名为与此示例中所示的相同,则名称将为getstartedlab_web。还列出了服务ID以及实例数量,镜像名称和暴露端口。
    在服务中运行的单个容器称为任务。任务会被赋予唯一的数字增加的ID,可以在docker-compose.yml中定义的实例数量。列出你的服务的任务:

    #docker service ps getstartedlab_web
    ID                  NAME                  IMAGE                  node                DESIRED STATE       CURRENT STATE         ERROR               PORTS
    pyjg9hjmiubl        getstartedlab_web.1   friendlyhello:latest   swarm1              Running             Running 2 hours aGo
    l4dze4ykna53        getstartedlab_web.2   friendlyhello:latest   swarm1              Running             Running 2 hours ago
    wv49dwr41uyt        getstartedlab_web.3   friendlyhello:latest   swarm1              Running             Running 2 hours ago
    eten7ue4sace        getstartedlab_web.4   friendlyhello:latest   swarm1              Running             Running 2 hours ago
    djtvjvv0012q        getstartedlab_web.5   friendlyhello:latest   swarm1              Running             Running 2 hours ago

    如果你只列出系统上的所有容器,也会显示任务,但不会被服务过滤:

    #``docker container ls -q
    552750f13021
    f0709bdbbca2
    913c2ead1b86
    9b3874094b67
    c51e8021f0ee
    feddb2fff6c5

    你可以连续多次运行curl -4 Http:// localhost,或者在浏览器中转到该URL并点击几次刷新。
    无论哪种方式,你将看到容器ID更改,演示负载均衡;在每个请求中,以循环方式选择5个任务中的一个来响应。容器ID将匹配您以前的命令(docker container ls -q)的输出。

  5. 缩放应用程序
    你可以通过更改docker-compose.yml中的实例值,保存更改并重新运行docker stack deploy命令来扩展应用程序:
    如将 replicas(实例): 5 更改为3
    #docker stack deploy -c docker-compose.yml getstartedlab
    Updating service getstartedlab_web (id: f4pqg1x8eznhxu6bb897t6l3v)``
    Docker会立即更新,不需要拆除原有集群或杀死任何容器。

    现在,重新运行docker container ls -q来查看重新配置的已部署实例。

    #docker container ls -q
    abc6e8347046
    99e75109a749
    03Ddf96a5934
  6. 关闭应用服务堆栈(stack)
    #docker stack rm getstartedlab    ##stack 堆
    Removing service getstartedlab_web
    Removing network getstartedlab_default
    Removing network getstartedlab_webnet
  7. 删除集群(swarm)
    #docker swarm leave --force

--结束END--

本文标题: docker集群部署:第3部分:服务

本文链接: https://www.lsjlt.com/news/187792.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • docker集群部署:第3部分:服务
    docker集群部署:第3部分:服务 介绍在第3部分中,我们将扩展应用程序并实现负载平衡。 关于服务在分布式应用程序中,应用程序的不同部分被称为“服务”。例如,一个视频共享站点,它可能包括一个用于将应用程序数据存储在数据库中的服务,后面的...
    99+
    2023-01-31
    集群 docker
  • Docker Swarm部署集群
    一、Swarm简介Swarm是Docker的一个编排工具,参考官网:https://docs.docker.com/engine/swarm/Swarm 模式简介 要在Swarm模式下运行docker,需要先安装docker,参考...
    99+
    2023-01-31
    集群 Docker Swarm
  • 3.redis集群部署3主3从
    redis集群部署 一:安装redis (使用redis3.0.6版本),同《1.redis安装》1.下载源码$ tar xzf redis-3.0.6.tar.gz$ cd redis-3.0.6$ make   2、编译完成后,在Src...
    99+
    2023-01-31
    集群 redis
  • docker如何部署kafka集群
    要部署Kafka集群,可以使用Docker来简化整个过程。下面是一个基本的步骤:1. 安装Docker和Docker Compose...
    99+
    2023-10-08
    kafka docker
  • docker怎么部署redis集群
    要部署 Redis 集群,可以使用 Docker 来简化部署过程。以下是一个基本的步骤:1. 创建 Redis 集群配置文件你可以创...
    99+
    2023-09-22
    docker redis
  • docker swarm集群怎么部署
    要部署Docker Swarm集群,需要按照以下步骤进行操作:1. 安装Docker:在所有要加入Swarm集群的节点上安装Dock...
    99+
    2023-09-20
    docker
  • docker怎么部署zookeeper集群
    这篇“docker怎么部署zookeeper集群”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“docker怎么部署zooke...
    99+
    2023-07-06
  • docker如何部署etcd集群
    目录创建etcd数据目录创建docker网络etcd-cluster-compose.yml启动并验证集群启动验证集群k/v操作CURLetcdctl总结需要安装: dockerdo...
    99+
    2023-03-19
    docker部署etcd集群 docker部署 docker etcd集群
  • docker怎么部署etcd集群
    本篇内容介绍了“docker怎么部署etcd集群”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!需要安装:dockerdocker-compo...
    99+
    2023-07-05
  • 阿里云服务器部署 Docker Swarm集群
    目录一、什么是 Docker Swarm?二、Docker Swarm 和 k8s的区别三、购买4台阿里云服务器四、Docker Swarm 工作模式五、部署 Docker Swarm 集群⛅连接4台服务器⚡安装Docker♻️部署Swar...
    99+
    2022-09-23
  • Docker中redis集群部署实战
    目录环境准备安装gcc-c++查看版本创建Redis网卡创建6个redis服务在/var目录下创建脚本文件create_redis_script.sh编写脚本内容查看脚本文件赋予create_redis_script.s...
    99+
    2022-11-27
    Docker中redis集群部署 docker搭建redis集群 docker安装redis集群
  • redis怎么用docker部署集群
    要使用Docker部署Redis集群,您可以按照以下步骤进行操作:1. 首先,您需要确保已经安装了Docker和Docker Com...
    99+
    2023-08-30
    redis docker
  • Docker中怎么部署MySQL8集群
    这篇文章将为大家详细讲解有关Docker中怎么部署MySQL8集群,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一.CentOS7.9安装Docker20安装yum-utils工具yum&n...
    99+
    2023-06-20
  • Mongodb 分片集群部署
    Mongodb分片集群介绍       分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程。将数据分散到不同的机器上,不需要功...
    99+
    2022-10-18
  • MongoDB分片集群部署
    一、环境说明 1、我们prod环境MongoDB的集群架构是做的分片集群的部署,但是目前我们没有分片,即所有数据都在一个分片上,后期如果数量大,需要分配,集群随时可以分片,对业务方透明2、各个角色的部署情况...
    99+
    2022-10-18
  • Docker中部署Redis集群与部署微服务项目的详细过程
    目录一、使用docker部署的好处二、Docker 与 Kubernetes 对比三、Redis集群部署实战四、Spring Boot项目 打包镜像⛵小结 一、使用Docker部署的好处 Docker的好处在于:在不同实...
    99+
    2022-06-23
    Redis集群与部署微服务项目 Redis集群微服务
  • 【云原生】阿里云服务器部署 Docker Swarm集群
    📢📢📢📣📣📣 哈喽!大家好,我是【Bug 终结者】 ,【CSDNJava领域优质创作者】🏆,阿里云受邀专家博主Ἴ...
    99+
    2023-08-20
    docker 云原生 阿里云 服务器 容器
  • Redis集群分片环境部署
    原理 集群技术是构建高并发网站的主要技术,访问网站的最大压力是在访问某个页面时,需要时查询数据库并相应,Redis从3.0版本以后开始支持集群功能了,要让集群正常工作至少得有三个主节点。Redis集群是基于...
    99+
    2022-10-18
  • MongoDB分片集群部署详解
     一、环境说明 1、我们prod环境MongoDB的集群架构是做的分片集群的部署,但是目前我们没有分片,即所有数据都在一个分片上,后期如果数量大,需要分配,集群随时可以分片,对业务方透明 2、各...
    99+
    2022-10-18
  • docker-compose部署etcd集群的实现步骤
    目录编写docker-compose.yml 运行docker-compose 检查搭建状态 测试节点 Golang 与 etcd 简单交互 编写docker-compose.yml...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作