如何配置Nginx作高可用

操做系統: Linuxjavascript

服務器: tomcat7css

nginx版本:1.6.0html


        nginx是一個高性能的http和反向代理服務器,因其穩定性、豐富的功能性、以及低能耗被普遍採用。本文將示範在fedora16上配置安裝nginx,而且整合tomcat作服務器負載均衡配置。java


Nginx 安裝node

從官網下載Nginx包  http://nginx.org/en/download.htmllinux

在終端su進入root用戶(必須以root權限安裝,由於安裝路徑爲/usr/local,普通權限沒法對該位置的文件進行寫操做)。nginx

1.tar -zxvf nginx-1.6.0.tar.gzapache

2.cd nginx-1.6.0瀏覽器

3../configure--with-http_stub_status_module --with-http_ssl_module--prefix=/usr/local/nginx
   這行命令執行後,可能會提示 ./configure: error: the HTTP rewritemodule requires the PCRE library.這個錯誤,是缺乏pcre 包,可用yum install pcrepcre-devlel來解決緩存

4.make && make install

安裝成功的話,安裝目錄爲 /usr/local/nginx

       測試是否安裝成功,在終端中執行usr/local/nginx/sbin/nginx, 而後在瀏覽器中輸入localhost,若出現 welcome to nginx 則表示安裝成功。

       若要關閉Nginx,則在終端中 ps aux | grep nginx  ,而後kill 掉相關進程便可。或者輸入 usr/local/nginx/sbin/nginx -s stop來中止,該命令 -s 表示將signal 發送到nginx主進程中。



Nginx配置

        Nginx 的配置主要是修改 /usr/local/nginx/conf/nginx,conf文件

#配置用戶和用戶組

user www www;

#工做進程數,建議設置爲CPU的總核數

worker_processes  2;

#全局錯誤日誌定義類型,日誌等級從低到高依次爲: debug | info | notice | warn | error | crit

error_log  logs/error.log  info;

#記錄主進程ID的文件

pid        /usr/local/nginx/nginx.pid;

#一個進程能打開的文件描述符最大值,理論上該值因該是最多能打開的文件數除以進程數。可是因爲nginx負載並非徹底均衡的,

#因此這個值最好等於最多能打開的文件數。執行 sysctl -a | grep fs.file 能夠看到linux文件描述符。

worker_rlimit_nofile 65535;

#工做模式與鏈接數上限

events {

    #工做模式,linux2.6版本以上用epoll

    use epoll;

    #單個進程容許的最大鏈接數

    worker_connections  65535;
}

#設定http服務器,利用它的反向代理功能提供負載均衡支持

http {

    #文件擴展名與文件類型映射表

    include       mime.types;

    #默認文件類型

    default_type  application/octet-stream;

    #日誌格式

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                                   '$status $body_bytes_sent "$http_referer" '
                                   '"$http_user_agent" "$http_x_forwarded_for"';

    #access log 記錄了哪些用戶,哪些頁面以及用戶瀏覽器、ip和其餘的訪問信息

    access_log  logs/access.log  main;

    #服務器名字的hash表大小

    server_names_hash_bucket_size 128;


    #客戶端請求頭緩衝大小。nginx默認會用client_header_buffer_size這個buffer來讀取header值,
    #若是header過大,它會使用large_client_header_buffers來讀取。

    #若是設置太小HTTP頭/Cookie過大 會報400 錯誤 nginx 400 bad request
    #若是超過buffer,就會報HTTP 414錯誤(URI Too Long)
    #nginx接受最長的HTTP頭部大小必須比其中一個buffer大,不然就會報400的HTTP錯誤(Bad Request)。

    client_header_buffer_size 32k;

    large_client_header_buffers 4 32k;

    #客戶端請求體的大小

    client_body_buffer_size    8m;

    #隱藏ngnix版本號

    server_tokens off;

    #忽略不合法的請求頭

    ignore_invalid_headers   on;

    #指定啓用除第一條error_page指令之外其餘的error_page。

    recursive_error_pages    on;

    #讓 nginx 在處理本身內部重定向時不默認使用  server_name 設置中的第一個域名

    server_name_in_redirect off;

    #開啓文件傳輸,通常應用都應設置爲on;如果有下載的應用,則能夠設置成off來平衡網絡I/O和磁盤的I/O來下降系統負載

    sendfile                 on;

    #告訴nginx在一個數據包裏發送全部頭文件,而不一個接一個的發送。

    tcp_nopush     on;

    #告訴nginx不要緩存數據,而是一段一段的發送--當須要及時發送數據時,就應該給應用設置這個屬性,

    #這樣發送一小塊數據信息時就不能當即獲得返回值。

    tcp_nodelay    on;

    #長鏈接超時時間,單位是秒

    keepalive_timeout  65;

    #gzip模塊設置,使用 gzip 壓縮能夠下降網站帶寬消耗,同時提高訪問速度。

    gzip  on;             #開啓gzip

    gzip_min_length  1k;          #最小壓縮大小

    gzip_buffers     4 16k;        #壓縮緩衝區

    gzip_http_version 1.0;       #壓縮版本

    gzip_comp_level 2;            #壓縮等級

    gzip_types       text/plain application/x-javascript text/css application/xml;           #壓縮類型

    #upstream做負載均衡,在此配置須要輪詢的服務器地址和端口號,max_fails爲容許請求失敗的次數,默認爲1.

    #weight爲輪詢權重,根據不一樣的權重分配能夠用來平衡服務器的訪問率。

    upstream hostname {

        server 192.168.2.149:8080 max_fails=0 weight=1;

        server 192.168.1.9:8080 max_fails=0 weight=1;

    }

    #主機配置

    server {

        #監聽端口

        listen       80;

        #域名

        server_name  hostname;
        #字符集
        charset utf-8;
        #單獨的access_log文件
        access_log  logs/192.168.2.149.access.log  main;
        #反向代理配置,將全部請求爲http://hostname的請求所有轉發到upstream中定義的目標服務器中。
        location / {

            #此處配置的域名必須與upstream的域名一致,才能轉發。

            proxy_pass     http://hostname;

            proxy_set_header   X-Real-IP $remote_addr;

        }

        #啓用nginx status 監聽頁面

        location /nginxstatus {

            stub_status on;

            access_log on;

        }

        #錯誤頁面

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;
        }

    }

}

        至此,nginx基本的負載均衡配置完成,實驗中部署2臺tomcat, 而後訪問時返回不一樣的結果,在瀏覽器中輸入地址,確實能看到不一樣的返回結果。nginx配置文件的內容還有待於繼續學習。


 四、Tomcat配置


   對於tomcat你們都很熟悉,只須要修改server.xml配置文件便可,這裏咱們以apache-tomcat-6.0.14爲例,分別在server目錄,解壓縮並命名爲:apache-tomcat-6.0.14_一、apache-tomcat-6.0.14_2。


    第一處端口修改:

Xml代碼  收藏代碼

  1. <!--  修改port端口:18006 倆個tomcat不能重複,端口隨意,別過小-->  

  2. <Server port="18006" shutdown="SHUTDOWN">  

 
   第二處端口修改:

Xml代碼  收藏代碼

  1. <!-- port="18081" tomcat監聽端口,隨意設置,別過小 -->  

  2. <Connector port="18081" protocol="HTTP/1.1"   

  3.                connectionTimeout="20000"   

  4.                redirectPort="8443" />  

  5.   

  6.    

 

   第三處端口修改:

Java代碼  收藏代碼

  1. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />  

 

   Engine元素增長jvmRoute屬性:

Xml代碼  收藏代碼

  1. <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">  

     兩個tomcat的端口別重複,保證能啓動起來,另外一個tomcat配置希捷省略,監聽端口爲18080,附件中咱們將上傳全部的配置信息。

相關文章
相關標籤/搜索