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文件

下面添加如图:

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中加入



       port="6379"   
       database="0"  
       maxInactiveInterval="60" />

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

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

你可能感兴趣的:(Nginx)