【NGINX】负载均衡、动静分离、Keepalived高可用
负载均衡
http {
# 集群服务配置:
# 指令:
# down:手动将一个服务器标记为不可用。标记为不可用的服务器将不接收任何请求。
# backup:备份服务器,当主服务器不可用时,请求将被转发到备份服务器上。
# weight:设置服务器的权重,可以根据服务器的性能和负载情况分配不同的权重。
# max_fails:允许最大失败次数。默认值为 1。
# fail_timeout:被标记为不可用之后,需要经过多长时间才能再次尝试使用。
# 算法:
# 轮询 ==> 默认方式
# weight ==> 权重方式(处理不同服务器性能或资源配置不均)
# ip_hash ==> 依据ip分配方式(要保持特定用户会话粘性)
# least_conn ==> 依据最少连接方式(请求占用时间长,请求处理时间长短不一致)
# url_hash ==> 依据URL分配方式(缓存数据或需要保持特定URL会话)
# fair ==> 依据响应时间方式(响应时间)
upstream backend {
server 43.138.129.121:8001 down;
server 43.138.129.121:8002 max_fails=3 fail_timeout=15;
server 43.138.129.121:8003 weight=10;
server 43.138.129.121:8004 weight=5;
server 43.138.129.121:8005;
}
server {
listen 80;
server_name localhost bysj.club;
location / {
root /MINE/nginx_test/;
index index.html;
# proxy_pass http://backend;
}
# 注意:如果配置了/api,那么后端需要有跟/api路径一样的请求接口;
# 理解:
# 1:前端定义了需要负载均衡的接口路径,以/api路径开头的所有后端接口;
# 2:在nginx里面配置了location的负载均衡 ==> location /api
# 3:配置后端分发服务 upstream backend
location /api {
proxy_pass http://backend;
}
}
}
动静分离(动态请求和静态请求分别交给不同的服务器处理)
# 1:配置静态文件服务器:创建一个用于存储静态文件的目录,并将其配置为Nginx的静态文件服务器。这个配置将使Nginx监听80端口,并将静态文件存储在/www/static/dist/build/h5目录中。对于所有请求,Nginx将首先尝试在静态文件目录中查找匹配的文件。
server {
listen 80;
server_name example.com;
index index.html;
root /www/static/dist/build/h5; # 前端静态文件目录
# 如果属于框架后台的静态资源文件,可以收集到一个目录后,进行静态资源指定路径访问
location /static {
alias /www/django_admin/static
}
# 2:配置动态请求转发,将动态请求转发给后端的应用服务器(如PHP、Python或Java应用服务器)。可以使用proxy_pass指令将动态请求转发到后端服务器,或者配置后端可能需要的静态文件访问
location / {
# 反向代理到后端
# proxy_pass http://backend_server;
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 可选的额外配置
proxy_read_timeout 120s;
proxy_connect_timeout 120s;
proxy_redirect off;
}
}
Keepalived(nginx高可用性和故障转移)
Keepalived通常用于构建高可用的网络服务架构,特别是在负载均衡器和集群环境中。它可以确保在主服务器故障时,备用服务器能够接管VIP并提供服务,从而实现故障转移和保证系统的持续可用性。
Keepalived工作时的基本原理如下:
Keepalived在多个服务器上运行,每个服务器都有一个Keepalived进程。
这些Keepalived进程通过UDP或组播来进行通信,以发现其他服务器的存在并协调状态。
在服务器集群中选择其中一个服务器作为主服务器,也称为Master节点。
主服务器通过对VIP进行健康检查来确保服务是否可用,例如通过发送心跳检查或对特定端口的连接检查。
如果主服务器检测到故障或服务不可用,它会将VIP指派给备用服务器中的一个,也称为Backup节点。
备用服务器接管VIP后,它开始处理来自客户端的请求,替代了主服务器的功能。
一旦主服务器恢复正常,它会重新获得VIP的所有权,成为主节点,并恢复其原始功能。
Keepalived还提供了其他功能,如基于权重的负载均衡和故障检测。它是一个灵活且可靠的工具,可用于确保高可用性和故障转移,提供持续的服务和可靠性。
Python全栈(后端、数据分析、脚本、爬虫、EXE客户端) / 前端(WEB,移动,H5) / Linux / SpringBoot / 机器学习