1. 程式人生 > >nginx+tomcat實現主備切換

nginx+tomcat實現主備切換

一、準備工作

1、nginx安裝

1.1、準備工作
選首先安裝這幾個軟體:GCC,PCRE(Perl Compatible Regular Expression),zlib,OpenSSL。
Nginx是C寫的,需要用GCC編譯;Nginx的Rewrite和HTTP模組會用到PCRE;Nginx中的Gzip用到zlib;
用命令“# gcc”,檢視gcc是否安裝;如果出現“gcc: no input files”資訊,說明已經安裝好了。
否則,就需要用命令“# yum install gcc”,進行安裝了!一路可能需要多次輸入y,進行確認。
安裝好後,可以再用命令“#gcc”測試,或者用命令“# gcc -v”檢視其版本號。
同樣方法,用如下命令安裝PCRE,zlib,OpenSSL(其中devel,是develop開發包的意思):

  1. # yum install -y pcre pcre-devel  
  2. # yum install -y zlib zlib-devel  
  3. # yum install -y openssl openssl-devel  


1.2、下載並安裝
建立目錄(nginx-src)並進去;然後,從官方地址(http://nginx.org/)下載,解壓,配置,編譯,安裝:

  1. # mkdir nginx-src && cd nginx-src  
  2. # wget http://nginx.org/download/nginx-1.7.3.tar.gz  
  3. # tar xzf nginx-1.7.3.tar.gz   
  4. # cd nginx-1.7.3  
  5. # ./configure  
  6. # make  
  7. # make install  
  8. # whereis nginx  
  9. nginx: /usr/local/nginx  

預設的安裝路徑為:/usr/local/nginx;跳轉到其目錄下sbin路徑下,便可以啟動或停止它了。

  1. # ./nginx -h  
  2. nginx version: nginx/1.7.3  
  3. Usage: nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]  
  4. Options:  
  5.   -?,-h         : this help  
  6.   -v            : show version and exit  
  7.   -V            : show version and configure options then exit  
  8.   -t            : test configuration and exit  
  9.   -q            : suppress non-error messages during configuration testing  
  10.   -s signal     : send signal to a master process: stop, quit, reopen, reload  
  11.   -p prefix     : set prefix path (default: /usr/local/nginx/)  
  12.   -c filename   : set configuration file (default: conf/nginx.conf)  
  13.   -g directives : set global directives out of configuration file  

啟動:nginx
停止:nginx -s stop

1.3、新增到系統服務
使用命令“# vi /etc/init.d/nginx”,開啟編輯器,輸入如下內容:

  1. #!/bin/sh  
  2. # chkconfig: 2345 85 15  
  3. # Startup script for the nginx Web Server  
  4. # description: nginx is a World Wide Web server.   
  5. # It is used to serve HTML files and CGI.  
  6. # processname: nginx  
  7. # pidfile: /usr/local/nginx/logs/nginx.pid  
  8. # config: /usr/local/nginx/conf/nginx.conf  
  9. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin  
  10. DESC="nginx deamon"  
  11. NAME=nginx  
  12. DAEMON=/usr/local/nginx/sbin/$NAME  
  13. SCRIPTNAME=/etc/init.d/$NAME  
  14. test -x $DAEMON || exit 0  
  15. d_start(){  
  16.   $DAEMON || echo -n "already running"  
  17. }  
  18. d_stop(){  
  19.   $DAEMON -s quit || echo -n "not running"  
  20. }  
  21. d_reload(){  
  22.   $DAEMON -s reload || echo -n "can not reload"  
  23. }  
  24. case "$1" in  
  25. start)  
  26.   echo -n "Starting DESC:DESC:NAME"  
  27.   d_start  
  28.   echo "."  
  29. ;;  
  30. stop)  
  31.   echo -n "Stopping DESC:DESC:NAME"  
  32.   d_stop  
  33.   echo "."  
  34. ;;  
  35. reload)  
  36.   echo -n "Reloading $DESC conf..."  
  37.   d_reload  
  38.   echo "reload ."  
  39. ;;  
  40. restart)  
  41.   echo -n "Restarting DESC:DESC:NAME"  
  42.   d_stop  
  43.   sleep 2  
  44.   d_start  
  45.   echo "."  
  46. ;;  
  47. *)  
  48.   echo "Usage: $ScRIPTNAME {start|stop|reload|restart}" >&2  
  49.   exit 3  
  50. ;;  
  51. esac  
  52. exit 0  

儲存退出後,再使用下面的命令,使其可執行;然後,新增配置並檢視。
可用chkconfig修改其值,也可用ntsysv工具改變是否自啟動。

    1. # chmod +x /etc/init.d/nginx  
    2. # chkconfig --add nginx  
    3. # chkconfig nginx on/off  
    4. # chkconfig --list nginx  
    5. nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2.tomcat安裝

2.1下載tomcat安裝包,解壓,可以修改webapps/ROOT之下的index.jsp檔案,來標記到底是那個tomcat。

2.2修改tomcat的監聽埠:此處為:8080,8180

2.3啟動tomcat

二、配置nginx,實現主備切換:

配置檔案如下:

upstream  192.168.0.102  {
    server  192.168.0.102:8080 max_fails=1;#max_fails 表示健康檢查失敗的次數,這裡表示次數為一次,即標記該伺服器down了
    server  192.168.0.102:8180 max_fails=1;
    }


    server
    {
    listen  80;
    server_name  192.168.0.102;


    location / {
    proxy_next_upstream error timeout http_500 http_502 http_504;  #這裡表示健康檢查涉及到的情形,有這些情形的,都切換到另外的web伺服器訪問  
    proxy_read_timeout 10s;   #這裡表示程式返回的時間,請參考php.ini的max_exe_time來設定。  
    proxy_pass        http://192.168.0.102;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;


    }

注意:將這段配置放在http{}中。

三、測試

1.瀏覽器輸入:http://192.168.0.102,觀察訪問的是哪一個tomcat

2.停掉正在訪問的這個tomcat服務,然後重新訪問,觀察訪問的是哪一個tomcat。