nginx负载均衡4种调度算法测试实例,nginx故障问题实例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dfBeautifulLive/article/details/85231515

nginx负载均衡一般在不同的服务器,那条件有限,就用不同的端口代替不同的服务,后台启动4个不同端口的服务,然后nginx配置如下:


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #打开注释
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"'
		       #添加一条我们的需要的日志格式,以便测试负载均衡
		      '$upstream_addr "$upstream_status" ${upstream_response_time}';

    access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    #后端服务器池
	upstream babytun{
	   #通过不同的端口访问
	   server 192.168.0.101:8001;
	   server 192.168.0.101:8002;
	   server 192.168.0.101:8003;
	   server 192.168.0.101:8004;
	}
	
	server{
	   #nginx通过80端口提供服务
	   listen 80;
	   #使用babytun服务器池进行后端处理
	   location /{
	     proxy_pass http://babytun;
		 proxy_set_header Host $host;
		 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	   }
	}
}

访问配置好的路径,没有添加任何策略的话,默认就是轮询,就是从8001至8004,再继续从从8001至8004,只要继续访问就反复这样走,可以参考日志

接下来就使用最少连接策略,nginx本身服务有一个计数器,用来计算哪一个服务干活最少,然后让干活最少的来接受请求

暂时在一台服务器测试不出来,还是会像轮询一样访问,但是集群并发情况就会暗自最小连接测试,我们来看一下最少连接策略怎么配置

upstream babytun{
	   #通过不同的端口访问
           #最少连接策略
	   least_conn;
	   server 192.168.0.101:8001;
	   server 192.168.0.101:8002;
	   server 192.168.0.101:8003;
	   server 192.168.0.101:8004;
	}
	
	server{
	   #nginx通过80端口提供服务
	   listen 80;
	   #使用babytun服务器池进行后端处理
	   location /{
	     proxy_pass http://babytun;
		 proxy_set_header Host $host;
		 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	   }
	}

ip hash -ip绑定策略 :记录客户端的ip,然后每一次相同的ip都进某一个相同ip请求的后端服务器(一般用在低并发,重业务的系统情况下,高并发不推荐使用)下面分享一下ip hash的配置

upstream babytun{
	   #通过不同的端口访问
	   ip_hash;#ip hash 模式
	   server 192.168.0.101:8001;
	   server 192.168.0.101:8002;
	   server 192.168.0.101:8003;
	   server 192.168.0.101:8004;
	}

看一下日志记录,我们本身就是一个服务器,所以日志一直都是访问某一个端口就一直访问啦

Weighted-权重策略:权重就是一个服务器处理请求的比例,有的八核有的2核等等,当权重值越好,那就会让那个更好的服务器多处理 ,下面看下配置weight就是权重策略的配置

upstream babytun{
	   #通过不同的端口访问
	   server 192.168.0.101:8001 weight=5;#8001的端口访问的次数更多
	   server 192.168.0.101:8002 weight=2;
	   server 192.168.0.101:8003 weight=1;
	   server 192.168.0.101:8004 weight=2;
	}

根据日志查看,访问8001的有9次,8002的有4次,8003有1次,8004有4次,这个就是按权位比重来测试的访问不同的端口情况

 nginx故障发现: nginx心跳检查机制 后端服务器可能有某一个服务器挂掉了,或者关闭了,那么就需要一些操作,需要把挂掉的服务器剔除掉 在nginx中,max_fails:代表最大失败次数,建议实际操作不要超过3次 max-timeout:代表单次连接超时时间,建议实际操作中连接超时不超过60秒 然后每次访问,访问到挂掉的端口,就一直请求,直到超时时间到了,还没有请求成功就可以转发另一个后端服务器就可以了,nginx故障机制的配置文件如下

upstream babytun{
	   #通过不同的端口访问
	   server 192.168.0.101:8001;
	   #最多失败1次 连接2秒就要切换其他服务器
	   server 192.168.0.101:8002 max_fails=1 fail_timeout=2s;
	   server 192.168.0.101:8003;
	   server 192.168.0.101:8004;
	}

为了检验,把8002的端口关闭,然后访问端口,再看下日志

 在nginx故障机制很重要,为了防止访问某个服务器下的接口会出现宕机情况,一般采取必然的手段,今天就说这些

猜你喜欢

转载自blog.csdn.net/dfBeautifulLive/article/details/85231515