Docker Compose水平扩展和负载均衡
程序员文章站
2022-03-21 16:29:54
...
一、scale实现水平扩展
docker-comose scale : Set number of containers for a service,实现水平扩展
1.1、用到的三个文件
- docker-compose.yaml文件
version: "3"
services:
redis:
image: redis
web:
build:
context: .
dockerfile: Dockerfile
environment:
REDIS_HOST: redis
注:水平扩展会抢占8080端口,会报错,所以先不指定端口
# ports:
# - 8080:80
- Dockerfile文件
FROM python:2.7
LABEL maintaner="Peng Xiao aaa@qq.com"
COPY . /app
WORKDIR /app
RUN pip install flask redis
EXPOSE 80
CMD [ "python", "app.py" ]
- app.py文件
from flask import Flask
from redis import Redis
import os
import socket
app = Flask(__name__)
redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)
@app.route('/')
def hello():
redis.incr('hits')
return 'Hello Container World! I have been seen %s times and my hostname is %s.\n' % (redis.get('hits'),socket.gethostname())
if __name__ == "__main__":
app.run(host="0.0.0.0", port=80, debug=True)
1.2、执行docker-compose
docker-compose up --scale web=3 -d
二、HAProxy实现负载均衡
上图发现 3 个应用都是占用的容器的5000 端口,此时就可以用负载均衡进行请求分发
2.1、修改docker-compose.yaml文件
version: "3"
services:
redis:
image: redisweb:
build:
context: .
dockerfile: Dockerfile
environment:
REDIS_HOST: redislb:
image: dockercloud/haproxy
links:
- web
ports:
- 8080:80
volumes:
- /var/run/docker.sock:/var/run/docker.sock
2.3、使用 curl 请求验证(可以进行负载均衡)
2.4 流量高峰过后,为减少资源消耗,也可减小 scale
docker-compose up --scale web=2 -d #web 后的数值变小即可
上一篇: 理解水平扩展和垂直扩展
下一篇: Golang并发操作中常见的读写锁详析
推荐阅读
-
详解利用nginx和docker实现一个简易的负载均衡
-
详解Docker Swarm服务发现和负载均衡原理
-
详解利用nginx和docker实现一个简易的负载均衡
-
docker-compose实现nginx负载均衡
-
使用Docker Compose 实现nginx负载均衡的方法步骤
-
Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作
-
docker三剑客:docker-compose做负载均衡
-
详解Docker Swarm服务发现和负载均衡原理
-
Docker-Compose部署nginx代理Tomcat集群,实现负载均衡
-
docker-compose部署nginx代理tomcat集群实现负载均衡与部署lnmp+discuz