本次主要是在win7 64 上示範操作。
-
- web應用構建
- Memcached安裝配置啟動
- Tomcat配置
- 所需jar包
- memcached-session-manager
- 序列化
- contextxml配置
- Nginx安裝配置啟動
- 測試
- 參考
web應用構建
簡單構造web應用,這裡就不做描述了,具體的可以訪問我的Github。
為了方便顯示,在success.jsp上做區別,一個加上8080,一個加上8081。
Memcached安裝、配置、啟動
本次樣本使用了2個memcached節點,都在一台機子上。
win7 64上的操作。資源可以在這個連結上下載我是連結。
解壓後進入cmd進入此目錄,記住一定要用已管理員身份運行。
安裝
memcached -d install
運行
memcached -d start
也可以啟動多個memcached服務,可以參考這個連結。
建立
sc create"Memcached Server"start= auto binPath= "memcached_path -d runservice -m 32 -p 11311 -l 127.0.0.1" DisplayName= "Memcached Server"
注意修改連接埠,預設是11211
可以通過Telnet訪問:telnet 127.0.0.1 11211
telnet介面 quit可以退出
啟動、停止、卸載Memcached Server的命令:
sc start "Memcached Server"//啟動sc stop "Memcached Server"//停止sc delete"Memcached Server"//卸載該服務
可以在工作管理員上看到memcached服務
Tomcat配置
本次以2個tomcat7.0.62樣本
Tomcat 叢集配置,叢集中各個結點通過共用儲存在緩衝Memcached中session來實現session的共用:如果有一台機器上的Tomcat服務停掉了,對於其他對等伺服器上的session資料仍然可以從Memcached緩衝中讀取,從而不會發生session丟失的問題。
使用memcached-session-manager,官方文檔。
tomcat的配置主要包括兩個方面,首先需要下載所需要的包,放到tomcat安裝目錄下的lib目錄下(嚴格來說應該是$CATALINA_HOME/lib/)
第一個msm所需要的jar,序列化所需要的jar,
第二個配置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中下載
<dependency><groupId>de.javakaffee.msmgroupId><artifactId>memcached-session-manager-tc7artifactId><version>1.8.3version>dependency>
序列化
4種序列化
kryo-serializer:<dependency><groupId>de.javakaffee.msmgroupId><artifactId>msm-kryo-serializerartifactId><version>versionversion>dependency>javolution:<dependency><groupId>de.javakaffee.msmgroupId><artifactId>msm-javolution-serializerartifactId><version>versionversion>dependency>xstream:<dependency><groupId>de.javakaffee.msmgroupId><artifactId>msm-xstream-serializerartifactId><version>versionversion>dependency>flexjson:<dependency><groupId>de.javakaffee.msmgroupId><artifactId>msm-flexjson-serializerartifactId><version>versionversion>dependency>
各種序列化所需要的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配置
即修改$CATALINA_HOME/conf/context.xml檔案中Context節點下的內容,提交MSM配置。
主要包括使用memcached來管理黏性session和非黏性session以及使用membase來管理非黏性session。
樣本基於在一台主機的2個memcached執行個體,樣本使用的序列化方式為kryo。
本次使用黏性session來管理,至於非黏性的可以自行配置或者下次再補充,配置如下,2個tomcat配置一樣。
..."de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:localhost:11211,n2:localhost:11311" sticky="false" sessi>"false" lockingMode="auto" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
Nginx安裝、配置、啟動
官網下載穩定版本,
解壓後進入該目錄後,
start nginx // 啟動
這樣,nginx 服務就啟動了。開啟工作管理員,查看 nginx.exe 進程,有二個進程會顯示,佔用系統資源,那是相當的少。然後再開啟瀏覽器,輸入 http://127.0.0.1/ 就可以看到nginx的歡迎頁面了,非常友好。
nginx -s stop // 停止nginxnginx -s reload // 重新載入設定檔nginx -s quit // 退出nginx
預設情況下,Nginx使用預設的設定檔nginx.conf,修改它,如下:
#user nobody;worker_processes2;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections1024;}http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status$body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; sendfileon; #tcp_nopush on;#keepalive_timeout 0;#keepalive_timeout 65;#gzip on;upstream localhost { #ip_hash;server localhost:8080 weight=1; server localhost:8081 weight=1; } server { listen80; server_name localhost; charset utf-8; #charset koi8-r;#access_log logs/host.access.log main;location / { root html; index index.html index.htm; proxy_passhttp://localhost; proxy_connect_timeout2s; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location~ ^/(WEB-INF)/ { deny all; } #error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page500502503504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {# proxy_pass http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {# deny all;#} } # another virtual host using mix of IP-, name-, and port-based configuration##server {# listen 8000;# listen somename:8080;# server_name somename alias another.alias;# location / {# root html;# index index.html index.htm;# }#}# HTTPS server##server {# listen 443 ssl;# server_name localhost;# ssl_certificate cert.pem;# ssl_certificate_key cert.key;# ssl_session_cache shared:SSL:1m;# ssl_session_timeout 5m;# ssl_ciphers HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers on;# location / {# root html;# index index.html index.htm;# }#}}
測試
登陸頁面
成功頁面
success1
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教程有興趣的朋友有所協助。