• Linux服务:Nginx反向代理与负载均衡


    目录

    1、什么是反向代理?

    2、实现反向代理实验

    ①实验拓扑

    ②实验目的:

    ③实验过程

    二、反向代理负载均衡

    1、反向代理负载均衡调度算法

    ①轮询算法

    ②加权轮询算法

    ③最小连接算法

    ④ip url哈希算法

    ⑤响应时间fair算法

    2、实现反向代理负载均衡实验

    ①实验拓扑

    ②实验目的

    ③实验过程

    三、动静分离负载均衡

    ①第一步关闭防火墙,安装额外源

    ②第二步将jdk压缩包与tomcat压缩包复制到34

    ③第三步解压安装包以及配置环境

    ④第四步:执行脚本,查看java版本,然后解压tomcat

    第五步:建立tomcat用户,并修改权限

    第六步:编写自启动文件

    第七步:打开tomcat,并查看状态​编辑

    第八步:pc1关闭防火墙,安装额外源​编辑

    第九步:进入pc1,打开nginx配置文件进行修改,将pc3pc4进行反向代理放在tomcat组里,访问jsp结尾的就跳转到tomcat。

    第十步:输入curl 192.168.170.111/test.jsp来检查是否搭建成功。


    1、什么是反向代理?

    代理分为两类,正向代理和反向代理。

    ①正向代理:帮助用户访问服务器,缓存服务器内容。

    ②反向代理:代理服务器处理用户的请求,决定转发请求给谁处理负载均衡的作用。

    2、实现反向代理实验

    nginx可以代理七层跟四层,代理七层代理比四层看到的东西功能强大,可以看到真实数据。

    使用模块:proxy_pass 反向代理的服务器地址或域名;

    ①实验拓扑

    ②实验目的:

    由pc2代理服务器,代理服务端pc3处理用户pc1的请求

    ③实验过程
    1. ①首先准备三台虚拟机且关闭防火墙和selinux,其中pc2和pc3安装nginx。
    2. pc2、pc3执行:
    3. yum install epel-release -y
    4. yum install nginx -y
    5. #安装nginx
    6. ②pc2和pc3上创建子配置文件test.conf
    7. pc2、pc3执行:
    8. cd /etc/nginx/conf.d/
    9. touch test.conf
    10. #进入子配置文件目录创建子配置文件
    11. ③服务端pc3子配置文件内容
    12. server {
    13. root /etc/nginx/html;
    14. #指定虚拟主机根目录
    15. }
    16. ④创建服务端pc3虚拟主机的根目录,并写默认内容为this is pc3index.html中
    17. mkdir -p /etc/nginx/html;
    18. echo "this is pc3">/etc/nginx/html/index.html
    19. #递归创建文件夹并设置默认主页内容
    20. ⑤反向代理服务器pc2的配置文件内容:
    21. server {
    22. listen 80;
    23. #监听所有80端口
    24. server_name www.lhj.com;
    25. #创建虚拟主机www.lhj.com
    26. location /{
    27. proxy_pass http://192.168.30.13
    28. #访问反代的虚拟主机www.lhj.com则由192.168.30.13处理请求
    29. }
    30. }
    31. ⑥代理服务和服务端开启nginx服务,并在pc1客户端添加www.lhj.com的对应hosts文件进行测试
    32. pc2、pc3执行:
    33. systemctl start nginx
    34. pc1执行:
    35. sed -i '1a\192.168.30.12 www.lhj.com' /etc/hosts
    36. #在/etc/hosts文件的第一行添加192.168.30.12 www.lhj.com内容
    37. curl www.lhj.com
    38. #访问反向代理服务器
    39. 得到内容
    40. this is pc3

    二、反向代理负载均衡

    nginx反向代理负载均衡中用的是upstream模块,应用于http模块中,目的为所有server模块提供服务,默认算法为轮询。

    使用格式

    upstream name(反向代理名称){

    }

    其他配置:①max_conns=数字;设置最大活动连接数,默认为0表示无限制

    ②max_fails=数字;后端服务器下载条件,对本次调度选择的后端服务器进行连续检查,如果都失败标记不可用,默认1次。

    ③fail_timeout=time;后的服务器上行时间,坏掉后修复需要检查多久才能上线使用,默认检查10s。

    ④backup 设置为备份服务器,所有服务器不可用时使用此服务,注意不能指定自己;

    ⑤down 指定此服务器down状态,无论本身是什么状态;

    1、反向代理负载均衡调度算法

    ①轮询算法

    默认算法是轮询算法即反向代理服务器处理用户请求时,每个后端服务器都轮流给。

    upstream lhj{ server http://192.168.170.111;

                           server http://192.168.170.114

    }

    ②加权轮询算法

    在默认轮询的基础上增加权重,weight=number。如果后端有2个服务器其中一个配置权重为weight=3另外一个不配置默认是1,则有用户访问时分配给给有权重的服务器和不配置权重的服务器的比例为3:1。

    upstream lhj{ server http://192.168.170.111      weight=3;

                          server  http://192.168.170.114;

    }

    ③最小连接算法

    按照nginx反向代理服务器和后端服务器的连接数分配请求,连接越少的分配处理请求优先级越高。例如若最小连接数(least_conn;)是设置是3,后端服务器1有2个请求在处理,而后端服务器2只有一个请求在处理则新请求交给后端服务器2。

    upstream lhj{ least_conn;

                          server   htttp://192.168.170.111;

                          server http://192.168.170.114;

    }

    ④ip url哈希算法

    每个请求按访问ip或者url的hash结果分配,这样每个访客固定访问一个后端服务器,不需要知道是如何计算的,只要了解会固定访问一个后端服务器即可。

    ⑤响应时间fair算法

    需要解读nginx第三方模块ngx_http_upstream_fair_module实现,配置时max_fails=number为后端服务器配置,默认单位为秒,按照响应时间来处理请求,响应时间越短越优先分配。

    2、实现反向代理负载均衡实验

    使用变量:$remote_root

    ①实验拓扑

    ②实验目的

    用户pc1访问代理服务的www.lhj.com虚拟主机域名时,若由服务端pc3服务器处理则返回this is pc3若由服务器pc4服务器处理则返回this is pc4用nginx反向代理实现负载均衡。

    ③实验过程
    1. ①首先准备四台虚拟机且关闭防火墙和selinux,其中pc2、pc3、pc4安装nginx。
    2. pc2、pc3、pc4执行:
    3. yum install epel-release -y
    4. yum install nginx -y
    5. #安装nginx
    6. ②pc2、pc3、pc4上创建子配置文件test.conf
    7. pc2、pc3、pc4执行:
    8. cd /etc/nginx/conf.d/
    9. touch test.conf
    10. #进入子配置文件目录创建子配置文件
    11. ③服务端pc3子配置文件内容
    12. server {
    13. root /etc/nginx/html;
    14. #指定虚拟主机根目录
    15. }
    16. ④创建服务端pc3虚拟主机的根目录,并写默认内容为this is pc3index.html中
    17. mkdir -p /etc/nginx/html;
    18. echo "this is pc3">/etc/nginx/html/index.html
    19. #递归创建文件夹并设置默认主页内容
    20. ⑤服务端pc4子配置文件内容
    21. server {
    22. root /etc/nginx/html;
    23. #指定虚拟主机根目录
    24. }
    25. ⑥服务端pc4子配置文件内容
    26. server {
    27. root /etc/nginx/html;
    28. #指定虚拟主机根目录
    29. }
    30. ⑦创建服务端pc4虚拟主机的根目录,并写默认内容为this is pc4index.html中
    31. mkdir -p /etc/nginx/html;
    32. echo "this is pc4">/etc/nginx/html/index.html
    33. ⑧反向代理服务器pc2的主配置文件和子配置文件修改:
    34. 主配置文件内容修改:
    35. vim /etc/nginx/nginx.conf
    36. #打开主配置文件,在主配置文件的http模块中添加内容如下:
    37. upstream lhj {
    38. #创建名字为lhj的方向代理负载均衡
    39. server 192.168.30.13;
    40. #服务端pc3地址
    41. server 192.168.30.14;
    42. #服务端pc4地址
    43. }
    44. #子配置文件test.conf内容:
    45. server {
    46. listen 80;
    47. #监听所有80端口
    48. server_name www.lhj.com;
    49. #创建虚拟主机www.lhj.com
    50. location /{
    51. proxy_pass http://lhj;
    52. #访问反代的虚拟主机www.lhj.com则由反向代理负载均衡lhj来处理请求
    53. }
    54. }
    55. ⑨代理服务和服务端开启nginx服务,并在pc1客户端添加www.lhj.com的对应hosts文件进行测试
    56. pc2、pc3、pc4执行:
    57. systemctl start nginx
    58. pc1执行:
    59. sed -i '1a\192.168.30.12 www.lhj.com' /etc/hosts
    60. #在/etc/hosts文件的第一行添加192.168.30.12 www.lhj.com内容
    61. curl www.lhj.com
    62. #多次使用访问反向代理服务器
    63. 得到内容
    64. this is pc3
    65. this is pc4的比例大概为1:1

    三、动静分离负载均衡

    ①第一步关闭防火墙,安装额外源

    pc1 pc3 pc4

    ②第二步将jdk压缩包与tomcat压缩包复制到34

    ③第三步解压安装包以及配置环境

    ④第四步:执行脚本,查看java版本,然后解压tomcat

    第五步:建立tomcat用户,并修改权限

    第六步:编写自启动文件

    第七步:打开tomcat,并查看状态

    第八步:pc1关闭防火墙,安装额外源

    第九步:进入pc1,打开nginx配置文件进行修改,将pc3pc4进行反向代理放在tomcat组里,访问jsp结尾的就跳转到tomcat。

    第十步:输入curl 192.168.170.111/test.jsp来检查是否搭建成功。

  • 相关阅读:
    挂钩函数——让接口接收函数而不是类的实例
    Spring Boot中的异步编程:解决的问题与应用场景
    hithesis部署和VSCode远程编辑tex文件
    react库的基础学习
    Whisper的应用
    SPC 统计过程控制
    windows aseprite编译指南(白嫖)
    跟着cherno手搓游戏引擎【26】Profile和Profile网页可视化
    Java面向对象高级
    mysql语句locate与substring联合使用方法
  • 原文地址:https://blog.csdn.net/rmh0713/article/details/136321129