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

Nginx+Memcached+Tomcat クラスター構成

WBOY
WBOYオリジナル
2016-08-08 09:21:36760ブラウズ

今回は主にwin7 64での動作をデモします。

    • Webアプリケーションのビルド
    • Memcachedのインストール構成の起動
    • Tomcatの構成
      • 必要なjarパッケージ
        • memcached-session-manager
        • シリアル化
      • contextxml 設定
    • Nginx インストール 設定起動
    • テスト
    • 参考

Webアプリケーションの簡単な構築

ここでは説明しません。詳細については、私のGithubを参照してください。
表示しやすいように、success.jsp に変更を加え、一方に 8080 を追加し、もう一方に 8081 を追加します。


Memcached のインストール、構成、起動

この例では、2 つの memcached ノードを 1 台のマシン上で使用します。

win7 64での動作。このリソースは、このリンク「I am link」からダウンロードできます。
解凍後、必ず「cmd」と入力してこのディレクトリを管理者として実行してください。

インストール

<code>memcached  <span>-d</span> install</code>

実行

<code>memcached <span>-d</span> start</code>

複数の memcached サービスを開始することもできます。このリンクを参照してください。

作成

<code>sc <span><span>create</span><span>"Memcached Server"</span><span>start</span>= auto binPath= <span>"memcached_path -d runservice -m 32 -p 11311 -l 127.0.0.1"</span> DisplayName= <span>"Memcached Server"</span></span></code>

ポートの変更に注意してください。デフォルトは11211です
Telnet 経由でアクセス可能: telnet 127.0.0.1 11211
Telnetインターフェースのquitで終了可能

Memcachedサーバーの起動、停止、アンインストールを行うコマンド:

<code>sc start <span>"Memcached Server"</span><span>//启动</span>
sc stop <span>"Memcached Server"</span><span>//停止</span>
sc <span>delete</span><span>"Memcached Server"</span><span>//卸载该服务</span></code>

タスクマネージャーでmemcachedサービスを確認できます


Tomcatの設定

今回はtomcat7.0.62を2つ使用します例

Tomcat クラスター構成。クラスター内の各ノードは、キャッシュ Memcached に保存されたセッションを共有することでセッション共有を実現します。1 台のマシン上の Tomcat サービスが停止した場合でも、他のピア サーバー上のセッション データは Memcached からキャッシュできます。 , そのため、セッション損失の問題は発生しません。

公式ドキュメントの memcached-session-manager を使用してください。

Tomcat の設定には主に 2 つの側面が含まれます。まず、必要なパッケージをダウンロードし、Tomcat のインストール ディレクトリの下の lib ディレクトリに配置する必要があります (厳密には、$CATALINA_HOME/lib/ である必要があります)。 最初の MSM に必要な jar、シリアル化に必要な jar、
2 番目の構成 context.xml

必要な jar パッケージ

memcached-session-manager

Tomcat 7 に対応する Maven 構成

次の 3 つの jar パッケージが必要です。 memcached-session-manager-version.jar、
memcached-session-manager-tc7-version.jar、
spymemcached-version.jar

は以下のmavenからダウンロードできます

<code><span><<span>dependency</span>></span><span><<span>groupId</span>></span>de.javakaffee.msm<span></<span>groupId</span>></span><span><<span>artifactId</span>></span>memcached-session-manager-tc7<span></<span>artifactId</span>></span><span><<span>version</span>></span>1.8.3<span></<span>version</span>></span><span></<span>dependency</span>></span></code>

serialization

4種類のシリアル化

<code>kryo-serializer:
<span><<span>dependency</span>></span><span><<span>groupId</span>></span>de.javakaffee.msm<span></<span>groupId</span>></span><span><<span>artifactId</span>></span>msm-kryo-serializer<span></<span>artifactId</span>></span><span><<span>version</span>></span>version<span></<span>version</span>></span><span></<span>dependency</span>></span>javolution:
<span><<span>dependency</span>></span><span><<span>groupId</span>></span>de.javakaffee.msm<span></<span>groupId</span>></span><span><<span>artifactId</span>></span>msm-javolution-serializer<span></<span>artifactId</span>></span><span><<span>version</span>></span>version<span></<span>version</span>></span><span></<span>dependency</span>></span>xstream:
<span><<span>dependency</span>></span><span><<span>groupId</span>></span>de.javakaffee.msm<span></<span>groupId</span>></span><span><<span>artifactId</span>></span>msm-xstream-serializer<span></<span>artifactId</span>></span><span><<span>version</span>></span>version<span></<span>version</span>></span><span></<span>dependency</span>></span>flexjson:
<span><<span>dependency</span>></span><span><<span>groupId</span>></span>de.javakaffee.msm<span></<span>groupId</span>></span><span><<span>artifactId</span>></span>msm-flexjson-serializer<span></<span>artifactId</span>></span><span><<span>version</span>></span>version<span></<span>version</span>></span><span></<span>dependency</span>></span></code>

各種シリアル化に必要なjarパッケージは以下の通りです

- kryo-serializer: msm-kryo-serializer、kryo-serializers、kryo、minlog、reflectasm、asm

- javolution-serializer: msm-javolution-serializer、javolution
- xstream-serializer: msm-xstream-serializer、xstream、xmlpull、xpp3_min
- flexjson-serializer: msm-flexjson-serializer, flexjson

$CATALINA_HOME/lib/jar追加の様子は以下の通り


context.xmlの設定

つまり、$内のContextノード配下の内容を変更します。 CATALINA_HOME/conf/context.xml ファイルで、MSM 構成を送信します。

これには主に、memcached を使用してスティッキー セッションと非スティッキー セッションを管理することと、membase を使用して非スティッキー セッションを管理することが含まれます。

この例は、1 つのホスト上の 2 つの memcached インスタンスに基づいています。この例で使用されるシリアル化メソッドは kryo です。

今回は、スティッキーセッションを管理に使用します。非スティッキーセッションについては、自分で設定することも、次回追加することもできます。設定は次のとおりです。

<code><Context>  
  <span>...</span><Manager   className=<span>"de.javakaffee.web.msm.MemcachedBackupSessionManager"</span>  memcachedNodes=<span>"n1:localhost:11211,n2:localhost:11311"</span>        sticky=<span>"false"</span> sessi>"false"</span>        lockingMode=<span>"auto"</span>        requestUriIgnorePattern=<span>".*\.(ico|png|gif|jpg|css|js)$"</span>transcoderFactoryClass=<span>"de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"</span>/>
</Context>  </code>

Nginxのインストール、設定、起動

公式サイトから安定版をダウンロードし、

解凍してディレクトリに入り、

<code>start nginx  <span>// 启动</span></code>

このようにして、nginxサービスが開始されます。タスク マネージャーを開いて nginx.exe プロセスを確認すると、システム リソースを占有しているプロセスが 2 つ表示されますが、これは非常に小さいです。次に、ブラウザを開いて http://127.0.0.1/ と入力すると、非常にフレンドリーな nginx のウェルカム ページが表示されます。

<code>nginx <span>-s</span> stop          <span>// 停止nginx</span>
nginx <span>-s</span> reload       <span>// 重新加载配置文件</span>
nginx <span>-s</span> quit          <span>// 退出nginx</span></code>

デフォルトでは、Nginx はデフォルトの設定ファイル nginx.conf を使用します。それを次のように変更します:

<code><span>#user  nobody;</span><span>worker_processes</span><span>2</span>;

<span>#error_log  logs/error.log;</span><span>#error_log  logs/error.log  notice;</span><span>#error_log  logs/error.log  info;</span><span>#pid        logs/nginx.pid;</span><span>events</span> {
    <span>worker_connections</span><span>1024</span>;
}


<span>http</span> {
    <span>include</span>       mime.types;
    <span>default_type</span>  application/octet-stream;

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

    <span>access_log</span>  logs/access.log  main;

    <span>sendfile</span><span>on</span>;
    <span>#tcp_nopush     on;</span><span>#keepalive_timeout  0;</span><span>#keepalive_timeout  65;</span><span>#gzip  on;</span><span>upstream</span> localhost {  
        <span>#ip_hash;</span><span>server</span> localhost:<span>8080</span> weight=<span>1</span>;  
        <span>server</span> localhost:<span>8081</span> weight=<span>1</span>;
    }

    <span>server</span> {
        <span>listen</span><span>80</span>;
        <span>server_name</span>  localhost;
        <span>charset</span> utf-<span>8</span>;

        <span>#charset koi8-r;</span><span>#access_log  logs/host.access.log  main;</span><span>location</span> / {
            <span>root</span>   html;
            <span>index</span>  index.html index.htm;
            <span>proxy_pass</span><span>http://localhost</span>;  
            <span>proxy_connect_timeout</span><span>2s</span>;
            <span>proxy_set_header</span> X-Real-IP <span>$remote_addr</span>;
            <span>proxy_set_header</span> X-Forwarded-For <span>$proxy_add_x_forwarded_for</span>;
        }

        <span>location</span><span>~ ^/(WEB-INF)/</span> {   
        <span>deny</span> all;   
        }   


        <span>#error_page  404              /404.html;</span><span># redirect server error pages to the static page /50x.html</span><span>#</span><span>error_page</span><span>500</span><span>502</span><span>503</span><span>504</span>  /50x.html;
        <span>location</span> = /50x.html {
            <span>root</span>   html;
        }

        <span># proxy the PHP scripts to Apache listening on 127.0.0.1:80</span><span>#</span><span>#location ~ \.php$ {</span><span>#    proxy_pass   http://127.0.0.1;</span><span>#}</span><span># pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000</span><span>#</span><span>#location ~ \.php$ {</span><span>#    root           html;</span><span>#    fastcgi_pass   127.0.0.1:9000;</span><span>#    fastcgi_index  index.php;</span><span>#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;</span><span>#    include        fastcgi_params;</span><span>#}</span><span># deny access to .htaccess files, if Apache's document root</span><span># concurs with nginx's one</span><span>#</span><span>#location ~ /\.ht {</span><span>#    deny  all;</span><span>#}</span>
    }




    <span># another virtual host using mix of IP-, name-, and port-based configuration</span><span>#</span><span>#server {</span><span>#    listen       8000;</span><span>#    listen       somename:8080;</span><span>#    server_name  somename  alias  another.alias;</span><span>#    location / {</span><span>#        root   html;</span><span>#        index  index.html index.htm;</span><span>#    }</span><span>#}</span><span># HTTPS server</span><span>#</span><span>#server {</span><span>#    listen       443 ssl;</span><span>#    server_name  localhost;</span><span>#    ssl_certificate      cert.pem;</span><span>#    ssl_certificate_key  cert.key;</span><span>#    ssl_session_cache    shared:SSL:1m;</span><span>#    ssl_session_timeout  5m;</span><span>#    ssl_ciphers  HIGH:!aNULL:!MD5;</span><span>#    ssl_prefer_server_ciphers  on;</span><span>#    location / {</span><span>#        root   html;</span><span>#        index  index.html index.htm;</span><span>#    }</span><span>#}</span>}
</code>

Test

ログイン ページ


成功ページ 成功1


success2

Tomcat (8080) がオフの場合、Tomcat (8081) を呼び出して success2 を表示します。 memcached サービスが終了している場合、表示は正常です。


リファレンス


Nginx+Memcached+Tomcat クラスター構成の実践 (Sticky Session)

同じ Windows マシン上で複数の Memcached サービスを開始します

MSM–Memcached_Session_Manager の導入と使用

memcached-session-manager 構成
Windows での Nginx のインストールと構成


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

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

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