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  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;

}

 

转载于:https://www.cnblogs.com/huxl1/p/9279846.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值