27. docker compose 单机 均衡负载

1.编写Dockerfile

#Dockerfile

FROM python:2.7

LABEL maintaner="eaon [email protected]"

COPY . /app

WORKDIR /app

RUN pip install flask redis

EXPOSE 80

CMD [ "python", "app.py" ]

2. 编写 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)

3. 编写 docker-compose.yml

version: "3"

 

services:

  redis:

    image: redis

 

  web:

    build:

      context: .

      dockerfile: Dockerfile

    environment:

      REDIS_HOST: redis

 

  lb:

    image: dockercloud/haproxy

    links:

      - web

    ports:

      - 8080:80

    volumes:

      - /var/run/docker.sock:/var/run/docker.sock

4. 启动服务

  docker-compose up -d

5. 通过 scale 扩展应用

  将容器 拓展为相同的 3个

  docker-compose up --scale web=3 -d

  使用 docker-compose ps 查看端口占用

  

  发现 3 个应用都是占用的 容器的 5000 端口  此时就可以用 负载均衡 进行 请求分发

  

6. 使用 curl 请求后 发现已经可以进行负载均衡

7. 减小 scale 

  docker-compose up --scale web=2 -d #web 后的数值变小即可

猜你喜欢

转载自www.cnblogs.com/zonehoo/p/11365722.html
今日推荐