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

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

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

服务先创建起来
  • 项目路径
ls
cd flask-redis/
pwd
『中级篇』Docker 水平扩展和负载均衡(40)_第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
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
『中级篇』Docker 水平扩展和负载均衡(40)_第2张图片
sudo service docker restart
sudo docker-compose up
『中级篇』Docker 水平扩展和负载均衡(40)_第3张图片
cd labs/flask-redis/
sudo docker-compose ps
『中级篇』Docker 水平扩展和负载均衡(40)_第4张图片
  • scale 命令的使用

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

docker-compose up --scale web=3 -d
『中级篇』Docker 水平扩展和负载均衡(40)_第5张图片

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

『中级篇』Docker 水平扩展和负载均衡(40)_第6张图片
  • 修改docker-compose.yml文件

ports 去掉。 在试试

version: "3"
services:
  redis:
    image: redis
  web:
    build:
      context: .
      dockerfile: Dockerfile
    environment:
      REDIS_HOST: redis
『中级篇』Docker 水平扩展和负载均衡(40)_第7张图片
  • 执行命令

一个--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
『中级篇』Docker 水平扩展和负载均衡(40)_第8张图片

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

  • haproxy

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

cd lb-scale/
ls
pwd
『中级篇』Docker 水平扩展和负载均衡(40)_第9张图片
more app.py
『中级篇』Docker 水平扩展和负载均衡(40)_第10张图片
image.png
more Dockerfile
『中级篇』Docker 水平扩展和负载均衡(40)_第11张图片
more docker-compose.yml 
『中级篇』Docker 水平扩展和负载均衡(40)_第12张图片
  • 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,到时候我会演示。

『中级篇』Docker 水平扩展和负载均衡(40)_第13张图片
『中级篇』Docker 水平扩展和负载均衡(40)_第14张图片
『中级篇』Docker 水平扩展和负载均衡(40)_第15张图片
『中级篇』Docker 水平扩展和负载均衡(40)_第16张图片
『中级篇』Docker 水平扩展和负载均衡(40)_第17张图片

个人技术主页: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)
    『中级篇』Docker 水平扩展和负载均衡(40)_第18张图片
    image

你可能感兴趣的:(『中级篇』Docker 水平扩展和负载均衡(40))