『中级篇』Docker 水平扩展和负载均衡(40)

Posted 编程坑太多

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了『中级篇』Docker 水平扩展和负载均衡(40)相关的知识,希望对你有一定的参考价值。

服务先创建起来
  • 项目路径

 
   
   
 
  1. ls

  2. cd flask-redis/

  3. pwd

`

  • 项目安装

 
   
   
 
  1. sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

  2. sudo chmod +x /usr/local/bin/docker-compose

  3. sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

『中级篇』Docker 水平扩展和负载均衡(40)

 
   
   
 
  1. sudo service docker restart

  2. sudo docker-compose up

『中级篇』Docker 水平扩展和负载均衡(40)

 
   
   
 
  1. cd labs/flask-redis/

  2. sudo docker-compose ps

『中级篇』Docker 水平扩展和负载均衡(40)

  • scale 命令的使用

设置为一个服务启动的容器数量,数量是以这样的参数形式指定的:service=num

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

『中级篇』Docker 水平扩展和负载均衡(40)

直接报错了。看下源码为什么报错。

『中级篇』Docker 水平扩展和负载均衡(40)

  • 修改docker-compose.yml文件

ports 去掉。 在试试

 
   
   
 
  1. version: "3"

  2. services:

  3.  redis:

  4.    image: redis

  5.  web:

  6.    build:

  7.      context: .

  8.      dockerfile: Dockerfile

  9.    environment:

  10.      REDIS_HOST: redis

『中级篇』Docker 水平扩展和负载均衡(40)

  • 执行命令

一个--scale 容器名=数字,就可以随时让web进行扩展。感觉很方便把!

 
   
   
 
  1. #-d后台运行

  2. sudo docker-compose up -d

  3. #启动了2个容器,1个web,1个resdis

  4. sudo docker-compose ps

  5. #水平扩展给web的容器增加到3个

  6. sudo docker-compose up --scale web=3 -d

  7. #启动了4个容器,3个web,1个resdis

  8. sudo docker-compose ps

『中级篇』Docker 水平扩展和负载均衡(40)

但是问题来了没有暴露到外边的端口都是5000内部端口,所以出来了一个命令负载均衡工具:haproxy

  • haproxy

HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上,完全可以支持数以万计的 并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。 其实跟上边的例子很相似,只是把python应用的端口改成了80,使用了一个新的image把80映射到本地的8080。

 
   
   
 
  1. cd lb-scale/

  2. ls

  3. pwd

『中级篇』Docker 水平扩展和负载均衡(40)

 
   
   
 
  1. more app.py

『中级篇』Docker 水平扩展和负载均衡(40)

 
   
   
 
  1. more Dockerfile

『中级篇』Docker 水平扩展和负载均衡(40)

 
   
   
 
  1. more docker-compose.yml

『中级篇』Docker 水平扩展和负载均衡(40)

  • docker-compose 安装lb

 
   
   
 
  1. sudo docker-compose up -d

  2. #访问下看可以不

  3. curl http://127.0.0.1:8080

  4. sudo docker-compose up --scale web=10 -d

  5. curl http://127.0.0.1:8080

https://hub.docker.com/r/dockercloud/haproxy/ dockercloud / haproxy 这个是测试学习用的,老铁们只要知道这个东西就可以了,实际项目中,主要用的nginx,到时候我会演示。

『中级篇』Docker 水平扩展和负载均衡(40)

『中级篇』Docker 水平扩展和负载均衡(40)

『中级篇』Docker 水平扩展和负载均衡(40)

『中级篇』Docker 水平扩展和负载均衡(40)

个人技术主页:idig8.com

PS:Docker的scale 可以扩展,也可以所有,他们自动来控制的。web=10 可以改成5 其中的6,7,8,9,10就被删除了。


往期精彩


以上是关于『中级篇』Docker 水平扩展和负载均衡(40)的主要内容,如果未能解决你的问题,请参考以下文章

【干货】负载均衡!中级运维必知的10个问题

干货负载均衡!中级运维必知的10个问题

分布式系统之负载均衡(案例篇)

基于一致性哈希实现负载均衡

Docker入门 三 用服务来扩展和负载均衡你的应用

docker案例篇之nginx负载均衡