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模块源码

 
 
 

最新文章

  1. java学习第一天 回顾以前
  2. css 选择器优先级
  3. Python高效编程的19个技巧
  4. EL简介
  5. python常用内置函数
  6. PHP SQL注入的防范
  7. IndexReader和IndexWriter的生命周期
  8. 一步一步学python(四) - 字典
  9. SVN本地服务器的搭建
  10. js页面跳转常用的几种方式
  11. Boost库安装(实测vs2012)
  12. C语言之成绩转换
  13. maven_SSM集成的demo
  14. YOLO V3 错误总结
  15. 解决微信浏览器无法使用window.location.reload刷新页面
  16. MySQL插入更新_ON DUPLICATE KEY UPDATE
  17. [BJWC2011]元素
  18. Python Mock的入门(转)
  19. 【OpenCV学习笔记之一】图像加载,修改及保存
  20. centos配置ssh免密码登录

热门文章

  1. OOP-面向对象(二)
  2. MySQL8安装教程及问题解决
  3. 码农飞升记-00-Java发展历程
  4. HIT手 | 机械电气构造简述和微分运动学及静力学的简单推导
  5. 路由器逆向分析------firmware-mod-kit工具安装和使用说明
  6. The 2014 ACM-ICPC Asia Mudanjiang Regional First Round C
  7. RHCE7 认证之学习笔记
  8. C#-Socket(TCP)
  9. idea中properties配置文件没有代码提示及代码高亮问题解决方案
  10. 使用花生壳、瑞友天翼远程访问金蝶K3