写在前面的话
每篇一句
桃李不言,下自成蹊。
利用docker-compose.yml 构建整套可伸缩的服务
docker-compose.yml是一种YAML文件,定义了容器的一系列完整的行为。
docker-compose.yml
docker-compose.yml定义了如下步骤:
- 从远程仓库拉取镜像
- 运行3个容器实例作为web服务,并限制每个容器运行10%CPU,50MB内存
- 将web容器的80端口映射到宿主机的8080端口
- web容器通过webnet进行负载均衡
- webnet使用默认的负载均衡overlay设置1234567891011121314151617181920version: "3"services:web:# replace username/repo:tag with your name and image details#image: username/repo:tagimage: zakizqzhang/get-started:20171028deploy:replicas: 3resources:limits:cpus: "0.1"memory: 50Mrestart_policy:condition: on-failureports:- "8080:80"networks:- webnetnetworks:webnet:
运行web负载均衡服务
swarm初始化
|
|
假设有第2台宿主机要加入只需运行,刚初始化的第一台默认为manager
web服务运行
|
|
验证运行了3个容器
|
|
浏览器访问,默认轮询方式负载到后端容器
查看testapp运行的容器
|
|
扩容成5个容器,运行testapp web服务
将replicas 后面3改成5,重新deploy,docker stack rm 关闭testapp应用。
swarms集群
上面虽然实现了负载均衡,但是5个容器都运行在一台host上,下面我们通过swarms集群将testapp应用运行在2台host上。
刚刚第一台主机ip为:10.254.36.124
第二天主机ip 为10.254.36.42
10.254.36.42 加入swarms集群
|
|
查看目前加入的节点情况
在第一台manager上运行,后加入的worker节点查看不了。
重新运行,注意要在第二台机器先拉取镜像,不然运行失败。
10.254.36.42
10.254.36.124
到现在testapp应用的web服务,高可用就妥妥的了,随便一台host宕机,不会影响对外服务。