• nginx负载均衡


    名词简介

          Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器。占有内存少,并发能力强。一般能支持1万次以上的并发,官方说法是5万次。

      反向代理(http://z00w00.blog.51cto.com/515114/1031287),就是在服务端附近放一个代理服务器。由于和以往把代理放在客户端附近不同,所以叫“反向”。其主要作用是加快响速度,负载均衡和保护服务器原始资源。

          优点:

    1. 调度策略丰富,
    2. 可监控集群节点
    3. 成本低,不需要专用硬件

      缺点:

    1. 专用于某种应用服务,现主要用于web服务器负载均衡;
    2. 并发量有限,但一般已经够用了
    3. 增加了代理这一步,增加响应时间

    搭建配置

    参考:http://yuan2.blog.51cto.com/446689/1670924

    1 安装java

    2 安装多个tomcat

           如果只有一台机子,可以在在同一台机子上装多个绿色的tomcat。

    http://blog.csdn.net/zyk906705975/article/details/8471475

    3 配置nginx

           下载wget http://nginx.org/download/nginx-1.11.3.tar.gz

           搭建nginx:http://yuan2.blog.51cto.com/446689/1670924

           说几点说得不清楚的

    • ./configure 的--prefix=/usr/local/nginx 指定的是nginx的安装位置。/usr/local/nginx是默认的位置,按这个来;
    • 在nginx.conf中,upstream那一段原本没有,要自己加;proxy_pass设置的是upstream后面的名字
    • 可能用到的代码,省得敲一次
    upstream tomcat_server{
    
    server localhost:8081 weight=1;
    
    server localhost:8082 weight=1;
    
    }
    <%@ page language="java" pageEncoding="UTF-8"%>
    <html>
    <head>
        <title>Tomcat1</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <p>Tomcat1 服务器</p>
        <p> Session ID : <%= session.getId() %></p>
        <p> Created on : <%= session.getCreationTime() %></p>    
    </body>
    </html>

    4 其他的配置

      大部分见https://segmentfault.com/a/1190000002797601

      http://freeloda.blog.51cto.com/2033581/1288553

      挑几点来讲

      ◎小问题:中文乱码

      ◎Nginx的启动和停止

    启动./sbin/nginx

    停止./sbin/nginx -s stop

    重启 ./sbin/nginx -s reload

      ◎负载均衡详细策略,上面只是helloworld的配置

    默认的只有Round-robin和IP-hash两种负载均衡算法

    见http://www.csdig.com/fan-xiang-dai-li-de-zuo-yong/

      ◎Location和Rewrite

    http://seanlook.com/2015/05/17/nginx-location-rewrite/

    首先是Location,可以有多个location配置,表示不同跳转规则。那么多规则服务器怎么选择,先匹配,找出优先级最高的,优先级相同,就选排在前面的。当然没那么复杂,用推荐配置就好。

    其次是rewrite,就是个改连接的,典型的正则替换。先直接看最下面的例子。

    试着把http://192.168.124.128/test/index.jsp改成http://192.168.124.128/index.jsp

    报错,看日志,发现会多次执行rewrite规则,变成test/ test/ test/index.jsp,直接死循环。于是就发现上面说的break,last是有用的。还有if条件。

      ◎会话粘滞

    参考http://www.oschina.net/question/12_621

    1用cookie或缓存替代session

    2 用ip hash实现会话粘滞。但是nginx要在最前端,而且要在负载均衡的最后端。见文章。

    3 第三方的nginx sticky,原理是服务器写cookie,对cookie hash从而负载均衡

    http://spetacular.github.io/2015/08/01/nginx-sticky-problem.html

    http://www.ttlsa.com/nginx/nginx-modules-nginx-sticky-module/

      ◎页面缓存

      ◎高可用性

    集群的一个要求是高可用性,用nginx+keepalived可以搭建高可用性的集群。参考https://segmentfault.com/a/1190000002881132

  • 相关阅读:
    1、jquery_属性和选择器
    sqlserver2012——SqlCommand创建对象的三种方法
    数据库视频
    插件源码
    打包部署
    SpringCloud-Demo
    SpringCloud
    分布式管理
    security-oauth2
    ES的使用
  • 原文地址:https://www.cnblogs.com/deliver/p/5757514.html
Copyright © 2020-2023  润新知