nginx-负载均衡

基于七层的负载

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

调度器有:

硬件: bigip    A10   netscaler

软件:

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

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

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

      1 会话绑定  持久连接

扫描二维码关注公众号,回复: 1946651 查看本文章

      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  test@’%’ 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;

}

猜你喜欢

转载自www.cnblogs.com/huxl1/p/9279846.html