交易系统架构之会话篇:tomcat msm部署

本篇讲述实验环境

主机

端口

开源软件

192.168.161.73

8081

tomcat

192.168.161.73

8080

tomcat

192.168.161.73

11213

memcached

192.168.161.73

11214

memcached

192.168.161.73

8888

nginx

说明:

8080、8081分别为tomcat两实例;

11212、11213分别为memcached两实例;

web应用示例工程casdemo部署在tomcat两实例上。

Nginx8888

MSM介绍

传统tomcat统一管理tomcat

sticky根据IP直接绑定到该tomcat实例。

no-sticky:会话非粘连模式。客户端的请求是随机分发,多台tomcat实例均会收到请求。

MSM依赖包

spymemcached-2.11.1.jar

reflectasm-1.01.jar

msm-kryo-serializer-1.8.3.jar

msm-javolution-serializer-1.8.3.jar

msm-flexjson-serializer-1.8.3.jar

minlog-1.2.jar

memcached-session-manager-tc8-1.8.3.jar

memcached-session-manager-1.8.3.jar

kryo-serializers-0.11.jar

kryo-1.04.jar

asm-3.2.jar

放到tomcat/lib下

tomcat配置

1.8080

修改

<Server port="8005" shutdown="SHUTDOWN"><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /><Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"> —非必选 ,只有选择了sticky模式才加入jvmRoute属性。不同的tomcat实例 jvmRoute取值不能相同。例:8080端口的tomcat实例jvmRoute=tomcat1,8081端口的tomcat实例jvmRoute=tomcat2

2.8081

<Server port="9005" shutdown="SHUTDOWN"><Connector port="8081" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><Connector port="9009" protocol="AJP/1.3" redirectPort="8443" /><Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2"> —非必选 ,只有选择了sticky模式才加入jvmRoute属性。不同的tomcat实例 jvmRoute取值不能相同。例:8080端口的tomcat实例jvmRoute=tomcat1,8081端口的tomcat实例jvmRoute=tomcat2

3.msm配置

修改

No-Stick模式

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="n1:192.168.161.73:11213,n2:192.168.161.73:11214" lockingMode="auto" sticky="false" requestUriIgnorePattern=".*\.(png|gif|jpg|css|js|ico|jpeg|htm|html)$" sessionBackupAsync="false" sessionBackupTimeout="1800000" copyCollectionsForSerialization="false" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />

Stick模式

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="n1:192.168.161.73:11213,n2:192.168.161.73:11214" lockingMode="auto"sticky="true" failoverNodes="n1" requestUriIgnorePattern=".*\.(png|gif|jpg|css|js|ico|jpeg|htm|html)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />运行memcached

1.运行

./memcached-d-m128-p11213-uroot

2.运行

./memcached-d-m128-p11214-uroot

运行ngnix

cdsbin

./ngnix

conf/nginx.conf供参考

#user nobody;user root root;worker_processes 2;worker_rlimit_nofile 65535;#error_log logs/error.log;error_log logs/error.log notice;#error_log logs/error.log info; #pidlogs/nginx.pid;events {use epoll;worker_connections 65535;} http {includemime.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;#控制缓冲区溢出攻击client_body_buffer_size 1K;client_header_buffer_size 1k;client_max_body_size 1k;large_client_header_buffers 2 1k;##cache##proxy_connect_timeout 5;proxy_read_timeout 60;proxy_send_timeout 5;proxy_buffer_size 16k;proxy_buffers 4 64k;gzip_proxied any; proxy_busy_buffers_size 128k;proxy_temp_file_write_size 128k;proxy_temp_path /home/temp_dir;proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=1g;#gzip#gzip on;gzip_vary on;gzip_min_length 1k;gzip_buffers 4 8k;gzip_comp_level 4;gzip_http_version 1.0;gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;gzip_disable "MSIE [1-6]\.";sendfileon;#tcp_nopushon;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;upstream tc{#ip_hash;server 192.168.161.73:8080;server 192.168.161.73:8081;}server {listen8888;server_name localhost;charset utf-8;#access_log logs/host.access.log main;location /casdemo {proxy_pass ;# $server_port 可以不要,只有nginx的端口是非80情况下有效proxy_set_headerHost $host:$server_port; #proxy_set_headerX-Real-IP $remote_addr;#proxy_set_headerX-Forwarded-For $proxy_add_x_forwarded_for;}location ~ .*\.(jsp|do|action)?${# $server_port 可以不要,只有nginx的端口是非80情况下有效proxy_set_header Host $host:$server_port;#proxy_set_headerX-Real-IP $remote_addr;#proxy_set_header X-Forwarded-For $remote_addr;proxy_pass ;}# location ~ .*\.(js)?$# {# proxy_pass ;#proxy_redirect off;#proxy_cache_key $host$uri$is_args$args;#proxy_set_header Host $host;#proxy_cache cache_one;#proxy_cache_valid 200 302 1h;#proxy_cache_valid 301 1d;#proxy_cache_valid any 1m;# expires 1h;# }#error_page 404/404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}} }casdemo应用生活中若没有朋友,就像生活中没有阳光一样

交易系统架构之会话篇:tomcat msm部署

相关文章:

你感兴趣的文章:

标签云: