2Docker的负载均衡

Posted littlecurl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2Docker的负载均衡相关的知识,希望对你有一定的参考价值。

第三部分:Get Started, Part 3: Services  

  回顾   第一部分讲的是如何安装Docker镜像

       第二部分讲的是如何自定义一个容器     

       第三部分讲的是如何自己实现负载均衡(现在在这里)  

  1、关于服务   

    在分布式应用程序中,应用程序的不同部分被称为“服务”。“例如,如果你想象一个视频共享网站,它可能包括一个用于将应用数据存储在数据库中的服务,一个用于用户上传内容后后台视频转码的服务,一个用于前端的服务,等等。   服务实际上只是“生产中的容器”。一个服务只运行一个映像,但是它编码了映像运行的方式——它应该使用什么端口,应该运行多少个容器副本,这样服务就有了它需要的容量,等等。扩展服务会改变运行该软件的容器实例的数量,从而为该服务分配更多的计算资源。幸运的是,使用Docker平台定义、运行和扩展服务非常容易——只需编写一个docker-compose.yml文件。  

  2、首先 vi docker-compose.yml    

    version: "3"    

    services:     

      web:     # replace username/repo:tag with your name and image details     

      image: littlecurl/test:part2     

      deploy:       replicas: 5      

      resources:      

        limits:       

          cpus: "0.1"       

          memory: 50M      

      restart_policy:      

        condition: on-failure     

      ports:      

        - "4000:80"     

      networks:      

        - webnet    

    networks:     

      webnet:   

保存并退出   

  注意:yml文件有个死规矩,冒号和横杠后面必须有一个空格,否则文件不能起作用。   

  名词解释:    

    yml  是YAML(Yet Another Markup Language ,另一种标记语言)文件的后缀名。这种语言吸收了XML等多种语言的功能,同时去除了XML繁冗的标签对。

 这个 docker-compose.yml文件告诉Docker去做下面这些事情:    

  1. image: littlecurl/test:part2  从云端 pull 下来第二部分时候上传的镜像    

  2. replicas: 5  运行该镜像的5个实例,服务起名为 web    

  3. cpus: "0.1" memory: 50M  限制每个实例最多只能使用10%的CPU和50MB的RAM    

  4. restart_policy: condition: on-failure  当启动失败的时候重启    

  5. ports: - "4000:80"  将主机端口4000映射到web端口80    

  6. networks: - webnet  指示web的容器通过称为webnet的负载均衡网络共享端口80    

  7. 最后个是一个空的networks: webnet:  使用默认设置的 webnet网络(负载均衡网络)     

3、初始化swarm    

  现在yml文件已经有了,想要跑起来yml中设定的镜像,需要先初始化一下docker swarm      

    docker swarm init      

  名词解释:     

    swarm  有关swarm的学习,推荐一篇博客:https://blog.csdn.net/chinagissoft/article/details/51864150   

4、把yml文件跑起来,同时设置app的名字为:getstartedlab   

  docker stack deploy -c docker-compose.yml getstartedlab      

5、检查一下是否app启动   

  docker service ls  

6、在服务中运行的单个容器称为 Task  任务  

7、通过下面的命令看看这个app的进程状态   

  docker service ps getstartedlab_web  

8、查看一下已经启动的容器的ID号   

  docker container ls -q  

9、查看启动的web程序( -4 的意思是 按照IPv4协议)   

  curl -4 http://localhost:4000  

10、停掉这个App,先停stack    

  docker stack rm getstartedlab   

  再停swarm    

    docker swarm leave --force  

 小结:   

  手动实现负载均衡其实就是手动配置一个容器的资源。

 

以上是关于2Docker的负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

Ribbon-负载均衡策略

ribbon负载均衡详解

四层负载均衡技术

常见的负载均衡技术

快速理解负载均衡

负载均衡基本介绍