今回は主にwin7 64での動作をデモします。
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
次の 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
<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 サービスが終了している場合、表示は正常です。
リファレンス
同じ Windows マシン上で複数の Memcached サービスを開始します
MSM–Memcached_Session_Manager の導入と使用
memcached-session-manager 構成
Windows での Nginx のインストールと構成
上記では、関連する側面を含め、Nginx+Memcached+Tomcat クラスター構成を紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。