nginx-负载均衡

Posted huxl1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx-负载均衡相关的知识,希望对你有一定的参考价值。

基于七层的负载

负载均衡:把同一类的请求通过调度器按一定的调度算法分发到后端服务器上

调度器有:

硬件: bigip    A10   netscaler

软件:

四层:lvs   nginx (基于stream module)  haproxy (基于 tcp  mode)

七层:http  ats  nginx(基于 upstream  module)  haproxy (基于 http  mode

 

2负载均衡存在一个问题就是后端服务器之间会话问题

 

      1 会话绑定  持久连接

 

      2 会话同步

 

         可以在后端服务器做会话集群,做服务器之间会话信息同步可以通过组播方式传输

 

组播:是指向一个组播域的主机通信按照组播地址来定义的,组播地址相同的处于同一个组播内。

 

      3 在后端用一个专门的存储来存放会话信息

 

           Memcached:内存系统但一旦当机 信息会丢失

 

          Redis: 是可以持久保存的

 

Nginx的负载均衡:

 

通过upstream模块来定义  

 

1 把后端服务器相同应用放在一个组中,并指明这个组在接受到用户请求时则么被调用出来响应,

 

基于 ngx_http_upstream_module;  指令  upstream

 

rs

 

配置ip地址 rs1  192.168.10.2

 

     Rs2  192.168.10.3

 

     Vip  192.168.220.130

 

    Dip  192.169.10.1

 

   安装http应用  

 

启动http

 

Vim  /var/www/html/index.html

nginx

定义

upstream websvrs {

        server 192.168.10.2:80;

        server 192.168.10.3:80;

    }

      调用组

location / {

 

                proxy_pass http://websvrs;

        }

 访问 curl http://192.168.220.130

Server  192.168.10.2:80  weight=2;  加权轮询  默认是轮询的

访问:for i in {1..10}do curl http://192.168.220.130 done

Max_conns=number ; 一个服务器的最大并发连接数

Fail_timeout=time;   多长时间内做一次健康检查

Max_fails=number; 最多失败几次  默认1

Nginx 默认自带有状况健康检查

 server 127.0.0.1:80 backup;  在后端服务器全部当机才会响应

server 192.168.10.2:80 down; 将服务器在组中down

Slow_start_time :   慢启动  一般用于新加如的一台服务器

Ip_hash;  把来同一个客户端的请求,放在同一台服务器上,注意他不能与backup一起使用

Hash key; 如hash  cookie 是按cookie来定义的

如: hash  $remote_addr  = ip_hash

           $request_uri   完整的URI  http://192.168.220.130/index.html

$request     不完整的URI http://192.168.220.130

Keepalive  32;  保持每个worker上多少个长连接

 

基于四层

  

stream {

 

        upstream websrvs {

 

                server 192.168.10.2:80;

 

                server 192.168.10.3:80;

 

        }

 

        server {

 

                listen 80;

 

                proxy_pass websrvs;

 

        }

 

}

 

访问:

 

for i in {1..5};do curl http://192.168.220.130; done  

基于四层的反代:

 

Stream  {

        Server {

                 Listen  80;

                Proxy_pass  192.168.10.2:80;

        }

}

mysql的测试实验

在客户端安装mysql  启动服务  添加用户test 密码 testpass

 

GRANT ALL on mydb.*  to  [email protected]’%’ IDENTIFIED  BY ‘testpass’;

Flush privileges;

在另台上测试:  mysql  -utest  -h192.168.10.1  -p testpass

 

Upstrem mysvrs {

         Server  192.168.10.2:3306;

         Server  192.168.10.3:3306;

}

Server {

         Listen  3306;

        Proxy_pass  mysvrs;

}

 

以上是关于nginx-负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

Nginx---负载均衡和缓存

nginx负载均衡

使用Nginx配置TCP负载均衡

Nginx实现负载均衡

Nginx——nginx作为负载均衡服务(负载均衡与nginx)

nginx+keepalive实现负载均衡高可用