负载均衡是用来调度节点的,所以只需要在 搭载 负载均衡的服务器上,设置调转的 .conf 文件,指向相关的服务器即可,可用单台先测试,但是既然是调度,肯定不能是1台服务器,
负载均衡调动单台的.conf 配置
-
负载均衡调动的节点请求中不要有多个相同端口的.conf文件,避免冲突。影响实验。
-
记录真实ip需要proxy_set_header Connection “”; 和proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;一起设置。
server{
linten 80; 开启80监听端口
server_name web.oldxu.com 域名
location / {
proxy_pass http://10.0.0.7:8080;
通过设置ip和端口来进行连接,实现负载均衡的调度
proxy_http_version 1.1;
设置负载均衡使用的 http协议版本
proxy_set_header Connection "";
将来访的真实ip人性化的方式存储在/var/log/nginx/acesss.log
proxy_set_header Host $http_host;
设置连接的域名的头部,这样可以避免因为端口相同造成请求结果混乱的情况
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
记录真实的请求ip,因为代理端只做转发,所以节点服务端记录的应该是真实的请求ip,而不是代理端的。
}
}
-
其他相关的一些设置:
连接相关:
Syntax: proxy_connect_timeout time; 代理端与后端请求连接的超时时间
Default: proxy_connect_timeout 60s; 默认是60秒
Context: http, server, location
Syntax: proxy_read_timeout time; 代理端等待后端响应的超时时间
Default: proxy_read_timeout 60s; 默认60s
Context: http, server, location
Syntax: proxy_send_timeout time; 后端将数据传送给代理端的超时时间
Default: proxy_send_timeout 60s; 默认60秒
Context: http, server, location
缓存相关:开启缓存可以加速响应
Syntax: proxy_buffering on | off; 是否开始 hui缓存区
Default: proxy_buffering on; 默认是开启
开启之后会将数据以头部和数据的方式进行缓存
proxy_buffer_size(Headers) 64k 就是可以缓存64k
proxy_buffers(data) 4 64k 就是可以缓存4x64=256k
proxy_temp_path 路径
proxy_max_temp_file_size 目录缓冲的总大小
proxy_temp_file_write_size 单词写入的缓存大小
== 该配置写在proxy_buffer_size下方如果设置好头部的缓存大小一般可以不用设置。==
最后,因为要调用的设置过多,所以不可能每写一个配置就重写一遍,所以,我们可以用将配置全部写入一个文件,然后用include统一调用,
vim /etc/nginx/proxy_params
proxy_http_version 1.1;
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;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 64k;
proxy_buffers 4 64k;
location / {
proxy_pass http://127.0.0.1:8080;
include proxy_params;
}
负载均衡如何合理调动多台服务器节点
简单到不能再简单!再http层写入
upstream web_cluster {
# web_cluster 是集群的名字
server 172.16.1.7:80;
server 172.16.1.8:80;
}
server {
listen 80;
server_name web.oldxu.com;
location / {
proxy_pass http://web_cluster;
# http://指定负载均衡连接的节点
include proxy_params;
}
}
~
调度算法
调度算法只能存在一个
-
轮询调度,就是轮着来
-
加权轮询,按分配的权重来
weight -
ip_hash
将请求分配给特定的一台服务器处理,但是会造成单台服务器压力过大,不实用。
写在upstream web_cluster { 下面一行即可 -
一致性hash调度
比ip hash 更智能。不需要大量计算,如果有服务器故障,会自动顺延到下一个服务器。
写在upstream web_cluster { 下面一行即可
hash $remote_addr(来源ip的变量) consistent;
确定来源的变量:less/etc/nginx/nginx.conf
- url_hash
缓存调度,需要一台缓存服务器,负载均衡使用url_hash 请求资源,会将资源在缓存服务器缓存一份,后续,如果再有请求,会自动将请求连接 有缓存的服务器,加快响应速度。 - least_conn
哪台服务器的请求少,就将请求调度到哪台
通过负载均衡设置后端服务器的状态
max_fails和fail_timeout 要结合使用
例:
max_fails=2 fail_tinmeout=5s
与服务器尝试连接失败2次后,认为服务器不可用,然后每5s重新连接一次,如果达到max_fail设定的次数依旧不可用,则判定服务不可用。