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的负载均衡的主要内容,如果未能解决你的问题,请参考以下文章