Tomcat+nginx+redis负载均衡配置

  1. 所需软件
  2. Tomcat 7  * 2
  3. nginx-1.10.3-1.el7.ngx.x86_64.rpm * 1
  4. redis-3.0.3 * 1
  5. 服务器 * 2
  6. 安装软件
  7. 采用其中一台服务器作为主服务器,用做nginx的服务器,使用以下命令行安装nginx(window下双击exe安装包安装)

rpm -ivh nginx-1.10.3-1.el7.ngx.x86_64.rpm;

  1. 在两台服务器中任意位置放置tomcat,启动服务并访问,确保两台服务器的tomcat都能启动并能正常访问;
  2. 将redis安装包解压,直接运行解压后文件夹中的run.sh启动redis服务(windows下直接双击安装并启动服务);
  3. 软件配置
  4. 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服务;

  1. 配置nginx(linux与windows的配置文件结构相同):

        在nginx安装目录下打开conf文件夹,找到nginx.conf文件,其中的各个参数的作用如下:

  • worker_processes:工作进程个数,可配置多个
  • worker_connections:单个进程最大连接数
  • server:每一个server相当于一个代理服务器
  • lister:监听端口,默认80
  • server_name:当前服务的域名,可以有多个,用空格分隔(我们是本地所以是localhost)
  • location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里
  • index:当没有指定主页时,默认会选择这个指定的文件,可多个,空格分隔
  • proxy_pass:请求转向自定义的服务器列表
  • upstream name{ }:服务器集群名称

redis 负载均衡命令 redis负载均衡配置_redis 负载均衡命令

上图为修改之前的nginx配置文件,默认监听80端口,即用户访问nginx服务器的80端口会访问到配置的tomcat集群;

下面在配置文件中配置tomcat集群,修改upstream下的内容:

redis 负载均衡命令 redis负载均衡配置_nginx_02

括号内两行代码配置的是实际部署的tomcat的服务器地址和端口信息,有几个tomcat服务器参与集群就填写填写几行(注:可以在端口号后面增加一个参数weight,用于设定服务器的访问权重,数值设置的越大被访问的频率越高);

然后修改下server的配置参数,将nginx监听到的端口访问定向到部署的服务器集群上来,修改下server中的location,添加proxy_pass,值为上一步骤中设置的upstream的参数值,设置完成如下如:

redis 负载均衡命令 redis负载均衡配置_redis_03

  1. 测试nginx

启动两个tomcat服务,确保两个tomcat都能正常访问;进入nginx的安装目录,使用start nginx命令行启动nginx;使用浏览器访问nginx中配置的网址和端口进行访问,检测是否访问正常;

  1. 共享文件目录设置(share)

由于两个tomcat服务部署在两台服务器上,他们之间的附件文件是无法保证相同的,所以我们设置两个tomcat使用公用的share文件,即访问到share文件时我们通过nginx将其定位到一个固定的share地址;在server括号内增加一个location,location后面的匹配路径设置为/opt/share_server1,然后将其proxy_pass设置为实际使用的share地址,如172.16.201.2:/opt/share_ server1;