nginx負載均衡

名詞簡介html

      Nginx ("engine x") 是一個高性能的HTTP和反向代理服務器。佔有內存少,併發能力強。通常能支持1萬次以上的併發,官方說法是5萬次。前端

  反向代理(http://z00w00.blog.51cto.com/515114/1031287),就是在服務端附近放一個代理服務器。因爲和以往把代理放在客戶端附近不一樣,因此叫「反向」。其主要做用是加快響速度,負載均衡和保護服務器原始資源。java

      優勢:nginx

  1. 調度策略豐富,
  2. 可監控集羣節點
  3. 成本低,不須要專用硬件

  缺點:git

  1. 專用於某種應用服務,現主要用於web服務器負載均衡;
  2. 併發量有限,但通常已經夠用了
  3. 增長了代理這一步,增長響應時間

搭建配置github

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

1 安裝java算法

2 安裝多個tomcatsegmentfault

       若是隻有一臺機子,能夠在在同一臺機子上裝多個綠色的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 其餘的配置

  大部分見http://www.javashuo.com/article/p-yheskdoy-ha.html

  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

相關文章
相關標籤/搜索