Linux下搭建Nginx+Keepalived+Redis+Tomcat实现session共享 、负载均衡、高可用

一、集群规划

ip安装的软件
192.168.52.128nginx    keepalived   jdk
192.168.52.129nginx    keepalived  jdk
192.168.52.130tomcat  jdk     redis-3.0.3
192.168.52.143tomcat  jdk

 

二、安装步骤

  1、安装 jdk-8u11-linux-i586.tar.gz 

 (1)、在/usr/local/下新建一个java文件夹  命令mkdir /usr/local/java。

 (2)、 把jdk-8u11-linux-i586.tar.gz放到/usr/local/java目录下 命令 mv  jdk-8u11-linux-i586.tar.gz  /user/local/java。

(3)、解压jdk-8u11-linux-i586.tar.gz  命令 tar -zxvf  jdk-8u11-linux-i586.tar.gz。

(4)、配置java环境变量  命令 vi /etc/profile  添加内容 export JAVA_HOME=/usr/local/java/jdk
export PATH=$PATH:$JAVA_HOME/bin  保存退去   让刚才的设置立即生效  命令 source /etc/profile。

(5)、检查安装是否成功命令 java -version  出现如下图所示 表示安装成功。   其他3台机器操作一样。

    2、安装nginx-1.8.0.tar.gz

  (1)、把nginx-1.8.0.tar.gz放到/usr/local/java目录下 命令 mv nginx-1.8.0.tar.gz  /user/local/java。

    (2)、解压nginx-1.8.0.tar.gz  命令 tar -zxvf nginx-1.8.0.tar.gz。

    (3)、 安装c环境   执行命令yum -y install gcc gcc-c++ autoconf make

    (4)、安装nginx需要的环境 命令  yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

    (5)、检查nginx环境  命令 在niginx目录([root@wbx1 nginx-1.8.0]#)下输入 ./configure --prefix=/usr/local/java/nginx。

    (6)、编译nginx   命令 在niginx目录([root@wbx1 nginx-1.8.0]#)下输入 .make && make install

    (7)、启动nginx 在nginx/sbin目录([root@wbx1 sbin]#)下 输入 ./nginx

   (8)、测试nginx是否安装成功   在浏览器中输入127.0.0.1   出现如下界面表示安装成功。

另一台机器安装nignx操作如上。

3、安装apache-tomcat-7.0.64

(1)、把apache-tomcat-7.0.64上去到 /usr/local/java目录下

(2)、在两台tomcat/webapps下新建一个test文件夹在test文件夹下建一个index.jsp文件 

192.168.52.142 index.jsp文件内容如下

<%@ page language="java" %>
<html>
  <head><title>TomcatA</title></head>
  <body>

    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>
sessionID:<%=session.getId()%>
<br>
SessionIP:<%=request.getServerName()%>
<br>
SessionPort:<%=request.getServerPort()%>
<%
out.println("This is Tomcat Server 1111");
%>

192.168.52.143  index.jsp文件内容如下

<%@ page language="java" %>
<html>
  <head><title>TomcatA</title></head>
  <body>

    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>
sessionID:<%=session.getId()%>
<br>
SessionIP:<%=request.getServerName()%>
<br>
SessionPort:<%=request.getServerPort()%>
<%
out.println("This is Tomcat Server 222");
%>

4、tomcat集群配置

(1)、在两台机器上的nginx/conf/nginx.conf配置文件中加如下代码

(2)、测试安装是否成功   在两台安装nginx的机器的浏览器上分别输入127.0.0.1/test显示如下页面表示安装成。

刷新浏览器后显示如下图所示

5、安装Redis-3.0.3实现服务器间的session共享

(1)、下载redis 命令wget http://download.redis.io/releases/redis-3.0.3.tar.gz。

(2)、下载tcl   命令wget http://downloads.sourceforge.net/tcl/tcl8.5.9-src.tar.gz。

(3)、解压redis    [root@node1 java]# tar -zxvf redis-3.0.3.tar.gz 。

(4)、解压tcl     [root@node1 java]# tar -zxvf tcl8.5.9-src.tar.gz 。

(5)、在 tcl8.5.9/unix下执行命令[root@node1 unix]# ./configure。

(6)、编译 命令[root@node1 unix]# make && make install。

(7)、编译redis 命令[root@node1 redis-3.0.3]# make && make install。

(8)、执行命令  [root@node1 redis-3.0.3]# make test。

(9)、创建三个目录 命令mkdir -p /usr/local/java/redis/var , mkdir -p /usr/local/java/redis/etc,mkdir -p /usr/local/java/redis/bin。

(10)、把redis-3.0.3/src下的 redis-benchmark  redis-check-aof redis-cli redis-server redis-check-dump 文件复制出来  命令  [root@node1 src]# cp -r redis-benchmark redis-check-aof redis-cli redis-server  redis-check-dump /usr/local/java/redis/bin/    

[root@node1 redis-3.0.3]# cp -r redis.conf /usr/local/java/redis/etc/
(11)、启动redis 命令   [root@node1 bin]# ./redis-server 

(12)、测试安装是否成功。命令  [root@node1 bin]# ./redis-cli      输入命令127.0.0.1:6379>set aa  123后 在输入127.0.0.1:6379>get  aa出现如图所示表示安装成功。

6、配置tomcat     session共享

(1)、下载tomcat-redis-session-manager相应的jar包,主要有三个:

下载完成后拷贝到$TOMCAT_HOME/lib中。

(2)、修改两tomcat的context.xml 

<Context> 

    <!-- Default set of monitored resources --> 

    <WatchedResource>WEB-INF/web.xml</WatchedResource> 

    <!-- Uncomment this to disable session persistence across Tomcat restarts --> 

    <!--

    <Manager pathname="" />

    --> 

    <!-- Uncomment this to enable Comet connection tacking (provides events 

         on session expiration as well as webapp lifecycle) --> 

    <!--

    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />

    --> 

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />

<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"

         host="192.168.17.4"

         port="6379"

        database="0"

         maxInactiveInterval="60" />

</Context> 

(3)、测试 在nginx机器的浏览器上输入127.0.0.1/test

刷新

sessionid都一样表示配置成功。

7、安装keepalived  实现nginx的高可用

(1)、下载keepalived   命令wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz。

(2)、解压 keepalived  命令 [root@node1 java]# tar -zxvf keepalived-1.2.2.tar.gz 。

(3)、安装popt环境 命令 yum install popt-devel。

(4)、[root@node1 keepalived-1.2.2]# ./configure --sysconf=/etc/  --with-kernel-dir=/usr/src/kernels/2.6.32-573.8.1.el6.x86_64。(不能直接复制粘贴这个命令  手动输入)

(5)、编译  命令[root@node1 keepalived-1.2.2]# make && make install。

(6)、ln -s /usr/local/sbin/keepalived  /sbin/。(不能直接复制粘贴这个命令  手动输入)

(7)、分别修改两台机器的keepalived.conf文件   [root@node1 /]# vi /etc/keepalived/keepalived.conf。

主nginx的keepalived.conf内容如下

! Configuration File for keepalived
global_defs {
   notification_email {
     test@163.com
   }
   notification_email_from keepalived@localhost 
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_MASTER
}
vrrp_script chk_http_port {
script "/usr/local/java/check_nginx_pid.sh"  #监控nignx服务的脚本文件
interval 2                           #(检测脚本执行的间隔)
weight 2
}
vrrp_instance VI_1 {
   state MASTER
    interface eth1   #这个要写机器的网卡名称
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
}
track_script {
chk_http_port            #(调用检测脚本)
}
    virtual_ipaddress {
        192.168.52.100  #虚拟ip地址
    }
}
 

备nginx的keepalived.conf内容如下

! Configuration File for keepalived
global_defs {
   notification_email {
     test@163.com
   }
   notification_email_from keepalived@localhost 
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_BACKUP
}
vrrp_script chk_http_port {
script "/usr/local/java/check_nginx_pid.sh"
interval 2                           #(检测脚本执行的间隔)
weight 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth1   #这个要写机器的网卡名称
    virtual_router_id 51
    priority 90    #要小于主的值
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
}
track_script {
chk_http_port            #(调用检测脚本)
}
    virtual_ipaddress {
        192.168.52.100
    }
}

(8)、在两台机器的/usr/local/java 的目录下建一个check_nginx_pid.sh文件  文件内容如下

#!/bin/bash
A=`ps -C nginx --no-header |wc -l`        
if [ $A -eq 0 ];then                            
      /usr/local/nginx/sbin/nginx        
      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then  
              killall keepalived                    
      fi
fi
(9)、测试  

依次启动两个tomcat=》启动两个nginx=》启动两个keepalived  

keepalived启动命令    service keepalived start | stop |restart  依次是启动  停止  重启keepalived

启动keepalived   输入命令 ip a 查看主机上是否有虚拟ip 192.168.52.100  如下图

通过虚拟ip192.168.52.100/test访问,看页面是不是轮询两个tomcat

将主机的nginx进程kill掉   通过虚拟ip192.168.52.100/test访问,看页面是不是还能轮询两个tomcat

 

ok!!!!!!

转载于:https://my.oschina.net/xiaozhou18/blog/785346

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值