nginx三种负载均衡的方式
一、轮询
1.启动docker
systemctl start docker
2切换root
su
3.启动nginx
nginx
4.创建并编辑test.py
vim test.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'hello'
app.run(host='0.0.0.0',port=5000)
5.构建dockerfile
vim Dockerfile
FROM python:3.8.12-slim-buster
WORKDIR /app
COPY ./test.py ./
RUN pip install flask
CMD python test.py
6.构建镜像
docker build -t flask5000 -f ./Dockerfile .
7.启动第一个容器
docker run -it flask5000
8.退出容器
ctrl+q+p
9.启动第二个容器
docker run -it flask5000 /bin/bash
10.退出容器
ctrl+q+p
11.修改test.py
vim test.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'world'
app.run(host='0.0.0.0',port=5000)
12.将修改好的test.py复制到第二个容器内
docker ps # 查看第二个容器的id
docker cp ./test.py 镜像id:/
13.修改nginx配置
vim /usr/local/nginx/conf/nginx.conf
# 在虚拟主机配置上面添加负载均衡的代码
upstream OrdinaryPolling { # 与sever同级
server 172.17.0.2:5000;
server 172.17.0.3:5000;
}
#虚拟主机的配置
server {
#监听端口
listen 80;
#域名可以有多个,用空格隔开
server_name localhost;
# 添加proxy_pass项,并将它的值设置为需要方向代理的地址
.....
server {
#对 "/" 启用反向代理,当访问'/'时,会访问proxt_pass定义的地址
location / {
root html;
proxy_pass http://172.17.0.2:5000;
index index.html index.htm;
}
}
....
14.重新加载nginx
nginx -s reload
二、权重
前面与轮询步骤一样
nginx配置
vim /usr/local/nginx/conf/nginx.conf
# 在虚拟主机配置上面添加负载均衡的代码
upstream OrdinaryPolling { # 与sever同级
server 172.17.0.2:6000 weight=5;
server 172.17.0.4:5000 weight=2;
}
#虚拟主机的配置
server {
#监听端口
listen 80;
#域名可以有多个,用空格隔开
server_name localhost;
# 添加proxy_pass项,并将它的值设置为需要方向代理的地址
.....
server {
#对 "/" 启用反向代理,当访问'/'时,会访问proxt_pass定义的地址
location / {
root html;
proxy_pass http://172.17.0.2:5000;
index index.html index.htm;
}
}
....
三、IP
前面步骤与轮询、权重一样
nginx配置
vim /usr/local/nginx/conf/nginx.conf
# 在虚拟主机配置上面添加负载均衡的代码
upstream OrdinaryPolling { # 与sever同级
ip_hash;
server 172.17.0.2:6000 weight=5;
server 172.17.0.4:5000 weight=2;
}
# ip_hash指令告诉nginx服务器,同一个IP地址客户端发送的请求都将分发到同一个服务器进行处理。
#虚拟主机的配置
server {
#监听端口
listen 80;
#域名可以有多个,用空格隔开
server_name localhost;
# 添加proxy_pass项,并将它的值设置为需要方向代理的地址
.....
server {
#对 "/" 启用反向代理,当访问'/'时,会访问proxt_pass定义的地址
location / {
root html;
proxy_pass http://172.17.0.2:5000;
index index.html index.htm;
}
}
....