Nginx+tomcat+redis负载均衡及session同步

什么是负载均衡

  负载均衡,英文 名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种 负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。负载均衡能够平均分配客户请求到服 务器阵列,借此提供快速获取重要数据,解决大量并发访问服务问题,这种集群技术可以用最少的投资获得接近于大型主机的性能。

1.在本机准备2个tomcat 并修改端口号,避免启动出现冲突
,次操作在以上已经解答:tomcat:windows下启动多个tomcat.note

2、把tomcat下所有webapps下的文件全部删掉,以免影响运行

3、把把maven打包的项目或者是tomcat部署的项目拿出去,就是拿出tomcat外面去,
以便供集群服务器共享。如图

修改所有tomcat下apache-tomcat-7.0.33\conf\server.xml文件
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
下面添加如图:

4、安装nginx,下载地址:http://nginx.org/en/download.html
下载解压文件,注意:nginx路径不能为中文

启动命令 :start nginx.exe
快速停止和关闭:nginx -s stop
正常停止和关闭:nginx -s quit
重启: nginx -s reload

启动nginx ,查看是否成功就看进程中是否有nginx
在浏览器中输入localhost就会展示nginx的主页面

配置conf\nginx.conf
在#gzip on;下面添加:
upstream tomcat{ #tomcat是变量名字,可以随意改
server 127.0.0.1:8080 weight=1; #本地端口服务器 weigth 是对应的比重
server 127.0.0.1:8088 weight=1; #本地端口服务器
ip_hash; #ip哈希化
}

修改:location / {为:

location / {
            root   html;
            index  index.html index.htm; 	
			proxy_pass http://tomcat; #指向你的服务器群
			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_connect_timeout  1;
			proxy_read_timeout   1;
			proxy_send_timeout   1;		
        }

测试:启动tomcat:

测试成功,

5、测试nginx到底是访问的哪个tomcat呢?
使用浏览器F12查看cookie
首先要设置tomcat的server.xml
大概在105行左右

后面添加jvmRoute = “tomcat8088” 代表是tomcat8088端口
如图:

6、访问时发现session不一样,session 丢失了,这样的负载均衡有bug啊
解决这个问题,可以配redis使用
redis就是一个大大的Map,做session共享。

7、nginx负载均衡的5种策略(转载)
nginx负载均衡的5种策略.note

8、首先安装redis,并且需要在tomcat 的lib下配置和redis的整合jar包,放在tomcat的lib下面

解压jar包
在命令64bit下启动:
输入redis-server.exe redis.conf 启动

然后在启动一个客户端:redis-cli.exe -h 127.0.0.1 -p 6379

测试:

测试redis没有问题,现在就配置redis和tomcat结合

把这3个jar包放到tomcat的lib下面

备注:jar已上传到博客园中,有需要的点击下载
编辑${TOMCAT_HOME}/conf/context.xml,在context中加入

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
       host="localhost"  <!-- redis ip -->
       port="6379"   <!-- redis端口 -->
       database="0"  <!--  配置的是第一个数据库 -->
       maxInactiveInterval="60" />

host和port为redis的ip和端口
tomcat会使用redis来托管session。
database:代表是第一个数据库
所有配置就已经配置完了,然后是启动,启动的循序是先启动 redis—>tomcat---->nginx

访问页面是session共享,并且两台机器均衡工作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于您提到的keepalived、nginxtomcatredis和mysql,这些是常用于构建高可用和负载均衡的Web应用架构的关键组件。 1. Keepalived:Keepalived是一种开源的高可用解决方案,可以提供IP地址和服务的故障转移。它通常与负载均衡器(如Nginx)一起使用,以确保当主服务器故障时,备份服务器可以接管服务。 2. NginxNginx是一款高性能的开源Web服务器和反向代理服务器。它可以作为负载均衡器,在多个后端服务器(如TomcatRedis和MySQL)之间分发请求,并提供静态文件的高效传输。 3. TomcatTomcat是Java Servlet容器,用于部署和运行Java Web应用程序。它可以作为应用服务器与Nginx配合使用,通过反向代理将请求分发到多个Tomcat实例,以实现负载均衡和高可用性。 4. RedisRedis是一种基于内存的开源键值存储数据库,被广泛用于缓存、会话存储和消息队列等场景。在Web应用架构中,Redis可以作为缓存层,提高数据读取速度,并减轻后端数据库(如MySQL)的负载。 5. MySQL:MySQL是一种流行的开源关系型数据库管理系统,常用于存储应用程序的持久化数据。它可以与Tomcat结合使用,作为后端数据库存储和管理数据。 以上是对keepalived、nginxtomcatredis和mysql的简要介绍,它们在Web应用架构中扮演着不同的角色,以提供高可用、高性能和负载均衡的服务。如果您对其中任何一个组件有更具体的问题,我很乐意为您解答。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值