Nginx 配置实例-配置负载均衡
0. 实例效果
1. 两个 tomcat 的安装(可选)
这里的两个 tomcat,实际是为了模拟后端真实服务器,既然是默认后端服务器,当然也可以选用其他服务器软件,所以这一步为可选操作。
1.1 tomcat8081 的安装
1.1.1 tomcat8081 安装包的装备
# 解压 tomcat 安装包
tar zxvf apache-tomcat-7.0.70.tar.gz
# 复制 tomcat 安装文件到 /usr/local/tomcat8081 目录
cp -vr apache-tomcat-7.0.70 /usr/local/tomcat8081
1.1.2 tomcat8081 配置文件的修改
因为这里不是使用 tomcat 的默认端口进行安装,所以需修改 tomcat 的部分端口,修改 server.xml 文件,修改部分如下:
1.1.3 验证
/usr/local/tomcat8081/bin/startup.sh # 启动 8081 端口的 tomcat
/usr/local/tomcat8081/bin/shutdown.sh # 停止 8081 端口的 tomcat
ps aux | grep tomcat # 查看 tomcat 进程状态
tomcat8081 启动后,浏览器访问 tomcat8081 所在主机 IP 及对应端口,显示页面如下:
1.1.4 相关目录及文件的创建
在 /usr/local/tomca8081/webapps/ 目录下创建 edu 目录
mkdir -v /usr/local/tomcat8081/webapps/edu
在 edu 目录下创建文件 a.html,并填写如下内容:
<h1>edu-----8081 !!!</h1>
浏览器访问 http://192.168.25.120:8081/edu/a.html,显示页面如下:
1.2 tomcat8082 的安装
1.2.1 tomcat8082 安装包的装备
# 解压 tomcat 安装包
tar zxvf apache-tomcat-7.0.70.tar.gz
# 复制 tomcat 安装文件到 /usr/local/tomcat8082 目录
cp -vr apache-tomcat-7.0.70 /usr/local/tomcat8082
1.2.2 tomcat8082 配置文件的修改
因为这里不是使用 tomcat 的默认端口进行安装,所以需修改 tomcat 的部分端口,修改 server.xml 文件,修改部分如下:
1.2.3 验证
/usr/local/tomcat8082/bin/startup.sh # 启动 8082 端口的 tomcat
/usr/local/tomcat8082/bin/shutdown.sh # 停止 8082 端口的 tomcat
ps aux | grep tomcat # 查看 tomcat 进程状态
tomcat8082 启动后,浏览器访问 tomcat8082 所在主机 IP 及对应端口,此处为 192.168.25.120:8082,显示页面如下:
1.2.4 相关目录及文件的创建
在 /usr/local/tomca8082/webapps/ 目录下创建 edu 目录
mkdir -v /usr/local/tomcat8082/webapps/edu
在 vod 目录下创建文件 a.html,并填写如下内容:
<h1>edu-----8082 !!!</h1>
浏览器访问 http://192.168.25.120:8082/edu/a.html,显示页面如下:
2. nginx 的安装
2.1 安装 pcre 依赖
su - root // 切换到 root 用户
tar zxvf pcre-8.37.tar.gz // 解压 pcre 安装包
cd pcre-8.37 // 进入 pcre-8.37 目录
./configure // 配置 pcre-8.37
make && make install // 编译安装 pcre-8.37
pcre-config --version // pcre 安装成功后,查看其版本号
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
2.2 安装其他依赖
su - root // 切换到 root 用户
// 安装其他依赖
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
2.3 Nginx 的安装
su - root // 切换到 root 用户
tar zxvf nginx-1.12.2.tar.gz // 解压 nginx-1.12.2.tar.gz 安装包
cd nginx-1.12.2 // 进入 nginx-1.12.2 目录
./configure // 配置 nginx-1.12.2
make && make install // 编译安装 nginx-1.12.2
2.4 验证
/usr/local/nginx/sbin/nginx // 启动 nginx
/usr/local/nginx/sbin/nginx -s stop // 停止 nginx
ps -ef | grep nginx // 查看 nginx 进程状态
启动 nginx 之后,浏览器访问 nginx 所在主机的 IP 即端口,此处为 192.168.25.120:80(80为默认短裤,访问时可省略),显示页面如下:
3. nginx 负载均衡的配置
3.1 负载均衡方式 1——轮询(默认)
轮询:每个请求按时间顺序逐一分配给后端服务器,如果后端服务器 down 掉,则自动将其剔除;
使用轮询的负载均衡方式,修改 nginx 的配置文件如下:
浏览器访问 http://192.168.25.120/edu/a.html,显示页面如下:
刷新,显示页面如下:
可以看到使用默认的轮询方式进行负载均衡,浏览器请求被平均分配给后端的 8081、8082 两个服务器进行处理。
3.2 负载均衡方式 2——weight
weight:权重,默认值 1,根据权重设置分配请求的几率,权重值越大,分配到的请求越多。
使用权重的负载均衡方式,修改 nginx 的配置文件如下:
浏览器访问 http://192.168.25.120/edu/a.html,显示页面如下:
再次刷新,显示页面如下:
刷新,显示页面如下:
可以看到使用 weight 的轮询方式进行负载均衡,浏览器发送 3 个请求,有 2 个被分配给 8082 的服务器(几率 2/3),有一个被分配给 8081 的服务器(几率 1/3)。
3.3 负载均衡方式 3——ip_hash
ip_hash:哈希,每个请求按访问 IP 的哈希结果进行分配,这样每个访客固定请求一个后端服务器,可以解决 session 的问题。
使用 ip_hash 的负载均衡方式,修改 nginx 的配置文件如下:
浏览器访问 http://192.168.25.120/edu/a.html,显示页面如下:
刷新,显示页面如下:
可以看到使用 ip_hash 的轮询方式进行负载均衡,无论刷新多少次,请求始终被分配给 8081 服务器。
3.4 负载均衡方式 4——fair
fair:根据页面大小、加载时间长短智能的进行负载均衡。
nginx-upstream-fair-master fair模块源码
参考资料
《尚硅谷Nginx教程》11-nginx配置实例(负载均衡)
nginx-upstream-fair-master fair模块源码