nginx反向代理安装配置\\服务器状态监控(健康检查)\\session一致性(memcache和redis配置)
一、首先举例配置memcached的session一致性和共享session
A准备2台机器(node2和node3)
a\\node3用于安装tomcat3、memcached和nginx
b\\node2只需要安装tomcat即可,
所以注意:在生产环境中,如果不是nginx的集群,那么只需要安装一个memcached!!
安装成功nginx、tomcat和memcached
#yum install memcached
解压安装tomcat和tengine成功后下一步
B在node3中配置nginx.conf文件(文件内容见备注)
C(1)配置tomcat的context.xml文件(文件内容见备注A)
(2)将memcached接口jar放入tomcat的lib目录下
注意:context.xml中只需添加<Manager />的内容即可
D先开启tomcat,再开启memcached,最后开启tengine!!!
E打开浏览器:
输入http://192.168.142.103/status------------》查看状态
输入http://192.168.142.103/ ------------》查看session和jsp页面
然后停止192.168.142.102的tomcat,再测试即可
(未实现轮循!!!)
二、再实现redis的session共享
只需要更改tomcat的context.xml文件为redis配置(内容见备注B)
成功安装redis,启动redis服务即可
访问---》http://192.168.142.107/
未实现轮循!!!
备注:nginx.conf配置,实现健康检查和session共享
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
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"';
sendfile on;
#keepalive_timeout 0;
keepalive_timeout 65;
upstream nginx{
session_sticky cookie=uid fallback=on path=/ mode=insert option=indirect;
server 192.168.142.103:8080 weight=2;
server 192.168.142.102:8080 weight=1;
check interval=3000 rise=2 fall=5 timeout=1000 type=http; #如果是https那么就配https
check_http_send "HEAD /index.jsp HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}
server {
listen 80;
server_name www.sx2.com;#如果在windows的hosts中配置了映射,则可以直接访问
location / {
session_sticky_hide_cookie upstream=nginx;
proxy_pass http://nginx;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
root html;
index index.html index.htm;
}
location /status {
check_status ;#多个tomcat的健康检查
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
备注A:tomcat的context.xml文件配置memcached
<?xml version='1.0' encoding='utf-8'?>
<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.142.103:11211"
sticky="false"
lockingMode="auto"
sessionBackupAsync="false"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
sessionBackupTimeout="1000"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
</Context>
备注B:tomcat的context.xml文件配置redis
<?xml version='1.0' encoding='utf-8'?>
<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="192.168.142.107"
port="6379"
database="0"
maxInactiveInterval="60"
/>
</Context>