1.nginx的安装
从官网下载一个nginx事务tar.gz版本,centos系统,安装好jdk
第一步解压
第二步:解压完成进入解压目录,执行./configure命令
需要安装gcc编译和pcre库,zlib库
yum -y install gcc
yum install pcre-devel
yum install zlib-devel
./configure完成后执行make install即可安装成功
2.集群配置流程
一、克隆2台CentOS虚拟机,并安装jdk+tomcat
二、安装1台CentOS虚拟机,并安装nginx(过程参见nginx安装流程.png) ?nginx的默认安装位置:/usr/local/nginx
1 启动nginx:
???./nginx ?使用默认配置文件(/usr/local/nginx/conf/nginx.conf)
???????或
???./nginx -c /x/xx/xxx/nginx.conf
???????
2 测试
???http://ip:80 ?或 ?http://ip (nginx的默认端口80)
???
3 关闭
???./nginx -s stop
???
4 重启
???./nginx -s reload
???
5 查看线程
???ps -ef | grep nginx (查询主进程号)
???kill -9 主进程号 ?(强制关闭)
三、配置集群环境 ?1 修改nginx的配置文件(默认位置:/usr/local/nginx/conf/nginx.conf)
1> 配置tomcat集群节点 ?在http节点内部,server节点外部 ?upstream tomcat-servers { ?server 192.168.1.103:8080; ?server 192.168.1.104:8080; ?}
?2> 配置反向代理 ?在server节点内部:
1 修改nginx的配置文件(默认位置:/usr/local/nginx/conf/nginx.conf)
1> 配置tomcat集群节点
在http节点内部,server节点外部
upstream tomcat-servers {
server 192.168.1.103:8080;
server 192.168.1.104:8080;
}
2> 配置反向代理
在server节点内部:
location / {
proxy_pass http://tomcat-servers;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
}
2 启动所有tomcat节点,启动nginx,测试
1 默认:轮循
upstream tomcat-servers {
server 192.168.1.103:8080;
server 192.168.1.104:8080;
}
2 iphash:基于ip
upstream tomcat-servers {
ip_hash;
server 192.168.1.103:8080;
server 192.168.1.104:8080;
}
3 weight:权重轮询
upstream tomcat-servers {
server 192.168.1.103:8080 weight=1;
server 192.168.1.104:8080 weight=2;
}
ip_hash方式,一定程度上解决了负载均衡情况下session不一致,此时访问session会发生黏着,基于Tomcat ip的黏着状态;但如果此ip的Tomcat发生宕机,则负载均衡继续进行,seever切换后导致session会话再次丢失
session复制 造成空间浪费,也不合适
redis提供session共享 √
思路:redis的key是sessionid 值为session序列化的String
准备:jar包:commons-pool2-2.2.jar, jedis 2.8.jar,tomcat-redis-session-manage-tomcat7.jar
1.在tomcat的lib中引入:
tomcat-redis-session-manage-tomcat7.jar
jedis-2.8.1.jar
commons-pool2-2.2.jar
2.在tomcat的context.xml中添加:
<!-- 配置session由redis管理,并指定redis的ip和port -->
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/>
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host = "192.168.0.203" #redis服务器ip
port="7000"
database="0"/>#redis的库
Web应用优化之nginx+tomcat集群配置+redis管理session
原文地址:https://www.cnblogs.com/lhc-hhh/p/10284819.html