docker集群部署:第3部分:服务
docker集群部署:第3部分:服务
- 介绍
在第3部分中,我们将扩展应用程序并实现负载平衡。 - 关于服务
在分布式应用程序中,应用程序的不同部分被称为“服务”。例如,一个视频共享站点,它可能包括一个用于将应用程序数据存储在数据库中的服务,后面的视频转码服务用户上传东西,为前端服务等等。
服务实际上只是“生产中的容器”。服务只运行一个镜像,但它定义镜像运行的方式 - 应该使用哪个端口,容器应该运行多少个实例,以便服务具有所需的容量,以及等等。缩放服务会更改运行该软件的容器实例的数量,从而为流程中的服务分配更多的计算资源。
幸运的是,使用Docker平台定义,运行和扩展服务非常简单 - 只需编写一个docker-compose.yml文件即可。 - 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: 5resources:limits:cpus: "0.1"memory: 50Mrestart_policy:condition: on-failure ports:- "80:80" networks:- webnet networks: webnet:
说明:我在vmware虚拟机测试时,使用的是如下脚本:
version: "3" services: web: image: friendlyhello:latest deploy:replicas: 5restart_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网络使用默认设置(这是一个负载均衡覆盖网络)。 - 运行新的负载均衡应用程序
在我们使用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)的输出。 - 缩放应用程序
你可以通过更改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
- 关闭应用服务堆栈(stack)
#docker stack rm getstartedlab ##stack 堆 Removing service getstartedlab_web Removing network getstartedlab_default Removing network getstartedlab_webnet
- 删除集群(swarm)
#docker swarm leave --force
转载于:https://blog.51cto.com/wutengfei/2063998
docker集群部署:第3部分:服务相关推荐
- docker集群部署
docker集群部署 docker-compse.yml文件规则 docker-swarm. yaml文件在集群中的使用 docker服务中的认证与安全 k8s云原生时代 docker-compse. ...
- 【云原生】Docker集群部署MinIO
MinIO 是全球领先的对象存储先锋,目前在全世界有数百万的用户. 在标准硬件上,读/写速度上高达183 GB / 秒 和 171 GB / 秒. 对象存储可以充当主存储层,以处理Spark.Pres ...
- Docker 进阶,Docker 集群部署
Docker 集群 Docker Compose 简介 DockerFile build run 手动操作,单个容器! 如果是微服务,100个微服务!各种依赖关系 Docker Compose 可以轻 ...
- Docker集群部署管理
1.什么是Kubernetes? Kubernetes是Google开源的容器集群管理系统,是目前比较火的集群式部署管理系统:Kubernetes(简称k8s),它是基于Docker技术的nat网络模 ...
- Docker集群部署DockerCompose
为什么要有DockerCompose? 有了Docker,我们可以实现redis,mysql等中间件.容器的镜像部署.也可以实现自定义项目的的构建和部署. 但是这些操作(部署)都是我们手动一步一步来完 ...
- 使用docker集群部署web应用
1.环境准备 准备两个及以上的linux系统,先关闭防火墙与selinux安全策略 systemctl stop firewalld systemctl disable firewalld seten ...
- k8s集群部署springboot项目
一.前言 本篇,我们将基于k8s集群,模拟一个比较接近实际业务的使用场景,使用k8s集群部署一个springboot的项目,我们的需求是: 部署SpringBoot项目到阿里云服务器 : 基于容器打包 ...
- Docker集群管理(DockerHub Harbor 打包-Jib 任务编排工具- docker-compose和Swarm)
Docker 集群管理 Docker 集群管理 镜像仓库管理 DockerHUb仓库管理 什么是DockerHUb 账号注册和登陆 Docker客户端登录 管理镜像 推送镜像 仓库镜像测试 regis ...
- 如何使用 Istio 进行多集群部署管理:多控制平面
作者 | 王夕宁 阿里云高级技术专家 导读:本文摘自于阿里云高级技术专家王夕宁撰写的<Istio 服务网格技术解析与实战>一书,讲述了如何使用 Istio 进行多集群部署管理来阐述服务网 ...
最新文章
- phpcms分页查询
- 码农们不得不重视的问题
- ubuntu设置root用户密码
- 函数式 vs 指令式
- Intel Realsense C/C++ 转 python rs-align 使用深度颜色映射介绍空间流对齐的概念(转不起来,缺少信息)
- CodeForces - 1327E Count The Blocks(组合数学)
- matlab swt函数,matlab swt 函数出错
- 螺旋进刀非法平面选择_进刀方法、刀片类型、术语...螺纹加工重点知识你都知道吗?...
- kubenetes 1.4的Master节点克隆并改造为node节点以及node查询问题解决
- 转载 侃一侃编译原理的“文法” 作者 :博客网 my笔触
- Oracle数据库启动与关闭
- xshell报错-要继续使用此程序,您必须应用最新的更新或使用新版本
- 台式计算机网卡型号怎么查找,台式机无线网卡如何查看型号
- GitBook 告别文档共享烦恼
- Direct3D 10系统(一)
- SQL Server自动产生一年多少周及月
- wince系统报错异常总结
- linux 文件恢复删除文件,Linux通过lsof命令恢复误删文件的步骤
- 提取excel中的图片
- mysql行转列 -夜幕思年华
热门文章
- 俺也用一下mandriva,恩,KDE的效果的确不错
- Quartz + Oracle 分布式Job实现
- 【二十二】win 10 :Jmeter 报告可视化 —— 配置 Jmeter 接口 HTML 可视化测试报告,Jenkins + Jmeter + Ant 自动化集成环境搭建
- tensorflow如何微调时如何只训练后两层_TensorFlow官方发布剪枝优化工具:参数减少80%,精度几乎不变...
- 2038年问题 linux内核5.6,Linux Kernel 5.6 开发者已准备好应对 2038 年问题
- threadlocal存连接对象的目的_ThreadLocal 介绍
- [Spring Boot核心功能]1. SpringApplication 启动引导类(2)
- 第7章[7.22] Ext JS类的继承与混合
- [设计模式-行为型]访问者模式(Vistor)
- SQL Server 使用Detach和Attach 方式 移动数据库位置