一.负载均衡
简单的来说。可以减少服务器的压力,将原本一台服务器所要承受的访问量分给了多台,并提高了项目的可用性,当一台服务器挂掉的时候也不会导致整个项目瘫痪。
配置语法:
二.nginx实现负载均衡
nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至 tomcat服务器。
nginx负载均衡服务器:192.168.14.129
tomcat1服务器:192.168.14.131
tomcat2服务器:192.168.14.134
我们将两个相同的项目分别放到了131与134服务器中,当我们通过129负载访问项目接口时,nginx会自动将请求轮流分配给131与134来执行。
2.1配置:
编辑nginx.conf配置文件 在http里添加以下配置
upstream mytomcat{
server 192.168.14.131:8080;
server 192.168.14.134:8080;
}
在server里添加以下配置
server {
listen 80;
server_name 192.168.14.129; //所有请求都到这里去找分配
#charset koi8-r;
access_log /var/log/nginx/test_proxy.access.log main;
resolver 8.8.8.8;
location / {
proxy_pass http://mytomcat; //使用mytomcat分配规则,即nginx.conf添加的upstream节点
#include proxy_params;
proxy_redirect default; //下面为代理配置
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;
}
2.2 server参数解释:
- down 当前的server暂时不参与负载均衡
- backup 预留的备份服务器
- max_fails 允许请求失败的次数
- fail_ timeout 经过max_fails失败后,服务暂停的时间
- max_conns 限制最大的接收的连接数
- weight 默认为1.weight越大,负载的权重就越大。
2.3 nginx轮询策略
- 轮询 按时间顺序逐一分配到不同的后端服务器
- 加权轮询 weight值越大,分配到的访问几率越高
- ip_ hash 每个请求按访问ip的hash结果分配,这样来自同一个ip的固定访问一个后端服务器
- url_ hash 按照访问的URL的hash结果来分配请求,是每个URL定向到同一个后端服务器least_conn最少链接数,哪个机器连接数少就分发
- 最少hash关键字值 hash自定义key
例:
upstream mytomcat{
hash $request_utl; //url_hash
server 192.168.14.131:8080;
server 192.168.14.134:8080;
}