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

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

#####服务先创建起来

  • 项目路径ls cd 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-compose sudo chmod +x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
sudo service docker restart
sudo docker-compose up
cd labs/flask-redis/
sudo docker-compose ps
  • scale 命令的使用设置为一个服务启动的容器数量,数量是以这样的参数形式指定的:service=numdocker-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个resdis sudo docker-compose ps #水平扩展给web的容器增加到3个 sudo docker-compose up --scale web=3 -d #启动了4个容器,3个web,1个resdis sudo docker-compose ps

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

  • haproxyHAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上,完全可以支持数以万计的 并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。 其实跟上边的例子很相似,只是把python应用的端口改成了80,使用了一个新的image把80映射到本地的8080。
cd lb-scale/
ls
pwd
more app.py
image.png
more Dockerfile
more docker-compose.yml 
  • docker-compose 安装lbsudo docker-compose up -d #访问下看可以不 curl http://127.0.0.1:8080 sudo docker-compose up --scale web=10 -d curl http://127.0.0.1:8080https://hub.docker.com/r/dockercloud/haproxy/ dockercloud / haproxy 这个是测试学习用的,老铁们只要知道这个东西就可以了,实际项目中,主要用的nginx,到时候我会演示。

个人技术主页:idig8.com

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


原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu 16.04上使用Docker和Docker Compose配置持续集成测试环境

持续集成(CI)是指开发人员尽可能经常集成代码并在每个提交在通过自动构建合并到共享存储库之前和之后进行测试的实践。

840
来自专栏JMCui

Docker 系列六(Docker Swarm 项目).

    随着互联网快速发展,以及微服务架构的流行,服务器的压力越来越大。上一篇介绍的 Docker Compose 项目,可以将多个容器捏合在一起,实现容器间的...

854
来自专栏性能与架构

Docker容器案例:应用 Mysql

前阶段体验 Mysql 的新版本 5.7.13,由于机器里已经有 Mysql了,再安装另一个版本会有一些麻烦,为了简单,便使用 Docker 容器来安装 可能有...

3243
来自专栏程序员八阿哥

年薪20万Python工程师进阶(1):Django-第三方登录框架

3.数据生成,直接migrate,因为源码中的 makemigrtasion 生成的数据库迁移文件已经存在了。会生成5张socia表,不用管

630
来自专栏Laoqi's Linux运维专列

KVM部署篇

6514
来自专栏finleyMa

docker学习系列3 提交并分享自己的镜像

docker有个类似 github的平台,叫 https://hub.docker.com 可以 pull 官方或第三方提供的镜像,当然也可以发布自己的镜像供...

1625
来自专栏宝哥的专栏

Docker系列学习文章 - 存储基本配置(八)

| 导语 通过前面的文章学会后,我们运行一个容器,打包制作一个镜像没啥问题了。但是要真正在生产上运用docker,我们还差两招很重要的。一个是数据卷的配置,还有...

1.4K25
来自专栏小狼的世界

谈一下Docker与Kubernetes集群的日志和日志管理

日志对于我们管理Kubernetes集群及其上的应用具有非常重要的作用,特别是在出现故障或者Bug的时候。如果你能回答下面几个问题,那么可以不用再看本文了,如果...

2181

使用Helm将应用程序部署到IBM Cloud上的Kubernetes

Helm是Kubernetes的包管理器。借助Helm,您可以非常方便地将应用程序,工具和数据库(如MongoDB,PostgreSQL,WordPress和A...

2869
来自专栏晨星先生的自留地

Docker入门教程(二)命令

1624

扫码关注云+社区