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 集群方式来运行。






 

posted @ 2017-09-05 11:38  慢慢走向架构师  阅读(313)  评论(0编辑  收藏  举报