Docker入门 三 用服务来扩展和负载均衡你的应用

我们希望扩展和负载均衡自己的应用,为了达到这个目的,需要要分布式应用中使用更高一级的服务。

关于服务

对于分布式系统而言,不同的组成部分叫做“服务”。例如,对于一个视频分享网站,它可能包含了一个往数据库存储的服务,一个在后台格式转换用户上传的东西的服务,一个负责前端展示的服务。

服务实际上就是生成中的容器,就从业务方面而言。一个服务只能运行一个镜像,但是它能控制容器运行的方式,比如使用什么网络端口,使用多少个容器副本等等。扩展一个服务,可以通过改变应用的每部分实例的数量,还可以通过在服务内部分配更多的主机计算资源。

幸运的是,使用Docker平台,可以很容易的定义/运行/扩展服务--仅仅是写一个docker-compose.yml文件。

你的第一个docker-compose.yml文件

这个文件是YAML 格式,定义 了线上容器的行为。

吸入以下内容,注意替换你的已经发布的镜像名字

-------------------------------

version: "3"
services:
  web:
    # replace username/repo:tag with your name and image details
    image: username/repository:tag
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"
    networks:
      - webnet
networks:
  webnet:

---------------------------

最重要的一点,这个服务的对外端口是所有副本公用的,内部是负载均衡的。

现在就可以运行使用了负载均衡的应用,但在使用docker stack deploy命令之前,必须先执行

docker swarm init然后启动服务并用一个别名
docker stack deploy -c docker-compose.yml getstartedlab查看
docker service ls

Docker swarms使用多个任务来集群多个容器。任务都有各自的状态和ID。

扩展你的应用

你可以修改docker-compose.yml文件中的副本数量,保存后重新使用docker stack deploy命令,需要知道的就是使用了热更新,不必停止stack 或者杀掉容器

最后停止你的应用和集群

docker stack rm getstartedlab这个命令会移除你的应用,但是却会保留一个集群节点(使用ocker node ls查看),完全移除需要docker swarm leave --force.

使用Docker,非常容易的扩展和保持应用高可用。经过以上步骤,你已经学会了如何在显示运行容器。下一章,你将学会如何在Docker主机集群上作为swarm 集群方式来运行。




时间: 2024-11-08 07:50:00

Docker入门 三 用服务来扩展和负载均衡你的应用的相关文章

Centos7+Nginx+Keepalived实现Apache服务的高可用&负载均衡

Centos7+Nginx+Keepalived实现Apache服务的高可用&负载均衡 今天是2017年的第一天,昨天也就是2016年的最后一天,我尝试部署了Centos7+Nginx+Keepalived实现WEB服务的高可用负载均衡服务,终于在2017年的第一天前完成了,所以在此分享给有需要的朋友:说到负载均衡,其实在linux下有很多服务可以实现,比如nginx.haproxy.lvs等服务,当前我们在前面的文章有介绍过了,但是对于高可用服务,我们在linux下最常见也是应用最多的是Kee

[转][网站、云服务与虚拟机]弄清负载均衡的机制

转自:http://blog.csdn.net/shaunfang/article/details/9091491 Azure为网站.云服务和虚拟机都提供了免费的负载均衡能力.关于负载均衡我们需要注意的一点就是它对Session的处理.一般来说,传统的负载均衡器有一种叫session粘滞(sticky)的机制,也就是会根据用户的session信息将用户请求转发到固定的一台机器上,这样,如果应用程序在服务器端存储session信息,那么用户与服务器交互就会顺畅,否则,就会发生用户session丢失

Spring Cloud Ribbon---微服务调用和客户端负载均衡

前面分析了Eureka的使用,作为服务注册中心,Eureka 分为 Server 端和 Client 端,Client 端作为服务的提供者,将自己注册到 Server 端,Client端高可用的方式是使用多机部署然后注册到Server,Server端为了保证服务的高可用,也可以使用多机部署的方式.前面简单搭建了Eureka Client 和 Server,然后将Client成功注册到 Server,本节我们将来看看如何调用Eureka服务,在多机部署情况下如何保证负载均衡.Spring Clou

Spring Cloud Eureka 分布式开发之服务注册中心、负载均衡、声明式服务调用实现

介绍 本示例主要介绍 Spring Cloud 系列中的 Eureka,使你能快速上手负载均衡.声明式服务.服务注册中心等 Eureka Server Eureka 是 Netflix 的子模块,它是一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移. 服务注册和发现对于微服务架构而言,是非常重要的.有了服务发现和注册,只需要使用服务的标识符就可以访问到服务,而不需要修改服务调用的配置文件.该功能类似于 Dubbo 的注册中心,比如 Zookeeper. Eureka

nginx入门(一)window下实现简单的负载均衡

下载地址:http://nginx.org/en/download.html 我下载的是当前最新版本 (nginx/Windows-1.11.10) 解压运行nginx.exe 可以看到命令行窗口一闪而过,查看任务管理器,可以看到多出两个nginx.exe的进程 进入解压目录的conf下 这个文件就是nginx的配置文件了,这个是window版的,有些配置被注释掉了 配置详细可以看这篇博客 http://www.cnblogs.com/sunxucool/p/3225818.html 输入loc

网络服务高可用及负载均衡2——CentOS7系统网络组

前几天刚给大家分享过CentOS6系统下如何实现双网卡绑定同一IP以达到网络负载均衡以及高可用性.很多人肯定也在想,在CentOS7系统下如何实现了,那么今天就给大家大家分享一下如何使用CentOS7系统的网络组来实现同样的效果了.网络组是将多个网卡聚合在一起,从而实现冗错和提高吞吐量的一种技术手段,但它不同于旧版中bonding技术,提供更好的性能和扩展性,网络组由内核驱动和teamd守护进程实现.接下来就给大家展示一下如何实现. 一.环境需求 交换机设备:两台支持动态链聚合功能的交换机或者一

linux企业常用服务---部署Nginx+Tomcat负载均衡集群

部署前准备: iptables和selinux不做配置,关掉 系统光盘作为yum源,配置yum文件 源码包准备jdk-7u65-linux-x64.gz apache-tomcat-7.0.54.tar.gz 注意源码包存放位置要与脚本中相互对应 环境介绍: 一台nginx,两台tomcat 分别在后端tomcat1和tomcat2上配置: [[email protected] ~]# vi install_tomcat.sh #!/bin/bash ##by linuxfan ########

干货分享微服务spring-cloud(4.负载均衡ribbon与熔断器hystrix)

Ribbon是一个基于http和tcp的客户端负载均衡工具 Hystrix具备服务降级.服务熔断.线程和信号隔离.请求缓存.请求合并以及服务监控 为了方便消费者负载均衡效果,复制demo-springcloud-client1并重名为demo-springcloud-client2,修改配置文件和启动类,服务提供者1和2服务名均为spring.application.name=demo-springcloud-client 修改YhqContoller实现,为了方便负载均衡观察效果,demo-s

Marathon-lb 服务自动发现和负载均衡

Marathon-lb用途 在使用Marathon+Mesos 的容器集群中,我们会构建很多个容器,这些容器在不同的slave上分配了不同的随机端口,这些Docker容器在HA模式下运行,如果任何slave节点故障导致容器实例意外退出,它将自动重新创建到健康的节点上. 所以我们不必担心高可用性问题,Marathon会自动帮我们处理这些问题. 但是,当我们要使用这些容器处理我们的业务数据时,问题就来了.如我们有多个nginx提供web服务,我们如何分配流量? 如果slave节点发生硬件故障,或者容