我们希望扩展和负载均衡自己的应用,为了达到这个目的,需要要分布式应用中使用更高一级的服务。
关于服务
对于分布式系统而言,不同的组成部分叫做“服务”。例如,对于一个视频分享网站,它可能包含了一个往数据库存储的服务,一个在后台格式转换用户上传的东西的服务,一个负责前端展示的服务。
服务实际上就是生成中的容器,就从业务方面而言。一个服务只能运行一个镜像,但是它能控制容器运行的方式,比如使用什么网络端口,使用多少个容器副本等等。扩展一个服务,可以通过改变应用的每部分实例的数量,还可以通过在服务内部分配更多的主机计算资源。
幸运的是,使用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