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

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

相关推荐
liucan20124 小时前
nginx服务器实现上传文件功能_使用nginx-upload-module模块
服务器·前端·nginx
摇滚侠7 小时前
Windows 版 Nginx 关闭
运维·windows·nginx
Meepo_haha11 小时前
Nginx 反向代理配置
运维·nginx
星辰徐哥13 小时前
C语言Web开发:CGI、FastCGI、Nginx深度解析
c语言·前端·nginx
sunwenjian88614 小时前
httpslocalhostindex 配置的nginx,一刷新就报404了
运维·nginx
bearpping15 小时前
nginx 代理 redis
运维·redis·nginx
ywf121515 小时前
Nginx 缓存清理
运维·nginx·缓存
dustcell.15 小时前
企业级高可用电商平台实战项目设计
运维·redis·nginx·docker·web·lvs·haproxy
chehaoman1 天前
Failed to restart nginx.service Unit nginx.service not found
运维·nginx
今晚务必早点睡1 天前
Nginx 从入门到精通:一篇讲透原理、功能、配置与实战场景
运维·nginx·负载均衡