Docker上使用Nginx进行负载均衡示例

本文在Windows7环境上以微服务架构利器Docker + SpringBoot + Nginx为例,演示在Docker上利用Nginx对SpringBoot开发的Web应用进行负载均衡。

一 安装docker

1. 下载Docker ToolBox

从以下地址下载ToolBox

https://download.docker.com/ win/stable/DockerToolbox.exe

具体安装过程可参考文档

https://docs.docker.com/toolbox/

2. 下载后双击安装Toolbox,勾上所有组件并安装所提示的各种设备软件。

3. 启动Docker Quickstart Terminal,此时可能弹出需要指定bash.exe目录的提示,选择git目录下的bin/bash.exe即可。

4. 输入docker version或者docker info确认是否安装正确。

若出现error during connect. This error may also indicate that the docker daemon is not running. 说明docker-machine的环境没有配置。使用docker-machine env查看环境配置,如下:

$ docker-machine env

export DOCKER_TLS_VERIFY="1"

export DOCKER_HOST="tcp://192.168.99.100:2376"

export DOCKER_CERT_PATH="C:\Users\Administrator\.docker\machine\machines\default"

export DOCKER_MACHINE_NAME="default"

export COMPOSE_CONVERT_WINDOWS_PATHS="true"

# Run this command to configure your shell:

# eval $("D:\Program Files\Docker Toolbox\docker-machine.exe" env)

根据上述提示,执行最后一行即可。

eval $("D:\Program Files\Docker Toolbox\docker-machine.exe" env)

再次执行docker version或者docker info则可正确显示docker的版本信息。

5. 查看虚拟机列表

docker-machine ls

6. 添加新的虚拟机

docker-machine create --driver virtualbox VM_NAME

7. 删除虚拟机

docker-machine rm VM_NAME

二 使用nginx进行负载均衡

8. 启动两个spring-boot应用程序的容器

docker run -p 8081:8080 --name web1 -it app.jar /bin/bash

docker run -p 8082:8080 --name web2 -it app.jar /bin/bash

9. 启动nginx容器

docker run -p 8083:80 -it nginx /bin/bash

10. 编辑nginx的conf文件

进入容器后,在/etc/nginx/conf.d/中修改default.conf配置。

在编辑default.conf时,有时候容器里没有安装vim,使用vim命令时提示vim: command not found,则需要安装vim,使用apt-get install vim命令进行安装,若提示:

Reading package lists... Done

Building dependency tree

Reading state information... Done

E: Unable to locate package vim

则使用apt-get update,同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,获取到最新的软件包。等更新完毕以后再执行apt-get install vim命令即可。

在default.conf行首加入

upstream balance {

server 192.168.99.100:8081;

server 192.168.99.100:8082;

}

在default.conf的server层级下加入

location / {

proxy_pass http://balance;

}

11. 执行nginx命令启动nginx

在浏览器中访问http://192.168.99.100:8083,即可看到轮流访问的是192.168.99.100:8081和192.168.99.100:8082两个应用。

12. 修改upstream balance

按照如下设置real server的权重

upstream balance {

server 192.168.99.100:8081 weight=9;

server 192.168.99.100:8082 weight=1;

}

保存后nginx -s reload重新加载配置,访问http://192.168.99.100:8083,可以发现轮流访问两个real server的频次比例改变。

三 nginx相关命令

#修改配置后重新加载生效

nginx -s reload

#重新打开日志文件

nginx -s reopen

# 测试nginx配置文件是否正确

nginx -t -c /path/to/nginx.conf

停止nginx相关命令

#快速停止nginx

nginx -s stop

#完整有序的停止nginx

quit

其他的停止nginx 方式

ps -ef grep nginx

#从容停止Nginx

kill -QUIT 主进程号

#快速停止Nginx

kill -TERM 主进程号

#强制停止Nginx

pkill -9 nginx

启动nginx

nginx -c /path/to/nginx.conf

平滑重启nginx

kill -HUP 主进程号

四 配置docker加速器

可以使用如下的脚本将mirror的配置添加到docker daemon的启动参数中,并使用docker info命令查看修改后的mirror。

docker-machine ssh default "echo 'EXTRA_ARGS=\"--registry-mirror=https://pee6w651.mirror.aliyuncs.com\"' sudo tee -a /var/lib/boot2docker/profile"

docker-machine restart default

关注[互联网技术爱好者]

成为价值的传播者

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171221G0KOWB00?refer=cp_1026

相关快讯

扫码关注云+社区