本文在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
关注[互联网技术爱好者]
成为价值的传播者
领取专属 10元无门槛券
私享最新 技术干货