概述
使用nginx做负载均衡就是修改一个配置文件的事情,网上大部分教程都是在本机去安装nginx做的,但是为什么不能使用docker更加方便的去做这件事情呢,今天我的想法就是用docker跑nginx然后来做一个负载均衡的实验
使用环境介绍
其实这个环境很简单,就是四台centos机器,然后都安装上了docker,也就是下面这三台机器
- docker-master:192.168.1.231
- docker-slave1:192.168.1.232
- docker-slave2:192.168.1.233
- docker-slave3:192.168.1.234
注意最好安装上ansible,因为这样最集群的操作就比较方便起来了
之后集体pullnginx镜像
ansible docker -m shell -a "docker pull nginx:1.15.1-alpine"
我使用docker-master节点上的nginx做负载均衡
docker-slave的所有节点都是网页服务器
docker-master节点部分
首先编写nginx的配置文件
docker run -d nginx:1.15.1-alpine
把镜像里面的配置文件复制出来
docker cp e08247c36eac:/etc/nginx/nginx.conf .
之后修改成下面这个样子
1 | user nginx; |
其实就是加上了upstream和server这两段
之后新建一个dockerfile,加入
1 | FROM nginx:1.15.1-alpine |
其实就是把配置文件拷贝到容器里面去
之后新建一个docker-compose文件
加入
1 | version: "3" |
这个不多解释了
最后启动起来
docker-compose -f docker-compose.yml up -d
此时如果你访问231服务器会报502错误说明几乎成功一半了
web服务器部分
首先编写compose文件
1 | version: "3" |
使用ansible分发文件
ansible docker-slave -m copy -a "src=/root/docker-compose.yml dest=/root/docker-compose.yml"
分发docker-compose这个命令
ansible docker-slave -m copy -a "src=/usr/local/bin/docker-compose dest=/usr/local/bin/docker-compose"
ansible docker-slave -m shell -a "chmod +x /usr/local/bin/docker-compose"
之后在所有节点启动容器
ansible docker-slave -m shell -a "docker-compose -f /root/docker-compose.yml up -d"
之后编写一个index.html文件,里面随便写点什么比如hello slave-1,然后分发给192.168.1.232,其他的也都一样
ansible slave-1 -m copy -a "src=/root/index.html dest=/home/docker/nginx/html/index.html"
验证
最后的验证就是输入192.168.1.231的ip不断的刷新,里面会不断重复hello slave-1或者hello slave-2或者hello slave-3
欢迎关注我的博客www.bboy.app
Have Fun