Nginx 配置实例-配置负载均衡

时间:2023-03-09 09:54:09
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 文件,修改部分如下:

Nginx 配置实例-配置负载均衡

Nginx 配置实例-配置负载均衡

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 及对应端口,显示页面如下:

Nginx 配置实例-配置负载均衡

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,显示页面如下:

Nginx 配置实例-配置负载均衡

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 文件,修改部分如下:

Nginx 配置实例-配置负载均衡

Nginx 配置实例-配置负载均衡

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,显示页面如下:

Nginx 配置实例-配置负载均衡

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,显示页面如下:

Nginx 配置实例-配置负载均衡

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为默认短裤,访问时可省略),显示页面如下:

Nginx 配置实例-配置负载均衡

3. nginx 负载均衡的配置

3.1 负载均衡方式 1——轮询(默认)

轮询:每个请求按时间顺序逐一分配给后端服务器,如果后端服务器 down 掉,则自动将其剔除;

使用轮询的负载均衡方式,修改 nginx 的配置文件如下:

Nginx 配置实例-配置负载均衡

浏览器访问 http://192.168.25.120/edu/a.html,显示页面如下:

Nginx 配置实例-配置负载均衡

刷新,显示页面如下:

Nginx 配置实例-配置负载均衡

可以看到使用默认的轮询方式进行负载均衡,浏览器请求被平均分配给后端的 8081、8082 两个服务器进行处理。

3.2 负载均衡方式 2——weight

weight:权重,默认值 1,根据权重设置分配请求的几率,权重值越大,分配到的请求越多。

使用权重的负载均衡方式,修改 nginx 的配置文件如下:

Nginx 配置实例-配置负载均衡

浏览器访问 http://192.168.25.120/edu/a.html,显示页面如下:

Nginx 配置实例-配置负载均衡

再次刷新,显示页面如下:

Nginx 配置实例-配置负载均衡

刷新,显示页面如下:

Nginx 配置实例-配置负载均衡

可以看到使用 weight 的轮询方式进行负载均衡,浏览器发送 3 个请求,有 2 个被分配给 8082 的服务器(几率 2/3),有一个被分配给 8081 的服务器(几率 1/3)。

3.3 负载均衡方式 3——ip_hash

ip_hash:哈希,每个请求按访问 IP 的哈希结果进行分配,这样每个访客固定请求一个后端服务器,可以解决 session 的问题。

使用 ip_hash 的负载均衡方式,修改 nginx 的配置文件如下:

Nginx 配置实例-配置负载均衡

浏览器访问 http://192.168.25.120/edu/a.html,显示页面如下:

Nginx 配置实例-配置负载均衡

刷新,显示页面如下:

Nginx 配置实例-配置负载均衡

可以看到使用 ip_hash 的轮询方式进行负载均衡,无论刷新多少次,请求始终被分配给 8081 服务器。

3.4 负载均衡方式 4——fair

fair:根据页面大小、加载时间长短智能的进行负载均衡。

nginx-upstream-fair-master fair模块源码

参考资料

《尚硅谷Nginx教程》11-nginx配置实例(负载均衡)

nginx-upstream-fair-master fair模块源码