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

原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文链接地址:『中级篇』Docker 水平扩展和负载均衡(40)

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

服务先创建起来
  • 项目路径
ls
cd flask-redis/
pwd
````
![](https://upload-images.jianshu.io/upload_images/11223715-bcd2d5065476141e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

* 项目安装




<div class="se-preview-section-delimiter"></div>

``` bash
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=num
docker-compose up --scale web=3 -d
![](https://upload-images.jianshu.io/upload_images/11223715-fbb896f1e3e0855e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

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

![](https://upload-images.jianshu.io/upload_images/11223715-bb758dbcfa0462f7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  • 修改docker-compose.yml文件
    ports 去掉。 在试试
version: "3"
services:
  redis:
    image: redis
  web:
    build:
      context: .
      dockerfile: Dockerfile
    environment:
      REDIS_HOST: redis
![](https://upload-images.jianshu.io/upload_images/11223715-146f494b954b12d0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  • 执行命令
    一个–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
![](https://upload-images.jianshu.io/upload_images/11223715-a48be7ba71a229e6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

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

  • haproxy
    HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上,完全可以支持数以万计的 并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
    其实跟上边的例子很相似,只是把python应用的端口改成了80,使用了一个新的image把80映射到本地的8080。
cd lb-scale/
ls
pwd
![](https://upload-images.jianshu.io/upload_images/11223715-46ca86018fef457c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
more app.py
![image.png](https://upload-images.jianshu.io/upload_images/11223715-24c46f1ae8d9d2aa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
more Dockerfile
![](https://upload-images.jianshu.io/upload_images/11223715-5e3b2955730d7fbc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
more docker-compose.yml 
![](https://upload-images.jianshu.io/upload_images/11223715-df2528c65ee773eb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  • docker-compose 安装lb
sudo 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:8080

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

个人技术主页:idig8.com

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


往期精彩
  1. docker导学(一)
  2. 容器的技术概述(二)
  3. docker的魅力初体验-5分钟安装wordpress不走弯路(三)
  4. docker官网介绍(四)
  5. 如何在mac上安装docker(五)
  6. 如何在window上安装docker(六)
  7. 如何在mac上通过vagrant安装虚拟机(七)
  8. 如何在window上通过vagrant安装虚拟机(八)
  9. docker-Machine的本地使用(九)
  10. docker-Machine的本地使用(十)
  11. 在linux/mac下通过Docker-Machine在阿里云上的使用(11)
  12. docker架构和底层技术(12)
  13. docker Image概述(13)
  14. 手动建立一个base Image(14)
  15. 什么是Container(15)
  16. 构建自己的Docker镜像(16)
  17. Dockerfile详解(17)
  18. 镜像的发布(18)
  19. Dockerfile实战(19)
  20. 容器的操作(20)
  21. Dockerfile实战CMD和ENTRTYPOINT的配合(21)
  22. 容器的资源限制(22)
  23. docker网络(23)
  24. docker学习必会网络基础(24)
  25. Linux网络命名空间(25)
  26. Docker Bridge详解(26)
  27. 容器之间的Link(27)
  28. 容器的端口映射(28)
  29. 容器网络之host和none(29)
  30. 多容器复杂应用的部署(30)
  31. overlay网络和etcd实现多机的容器通信(31)
  32. docker的数据持久化存储和数据共享(32)
  33. windows下vagrant 通过SecureCRT连接centos7(33)
  34. 数据持久化之Data Volume(34)
  35. 数据持久化之bind Mounting(35)
  36. docker 使用bind Mounting实战(36)
  37. docker容器安装wordpress(37)
  38. docker Compose到底是什么(38)
  39. Docker Compose的安装和基本使用(39)
    image

猜你喜欢

转载自blog.csdn.net/zhugeaming2018/article/details/81572207