Linux中web集群-nginx负载均衡及案例

概述

代理:外卖,中介,中间商,用户无法直接做事情,通过中介进行处理

用户--》代理--》节点,后面只有一个节点,一般使用的是nginx代理功能即可,如果是集群就需要使用nginx负载均衡

代理分类

本质:根据用户位置(定是否那个为正反向代理)

正向代理:用户(服务器)-》代理-》外部(网站)服务器通过代理实现共享上网/某一个网站

反向代理:用户(app/浏览器)-》代理-》网站服务器(WEB) 给网站设置一个统一的入口,可以进行使用负载均衡的功能进行使用

环境概述

代理:web lb01 10.0.0.5/172.16.1.5

web web01 10.0.0.7/172.16.1.7

域名proc.wulinlinux.cn

站点目录:/app/code/proxy/index.html

建议开启db01和nfs01

bash 复制代码
[root@web01 ~]#vim /etc/nginx/conf.d/proxy.wulinlinux.cn.conf

检查语法:

root@web01 \~#nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

systemctl reload nginx

root@web01 \~#mkdir -p /app/code/proxy/

root@web01 \~#echo proxy.wulinlinux.cn >/app/code/proxy/index.html

测试:

bash 复制代码
[root@lb01 ~]#vim /etc/nginx/conf.d/proxy.wulinlinux.cn.conf



测试负载:

保存



web集群-nginx-负载均衡

案例:部署nginxconf站点并进行访问

lb01 192.168.65.5/172.16.1.5
环境要求 说明
web01 192.168.65.7/172.16.1.7
web02 192.168.65.8/172.16.1.8
域名:conf.wulinlinux.cn
站点目录:/app/code/cfg/

web服务器准备

go 复制代码
[root@web01 ~]#vim /etc/nginx/conf.d/cfg.wulinlinux.cn.conf

创建站点目录:

bash 复制代码
[root@web01 ~]#mkdir -p /app/code/cfg/

传输部署网站的代码

解压传输的部署网站代码(解压进行查看是否有嵌套的代码文件目录)

解压到站点目录

bash 复制代码
[root@web01 ~]#unzip  star-battle-master.zip -d /app/code/cfg/

把下面所有的东西移动到相对应的站点目录里面

bash#检查语法并且进行重启nginx服务 复制代码
[root@web01 /app/code/cfg]#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 /app/code/cfg]#systemctl reload nginx
在这里插入代码片

打开web02发现没有nginx等源

进入web01服务器进行传输到web02服务器上


root@web01 /etc/nginx/conf.d#cd /app/

root@web01 /app#scp -r /app/ web02:/

ssh: connect to host web02 port 22: Connection timed out

lost connection

root@web01 /app#scp -r /app/ 192.168.65.8:/

root@web02 \~#systemctl enable nginx

Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

root@web02 \~#systemctl start nginx


负载均衡配置

  • load balance(lb)
  • 创建池塘进行分组,存放主机
  • upstream 与server是并列的
  • 名字要进行保持一致
  • upstream创建池塘,proxy_pass将数据传给池塘
bash 复制代码
[root@lb01 /etc/nginx/conf.d]#cat cfg.wulinlinux.cn 
upstream cfg_pols {
   server 192.168.65.7:80;
   server 192.168.65.8:80;
}
server {
   listen 80;
   server_name cfg.wulinlinux.cn;

   error_blog /var/log/nginx/cfg-error.blog notice;
   access_blog /var/log/nginx/cfg-access.log main;

   location / {
     # proxy_pass http://?????;
      proxy_pass http://cfg_pols;
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-Ip $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }
}

root@lb01 /etc/nginx/conf.d#curl -H Host:cfg.wulinlinux.cn http://192.168.65.5/

会发现这里返回的结果是web01与web02服务器交换进行:(负载均衡---平均分配)

总结

  • upstream模块的upstream指令;

  • root@lb01 /etc/nginx/conf.d#cat cfg.wulinlinux.cn

    upstream cfg_pols {

    server 192.168.65.7:80;

    server 192.168.65.8:80;

    }

    server {

    listen 80;

    server_name cfg.wulinlinux.cn;

    error_blog /var/log/nginx/cfg-error.blog notice;

    access_blog /var/log/nginx/cfg-access.log main;

    location / {

    proxy_pass http://???;

    ​ proxy_pass http://cfg_pols;

    ​ proxy_set_header Host $http_host;

    ​ proxy_set_header X-Real-Ip $remote_addr;

    ​ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

    }

  • lnmp深入原理及排查故障

  • 1.代理基础功能把请求通过代理转发到某一台web节点上

  • 2.转发的时候记录真实的ip

  • 3.负载均衡基本使用

相关推荐
kebidaixu44 分钟前
BCU 平台 RS485 驱动适配:从 THVD1406 到 ISO3082
linux
回忆2012初秋2 小时前
【Nginx】原理、配置与运维实战(2)
运维·nginx·策略模式
Cutecat_2 小时前
视频字幕处理工具横向:提取模式 vs 编辑模式,该如何选择
android·前端·ios·语音识别
qq_422152572 小时前
PDF 加水印工具怎么选?2026 年文档版权保护方案对比
前端·pdf·github
kyriewen3 小时前
手写 Promise.all、race、any:不到 30 行代码,解决并发异步的所有姿势
前端·javascript·面试
谢平康3 小时前
解决用 rm 报bash: /usr/bin/rm: Argument list too long错
linux·运维·运维开发
brucelee1863 小时前
OpenClaw 浏览器控制(Chrome MCP)完整教程
前端·chrome
ct9784 小时前
React 状态管理方案深度对比
开发语言·前端·react
胡志辉的博客4 小时前
深入浅出理解浏览器事件循环:从一道输出题讲到 Chrome 源码
前端·javascript·chrome·chromium·event loop
代码不加糖4 小时前
js中不会冒泡的事件有哪些?
前端·javascript·vue.js