ホームページ  >  記事  >  バックエンド開発  >  Nginx + Tomcat + Memcached クラスター

Nginx + Tomcat + Memcached クラスター

WBOY
WBOYオリジナル
2016-07-30 13:30:56954ブラウズ


Nginx + Tomcat + Memcached クラスターでは、少なくとも 2 つの側面を考慮する必要があります:

1. ロード バランシングを実現する方法。

2. セッションのレプリケーションと同期を実装するにはどうすればよいですか?

この記事では、インターネットから関連資料を収集し、ウィンドウの下に Nginx + Tomcat + Memcached クラスターを構築するプロセスを次のように要約します。

1. 開発環境

1. nginx バージョン: 1.8.0

2. memcached バージョン: 1.4.13

4.マネージャーの最新バージョン: 1.6.3

5. オペレーティング システム: Win7

2. 負荷分散を実現するための Nginx + Tomcat


1. nginx と tomcat をダウンロードしてインストールします

ここでは詳しく説明しません。詳細については、nginx と tomcat をダウンロードしてインストールします

2 nginx の設定

nginx のメイン設定ファイル D:nginx-1.8.0confnginx.conf を開き、主にプロキシ転送サーバーの IP とポートを変更します。重みはサーバーです。重み、数値が大きいほど、アクセスされていることを意味します 可能性が高くなります:

	upstream local_tomcat {
	   server localhost:18080 weight=1; 
           server localhost:18081 weight=1; 
	} 
	
    server {
        listen       80;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://local_tomcat; 
        }
    }

3. Tomcat + memcached はセッションのレプリケーションと同期を実装します

Tomcat のセッションのレプリケーションと同期の問題は通常、memcached を使用することで解決されますまたは nginx_upstream_jvm_route は、Cookie ベースのセッション スティッキー機能を実装するために使用される Nginx 拡張モジュールです。 Tomcat が多すぎる場合、サーバー間のセッションの同期はリソースを消費し、同時実行性の高い環境ではセッション ストームが発生しやすくなります。アプリケーションの状況に応じて、セッション ソリューションを適切に採用してください。

以下では、セッションを管理するための memcached (memcache-session-manager) の使用方法を紹介します

1. memcached をダウンロードしてインストールします(省略)

2. 関連する jar パッケージをダウンロードします

ダウンロードする必要がある jar パッケージの完全なセットが提供されています (既にテストされており、ダウンロードする必要がある場合は、クリックしてください)。 リンクのダウンロード。

3. セッション共有を設定します

上記の jar パッケージを tomcat/lib ディレクトリに配置し、各 Tomcat 設定ファイル tomcatconfcontext.xml を ... タグの間に追加します。コード:

a. tomcat を設定します

tomcatconfserver.xml を変更します。 ローカル win7 システムに 2 つの tomcat がインストールされているため、tomcat-node1 を例に挙げると、主な変更は次のとおりです。 Node2 など)

<Server port="8005" shutdown="SHUTDOWN">
    <Connector port="18080" protocol="HTTP/1.1"
               c
               redirectPort="8443" />

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
tomcatconfcontext.xml を変更し、... タグの間に次のコードを追加します。
	<Manager  
		className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
		memcachedNodes="<span style="color:#FF0000;"><strong>n1:127.0.0.1:11211</strong></span>"  
		sticky="false"  
		sessi  
		lockingMode="uriPattern:/path1|/path2"  
		requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
		transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
(2 つの Tomcat 構成の memecachedNodes はすべて n1:* であることに注意してください)
b. アプリケーションの jsp を変更します

私は Tomcat に付属のサンプル プロジェクトを使用しており、次の jsp を D:nginx-1.8.0Tomcattomcat-node1webappsexamplesindex.html

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.text.SimpleDateFormat"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Tomcat集群测试</title>
  </head>
  <body>
    <%
		out.print("["+request.getLocalAddr()+":" +request.getLocalPort()+"]" + "<br/>session id:" + session.getId()); 
    %>
  </body>
</html>

に直接置き換えます。 nginx を起動します。 memcached と 2 つの Tomcat は、ブラウザを使用して http://localhost/examples/ にアクセスし、nginx サーバーから返された 2 つのページを比較し、2 つのポートは異なるがセッションが同じであることを確認します。これは、Nginx + Tomcat + Memcached クラスターが正常に確立されました。


参考記事:

1. http://www.tuicool.com/articles/I7ryYf

2. http://blog.csdn.net/liuzhigang1237/article/details/8880752

3. http://www.cnblogs.com/phirothing/archive/2013/12/05/3459814.html

著作権表示: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。

上記では、関連する内容も含めて Nginx + Tomcat + Memcached クラスターを紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。