WEB集群-代理与负载均衡

综合架构-技术点串线:www.processon.com/view/link/6...

访问密码:oldboylidao996

Ngx处理用户请求流程:www.processon.com/view/link/6...

LNMP架构处理流程:www.processon.com/view/link/6...

一、LNMP排错

排除法:

Linux:防火墙,selinux.

Nginx:检查配置,处理流程检查. 测试ngx.

PHP:处理动态请求. 测试:ngx+php

MySQL: 测试php+数据库

背景:ngx部署wordpress(php)站点报错了,说说排查流程.

1、检查ngx是否正常运行.

perl 复制代码
检查端口
ss -lntup | grep nginx
检查进程
ps -ef | grep nginx
检查配置
nginx -t
站点目录下创建test.html写入内容,使用curl访问
curl IP:/80

2、ngx是否把动态页面转发php,php是否解析.

php 复制代码
站点目录下
testinfo.php
<?php
phpinfo();
?>
测试完成,务必删除,否则网站信息泄漏.

3、检查php连接数据库是否正常(测试用户名和密码)

ini 复制代码
#推荐方式
mysql -u用户 -p密码 -h 数据库的ip
show databases;

二、复杂均衡和代理

1、代理概述

  • 代理: 外卖/中介/中间商. 用户无法直接做某些事情,通过中介进行处理.这个中介就是代理.
  • 用户 代理 WEB节点,后面只有一个节点,一般使用的是ngx代理功能即可,后面如果是集群需要使用ngx负载均衡功能.

2、代理分类

代理分类 方向 应用
正向代理 用户(服务器)->代理->外部(某网站) 服务器通过代理实现共享上网/访问某个网站
反向代理 用户(app/浏览器)->代理->网站服务器(WEB) 给网站设置个统一入口,后面是网站集群(可以使用负载均衡功能)

1)正向代理

2)反向代理

3、案例:反向代理案例

1)后端web服务器

1、编辑ngx配置文件

ini 复制代码
[root@backup conf.d]# cat /etc/nginx/conf.d/shishu.com.conf 
server{
 listen 80;
 server_name shishu.com;
 root /app/code/shishu;
 location / {
 index index.html; 
}
}

2、检验语法nginx -t

3、创建对应目录和文件,并且更改所有者

bash 复制代码
mkdir -p /app/code/shishu
touch index.html
echo "This is the interface after redirection" > /app/code/shishu/index.html 
chown -R nginx.nginx /app/code/shishu
​
mkdir -p /app/code/html
touch index.html
echo "index.html" > /app/code/html/index.html 
chown -R nginx.nginx /app/code/html

4、重启加载ngx服务

systemctl restart nginx

5、本地测试

ruby 复制代码
curl -v -H Host:shishu.com 10.0.0.13

2)前端负载均衡服务器

1、编辑ngx配置文件

ini 复制代码
[root@clb conf.d]# cat /etc/nginx/conf.d/shishu.com.conf 
server{
 listen 80;
 server_name shishu.com;
 root /app/code/shishu;
 location / {
 proxy_pass http://10.0.0.13:80;
 proxy_set_header Host $http_host; 
}
}

2、检验语法nginx -t

3、重启加载ngx服务

systemctl restart nginx

4、测试代理

ruby 复制代码
curl -v -H Host:shishu.com 10.0.0.12

3)抓包查看

可以看出进行的两次跳转

4、web有多个虚拟主机故障案例

故障现象:

  • web服务器有多个虚拟主机的时候,通过代理访问web出现异常.访问的不是我们想要的虚拟主机·

原因:

  • 代理向后端web节点发出请求的时候,请求头中的Host,被修改成ip地址形式了
  • 相当于代理通过ip地址访问web服务器,只显示默认虚拟主机

解决:

  • 方向:修改代理->web的请求头
  • proxy_set_header Host $http_host;

解决的原理:

  • 代理->web发出请求的时候,修改请求头中的Host部分,设置为用户请求的域名

模拟:

注释proxy_set_header Host $http_host;,模拟访问到web服务器的默认html。

proxy ngx模块

proxy_pass :传球,请求传递给指定的节点

proxy_set_header : 修改请求头,代理->后端节点

5、web记录真实IP

现象:在代理服务器01是客户端,在web服务器上lb是客户端。

在代理服务器增加改ngx的location , proxy_set_header X-Forwarded-For $remote_addr; 。最后在web服务器上记录了真实的ip地址。

6、负载均衡

  • upstream模块的upstream指令
  • 创建1个池塘(分组),存放主机
  • upstream创建池塘,proxy_pass数据丢向池塘

对LB配置文件进行更改

ini 复制代码
[root@clb conf.d]# cat /etc/nginx/conf.d/shishu.com.conf 
upstream cfg_pools { 
 server 10.0.0.7:80;
 server 10.0.0.8:80;
 }
​
server{
 listen 80;
 server_name shishu.com;
 root /app/code/shishu;
 location / {
 proxy_pass http://cfg_pools;
 proxy_set_header Host $http_host; 
 proxy_set_header X-Forwarded-For $remote_addr;
}
}

遗留:day47 and 48

总的来说,反向代理主要关注于隐藏服务器的内部结构、提供安全性和缓存等功能,而负载均衡则主要关注于平衡服务器的负载、提高系统的性能和可用性。虽然它们在某些方面有重叠,但是它们的主要功能和使用场景是不同的。

相关推荐
张3蜂18 分钟前
Ubuntu系统安装mysql、nginx、.netcore
mysql·nginx·ubuntu
ps酷教程4 小时前
nginx架构篇(三)
nginx
man20175 小时前
LNMP环境搭建、部署的整体流程和详细步骤
linux·mysql·nginx·php
谭舜心6 小时前
怎么让Nginx可以访问某一IP的每个后台controller接口
网络·tcp/ip·nginx
先生沉默先6 小时前
Unity webgl跨域问题 unity使用nginx设置跨域 ,修改请求头
运维·nginx·webgl
码农0006 小时前
nginx学习笔记
笔记·学习·nginx
茶卡盐佑星_9 小时前
nginx的作用是什么
运维·nginx
苹果醋39 小时前
缓存中间件Redis进阶之路二(快速安装Redis)
运维·nginx
qq_2320455721 小时前
解决nginx代理SSE接口的响应没有流式返回
nginx·sse·proxy_buffering·流式
Xwzzz_1 天前
Nginx配置负载均衡
java·nginx·负载均衡