博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
『中级篇』Docker 水平扩展和负载均衡(40)
阅读量:7231 次
发布时间:2019-06-29

本文共 1737 字,大约阅读时间需要 5 分钟。

原创文章,欢迎转载。转载请注明:转载自,谢谢!

原文链接地址:

Docker Compose 里面的scale 设置服务运行的容器数量。源码地址:中的No.4

服务先创建起来
  • 项目路径
lscd flask-redis/pwd复制代码
  • 项目安装
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composesudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose复制代码
sudo service docker restartsudo docker-compose up复制代码
cd labs/flask-redis/sudo docker-compose ps复制代码
  • scale 命令的使用

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

docker-compose up --scale web=3 -d复制代码

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

  • 修改docker-compose.yml文件

ports 去掉。 在试试

version: "3"services:  redis:    image: redis  web:    build:      context: .      dockerfile: Dockerfile    environment:      REDIS_HOST: redis复制代码
  • 执行命令

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

#-d后台运行sudo docker-compose up -d#启动了2个容器,1个web,1个resdissudo docker-compose ps#水平扩展给web的容器增加到3个sudo docker-compose up --scale web=3 -d#启动了4个容器,3个web,1个resdissudo docker-compose ps复制代码

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

  • haproxy

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

其实跟上边的例子很相似,只是把python应用的端口改成了80,使用了一个新的image把80映射到本地的8080。

cd lb-scale/lspwd复制代码
more app.py复制代码
image.png
more Dockerfile复制代码
more docker-compose.yml 复制代码
  • docker-compose 安装lb
sudo docker-compose up -d#访问下看可以不curl http://127.0.0.1:8080sudo docker-compose up --scale web=10 -dcurl http://127.0.0.1:8080复制代码

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

个人技术主页:idig8.com

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

你可能感兴趣的文章
Objective-C中的SEL、IMP和Class类型(转)
查看>>
20180814 基于51单片机的数码相机实验指导书编写,继续挖坑
查看>>
数据库中的T-sql语句 条件修改 高级查询
查看>>
win7开机密码忘记了
查看>>
阿里前端两年随想
查看>>
day28(ajax之js原生代码实现)
查看>>
用自定义属性attr或prop方法,遍历获取当前点击a的titleid
查看>>
安卓真机测试遇到的检测不到安卓设备的问题
查看>>
我的大学,我的梦
查看>>
洛谷训练P1008(循环+暴力)
查看>>
【挖坟】HDU3205 Factorization
查看>>
reentrantlock用于替代synchronized
查看>>
Android包管理机制(二)PackageInstaller安装APK
查看>>
测试aau代码
查看>>
jenkins相关默认路径
查看>>
条件编译#ifndef
查看>>
正则表达式
查看>>
slick对超过22个属性的表进行映射的两种办法
查看>>
hdu5731
查看>>
iOS 路径设置(转)
查看>>