CentOSでNginx+Tomcat+Redisアプリケーションサーバクラスタ負荷分散とSession共有を実現

9987 ワード

前言:
     システム:CentOS 6.4 x 64
     JDK:1.7
     Tomcat:7.X
      サーバクラスタの分散:
      nginx:192.168.2.132:80
      tomcat: 192.168.20.132:8088
                   192.168.20.132:8099
      redis:    192.168.20.132:6379
     インストールパッケージ:
     nginxダウンロードアドレス:http://nginx.org/en/download.html
     redisダウンロードアドレス:https://redis.io/download
     tomcatとJdkは自分でダウンロードしてインストールします
    クラスタを構築するために必要なjarパッケージのダウンロードアドレス:https://download.csdn.net/download/dc282614966/10564781
一、Nginxインストール
nginxバージョン:nginx-1.15.2
インストール方法:ソースコードコンパイルインストール
1.インストール環境
nginxのコンパイルにはc++が必要であり、prce(リダイレクトサポート)とopenssl(httpsサポート)もインストールする必要があります.
[root@hadoop05 ~]# yum install gcc-c++
[root@hadoop05 ~]# yum -y install pcre*
[root@hadoop05 ~]# yum -y install openssl*

2.ダウンロードしたnginx-1.15.2.tar.gzパッケージを/usr/local/下に解凍する
[root@hadoop05 ~]# tar -zxvf nginx-1.15.2.tar.gz -C /usr/local/

3.cd/usr/local/nginx-1.15.2/インストールディレクトリの設定
[root@hadoop05 nginx-1.15.2]# ./configure --prefix=/usr/local/nginx

4.エラーがない場合は、コンパイルインストールを開始
[root@hadoop05 nginx-1.15.2]# make
[root@hadoop05 nginx-1.15.2]# install

4.ファイアウォールポートを開く80
1)iptablesで次の設定を追加します.
[root@hadoop05 nginx-1.15.2]# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW-m tcp -p tcp --dport 80 -j ACCEPT

  CentOS下实现Nginx+Tomcat+Redis应用服务器集群负载均衡和Session共享_第1张图片
2)iptalbesの再起動
service iptables restart

5.nginxサービスの起動
cd/usr/local/nginx/sbinディレクトリに移動
[root@hadoop05 sbin]# ./nginx 

プロセスを表示します.nginxのmasterプロセスとworkerプロセスが表示されます.

6.ip:80テストにアクセスして、インストールに成功したことを示すページを表示できます.
CentOS下实现Nginx+Tomcat+Redis应用服务器集群负载均衡和Session共享_第2张图片
再起動コマンド:
[root@hadoop05 sbin]# ./nginx -s reload

二、redis取付
1.インストールパッケージのダウンロード
wget http://download.redis.io/releases/redis-4.0.10.tar.gzまたはhttps://redis.io/download
2.大/usr/local/ディレクトリの下に解凍
[root@hadoop05 redis-4.0.10]# tar -zxvf redis-4.0.10.tar.gz -C /usr/local/

3./usr/local/redis-4.0.10/に進む
[root@hadoop05 /]# cd /usr/local/redis-4.0.10/

4.コンパイルインストール
[root@hadoop05 redis-4.0.10]# make
[root@hadoop05 redis-4.0.10]# make PREFIX=/usr/local/redis install

5.起動
コンパイルされたファイルディレクトリの下/usr/local/redis/bin/に入り、次の図にredisを起動します.
[root@hadoop05 /]# cd  /usr/local/redis/bin/


開始:
[root@hadoop05 bin]# ./redis-server

CentOS下实现Nginx+Tomcat+Redis应用服务器集群负载均衡和Session共享_第3张图片
6.redisバックグラウンド起動の設定
解凍ディレクトリの下にあるredis.confファイルを、コンパイルされたredisファイルの下にコピーします.
[root@hadoop05 redis-4.0.10]# cp redis.conf /usr/local/redis

redis.confファイルを変更し、noをyesに変更し、redisに再親します.
CentOS下实现Nginx+Tomcat+Redis应用服务器集群负载均衡和Session共享_第4张图片
redisを再起動するには、次の手順に従います.
[root@hadoop05 redis]# ./bin/redis-server ./redis.conf


プロセスが開始されたかどうかを確認します.
[root@hadoop05 bin]# ps -ef|grep redis


三、tomcat構成
1.必要なjarをダウンロードし、tomcatのlibの下にコピーします.
CentOS下实现Nginx+Tomcat+Redis应用服务器集群负载均衡和Session共享_第5张图片
JArパッケージのダウンロードアドレス:https://download.csdn.net/download/dc282614966/10563909
2.tomcatのcontext.xmlプロファイルを変更し、次の構成情報をcontextラベルに入れる

    

四、nginx配置
ここでは逆エージェントを行うため、nginxのconfディレクトリの下でnginx.confのプロファイルを構成する必要があります.赤い線を引く部分は追加の内容で、以下のように修正されます.
CentOS下实现Nginx+Tomcat+Redis应用服务器集群负载均衡和Session共享_第6张图片
ここでは本機の下の2つのTomcatインスタンスを指定し、ポートはそれぞれ80888099で、重みはすべて1で、後ろにTomcatインスタンスを配置し、nginx-tomcat-redisこれは私のテストプロジェクトのプロジェクト名で、下に使用します:
 upstream nginx-tomcat-redis{
    #weigth      ,             
    #    Squid  3128  
        server 127.0.0.1:8088 weight=1;
        server 127.0.0.1:8099 weight=1;
    }
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://nginx-tomcat-redis;
        }

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://nginx-tomcat-redis;
        }
    }

五、テスト
1.jspページ
      テスト項目に簡単なjspページを書き、jsでカスタムservletを呼び出し、servletでsessionIdを取得し、取得したsessionIdをjspページに返します.コードは以下の通りです.






First Page




	

jsp

SessionId:

2.jsファイル
       jsでは にajaxからservletを び してsessionIdを します.コードは の りです.
$(function() {
	
	$.ajax({
		url : 'session',
		method : 'get',
		success : function(result){
			$("#firstSessinId").append(result);
		}
	});
	
})

3.servletファイル
      にsessionIdを し、jspページに ります.コードは のとおりです.
public class SessionShareServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    
    public SessionShareServlet() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

			String id = request.getSession().getId();
			request.getSession().setAttribute("session", id);
			System.out.println(id);
			OutputStream out = response.getOutputStream();
			out.write(id.getBytes());
			
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

4.ページテスト
アクセスページは のようになります.ページページを り しリフレッシュすると、「 のjspページ」と「2 のjspページ」が に され、nginx が したことを します.2つのページのSessionIdが じであれば、 セッション が したことを します.
CentOS   Nginx+Tomcat+Redis            Session  _ 7
CentOS   Nginx+Tomcat+Redis            Session  _ 8
5.プロジェクトのソースコードのダウンロードアドレス:https://github.com/dengchao3119/nginx-tomcat-redis.git