docker-compose使用HAProxy+scale实现镜像队列的负载均衡

1. HAProxy

开始测试项目的负载均衡之前,先了解下什么是haproxy。
有兴趣的移步:http://www.manongjc.com/article/72156.html

   HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上,完全可以支持数以万计的 并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
   HAProxy通常借助于OS上几种常见的技术来实现性能的最大化。比如使用单进程、事件驱动模型显著降低了上下文切换的开销及内存占用。

2. 开始使用

我们用docker来玩一个flask项目的负载均衡。
一共要使用到三个文件。

  1. app.py
import os
import socket
from flask import Flask
from redis import Redis


app = Flask(__name__)
redis_conn = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)

@app.route('/')
def hello():
    redis_conn.incr('hits')
    return 'Hello Container World! I have been seen %s times and my hostname is %s.\n' % (redis_conn.get('hits'),socket.gethostname())

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=80, debug=True)
  1. Dockerfile
FROM python:3
COPY . /app
WORKDIR /app
RUN pip install flask redis
EXPOSE 80
CMD [ "python", "app.py" ]
  1. docker-compose.yml
version: "3"

services:

  webapp:
    build: .
    environment:
      REDIS_HOST: redis

  redis:
    image: 'redis:alpine'

  lb:   # 使用负载均衡镜像服务
    image: 'dockercloud/haproxy'
    links:
      - webapp
    ports:
      - 8080:80
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

     那么,我们直接运行docker-compose命令,去构建镜像并运行容器服务。注意我们启动时,命令参数需要跟一个 --scale 服务名=n,即启动n个该服务。

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

     最后我们测试下,是否达到了负载均衡的目的。我们看到请求是平均分配到这三个服务上的,目的达到。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值