Tomcat+nginx+redis负载均衡配置
- 所需软件
- Tomcat 7 * 2
- nginx-1.10.3-1.el7.ngx.x86_64.rpm * 1
- redis-3.0.3 * 1
- 服务器 * 2
- 安装软件
- 采用其中一台服务器作为主服务器,用做nginx的服务器,使用以下命令行安装nginx(window下双击exe安装包安装)
rpm -ivh nginx-1.10.3-1.el7.ngx.x86_64.rpm;
- 在两台服务器中任意位置放置tomcat,启动服务并访问,确保两台服务器的tomcat都能启动并能正常访问;
- 将redis安装包解压,直接运行解压后文件夹中的run.sh启动redis服务(windows下直接双击安装并启动服务);
- 软件配置
- Tomcat配置:
配置各服务器tomcat的/conf/context.xml文件,加入下面这段:
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="redis_dxp"
port="9000"
database="0"
maxInactiveInterval="60" />
将host的值替换为部署了redis服务的服务器的值,port改为redis服务的端口,两个tomcat都要设置,保证使用同一个redis服务;
- 配置nginx(linux与windows的配置文件结构相同):
在nginx安装目录下打开conf文件夹,找到nginx.conf文件,其中的各个参数的作用如下:
- worker_processes:工作进程个数,可配置多个
- worker_connections:单个进程最大连接数
- server:每一个server相当于一个代理服务器
- lister:监听端口,默认80
- server_name:当前服务的域名,可以有多个,用空格分隔(我们是本地所以是localhost)
- location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里
- index:当没有指定主页时,默认会选择这个指定的文件,可多个,空格分隔
- proxy_pass:请求转向自定义的服务器列表
- upstream name{ }:服务器集群名称
上图为修改之前的nginx配置文件,默认监听80端口,即用户访问nginx服务器的80端口会访问到配置的tomcat集群;
下面在配置文件中配置tomcat集群,修改upstream下的内容:
括号内两行代码配置的是实际部署的tomcat的服务器地址和端口信息,有几个tomcat服务器参与集群就填写填写几行(注:可以在端口号后面增加一个参数weight,用于设定服务器的访问权重,数值设置的越大被访问的频率越高);
然后修改下server的配置参数,将nginx监听到的端口访问定向到部署的服务器集群上来,修改下server中的location,添加proxy_pass,值为上一步骤中设置的upstream的参数值,设置完成如下如:
- 测试nginx
启动两个tomcat服务,确保两个tomcat都能正常访问;进入nginx的安装目录,使用start nginx命令行启动nginx;使用浏览器访问nginx中配置的网址和端口进行访问,检测是否访问正常;
- 共享文件目录设置(share)
由于两个tomcat服务部署在两台服务器上,他们之间的附件文件是无法保证相同的,所以我们设置两个tomcat使用公用的share文件,即访问到share文件时我们通过nginx将其定位到一个固定的share地址;在server括号内增加一个location,location后面的匹配路径设置为/opt/share_server1,然后将其proxy_pass设置为实际使用的share地址,如172.16.201.2:/opt/share_ server1;