单点登录集群安装教程

扫码关注公众号:Java 技术驿站

发送:vip
将链接复制到本浏览器,永久解锁本站全部文章

【公众号:Java 技术驿站】 【加作者微信交流技术,拉技术群】

在开发中的开源项目JeePlatform:https://github.com/u014427391/jeeplatform
欢迎start(s收藏),打算集成单点登录到自己的开源项目里,所以先搭建环境

【集群简介】
使用nginx作为负载均衡,使用redis存储tomcat session,来实现集群中tomcat session的共享,使用redis作为cas ticket的仓库,来实现集群中cas ticket的一致性。

20200801001617\_1.png

【安装教程】
【keepalived安装】
下载keepalived到/usr/local/src

    tar -xzvf keepalived-1.2.19.tar.gz
    cd /usr/local/src/keepalived-1.2.19

配置

    ./configure --prefix=/usr/local/keepalived

编译

    make && make install

复制建立服务启动脚本,以便使用service命令控制之:

    cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
    chmod +x /etc/init.d/keepalived
    cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
    mkdir /etc/keepalived
    cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
    cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

启动keepalived

    service keepalived start|stop

【nginx安装】
nginx安装之前要先安装pcre、openssl、zlib

注意:./configure --prefix=/usr/local/keepalived configure:error:!!!
OpenSSL is not properly installed on your system. !!! !!! Can not
include OpenSSL headers files.
解决方法:安装openssl,同时pcre也一起安装一下,gcc、zlib没有安装也可以安装一下

    yum -y install pcre pcre-devel openssl openssl-devel zlib* gcc

解压
下载nginx到/usr/local/src

    tar -xzvf nginx-1.11.4.tar.gz
    cd nginx-1.11.4

执行配置文件

    ./configure

编译

    make && make install

启动

    cd /usr/local/nginx/sbin
    ./nginx

重启

    cd /usr/local/nginx/sbin
    ./nginx -s reload

检验配置文件是否正确
检验:

    ps -ef|grep nginx
    /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

或者

    cd /usr/local/nginx/sbin
    ./nginx -t

【Tomcat集群】
tar -xzvf apache-tomcat-7.0.82.tar.gz
cp -r apache-tomcat-7.0.82 tomcat2
mv apache-tomcat-7.0.82 tomcat1
修改其中一个tomcat的配置文件:vi conf/server.xml

改为 8006

创建tomcat应用文件夹
mkdir /opt/tomcat1/webapps/www
mkdir /opt/tomcat2/webapps/www

在www文件夹上传index.jsp测试文件

    <%@ page language="java" %>
    <html>
      <head><title>Tomcat1</title></head>
      <body>
        | SessionID|<%=session.getId()%>|
| :-----: | :-----: | 
| SessionID | <%=session.getId()%> | 
| Createdon | <%=session.getCreationTime()%> | 

      </body>
    </html>
    sessionID:<%=session.getId()%>
    <br>
    SessionIP:<%=request.getServerName()%>
    <br>
    SessionPort:<%=request.getServerPort()%>
    <%
    out.println("This is Tomcat Server 1");
    %>

访问Tomcat1:http://ip1:8080/www/index.jsp,测试是否成功
同理,在tomcat2的www文件夹里也上传index.jsp测试文件

    <%@ page language="java" %>
    <html>
      <head><title>Tomcat2</title></head>
      <body>
        | SessionID|<%=session.getId()%>|
| :-----: | :-----: | 
| SessionID | <%=session.getId()%> | 
| Createdon | <%=session.getCreationTime()%> | 

      </body>
    </html>
    sessionID:<%=session.getId()%>
    <br>
    SessionIP:<%=request.getServerName()%>
    <br>
    SessionPort:<%=request.getServerPort()%>
    <%
    out.println("This is Tomcat Server 2");
    %>

访问Tomcat2:http://ip2:8081/www/index.jsp
给Tomcat启动文件添加权限

    cd /opt/tomcat1/bin && chmod u+x *.sh
    cd /opt/tomcat2/bin && chmod u+x *.sh

cd到tomcat的bin目录下面,启动
./startup.sh

【Redis安装】
因为RocketMQ是基于Java开发的,所以安装RocketMQ之前,我们需要先安装JDK,因为服务器一般采用Linux,所以本博客只介绍基于Linux系统的教程
1.在/usr/目录下创建java目录
mkdir /usr/java
进入java目录
cd /usr/java
2.下载jdk到/usr/java目录,然后tar解压(可以使用xftp在本地下载jdk,或者使用命令curl -O url下载)
tar -zxvf jdk-8u102-linux-x64.tar.gz
3.设置环境变量vi编辑
vi /etc/profile
profile文件加入如下配置,如何按esc退出,:wq!保持

    export JAVA_HOME=/usr/java/jdk1.8.0_102
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib

让修改生效
source /etc/profile
验证jdk有效性
java -version
假如系统有安装yum,就可以直接使用yum install java-1.7.0-openjdk下载jdk
设置环境变量,其它操作同上

    export JAVA_HOME=/usr/java/jdk1.8.0_102
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib

然后开始Redis安装
下载文件:
wget http://download.redis.io/releases/redis-3.2.8.tar.gz
解压
tar xzf redis-3.2.8.tar.gz

cd redis-3.2.8

编译:make

如果遇到以下截图中的报错,将make改为make MALLOC=libc;

2020080100168\_2.png

可手动拷贝redis-server、redis-cli、redis-check-aof、redis-check-dump等至/usr/local/bin目录下,也可执行make install
Redis配置
负责初始化文件到/etc/rc.d/init.d/redis
cp /usr/local/src/redis/utils/redis_init_script /etc/rc.d/init.d/redis

chmod +x /etc/init.d/redis

    mkdir -p/etc/redis/
    cp redis.conf /etc/redis/6379.conf
    #!/bin/sh 
    #添加改配置
    #chkconfig: 2345 80 90 
    # Simple Redis init.d script conceived to work on Linux systems 
    # as it does use of the /proc filesystem. 

    REDISPORT=6379
    #修改Redis-server路径 
    EXEC=/usr/local/redis/bin/redis-server 
    #修改Redis-cli路径
    CLIEXEC=/usr/local/redis/bin/redis-cli 

    PIDFILE=/var/run/redis_${REDISPORT}.pid 
    CONF="/etc/redis/${REDISPORT}.conf" 

    case "$1" in 
        start) 
            if [ -f $PIDFILE ] 
            then 
                    echo "$PIDFILE exists, process is already running or crashed" 
            else 
                    echo "Starting Redis server..." 
                    $EXEC $CONF & #加入&符号,使Redis服务后台运行
            fi 
            ;; 
        stop) 
            if [ ! -f $PIDFILE ] 
            then 
                    echo "$PIDFILE does not exist, process is not running" 
            else 
                    PID=$(cat $PIDFILE) 
                    echo "Stopping ..." 
                    $CLIEXEC -p $REDISPORT shutdown 
                    while [ -x /proc/${PID} ] 
                    do 
                        echo "Waiting for Redis to shutdown ..." 
                        sleep 1 
                    done 
                    echo "Redis stopped" 
            fi 
            ;; 
        *) 
            echo "Please use start or stop as first argument" 
            ;; 
    esac 
     注意:添加&符号的作用是使Redis服务后台运行,否则,启动Redis服务时,占据在前台,占用了主用户界面,造成其它的命令执行不了

添加Redis服务
chkconfig --add redis

设置Redis全局
vi /etc/profile

export PATH="$PATH:/usr/local/redis/bin"

. /etc/profile

建议(本博客还是默认使用6379端口):将/etc/redis/6379.conf这个文件下载到本地,然后修改下面截图中的配置信息,端口号一定要修改,如果使用默认的端口号,放到阿里云上面会被植入木马,导致cpu一直100%;
2020080100168\_3.png
默认是只有127.0.0.1的ip能访问Redis服务器的,即本机,要远程使用必须注释下面一行
2020080100168\_4.png
添加日志文件路径,记得创建相关目录
设置一下Redis的密码
2020080100168\_5.png
Redis启动
service redis start

检测Redis是否启动

ps -ef | grep redis

Redis客户端使用

redis-cli

这里可以使用RedisDesktopManager客户端软件连接Redis服务器

【Nginx负载均衡】
cd /usr/local/nginx/conf,找到nginx.cong配置文件
在http{}里面加入,ip1就是你的一台服务器的ip,ip2同理

    upstream  mynginxserver{
    server ip1:8080 weight=1 max_fails=1 fail_timeout=10s;
    server ip2:8081 weight=2 max_fails=1 fail_timeout=10s;
    }

upstream可以自己定义名称

然后再http{}的server{}里修改,加入proxy_pass

    location / {
            proxy_pass http://mynginxserver;
                root   html;
                index  index.html index.htm index.jsp;
            }

然后重启nginx
重启
cd /usr/local/nginx/sbin
./nginx -s reload

这时就可以实现nginx反向代理了
访问Tomcat1:http://ip1:8080/www/index.jsp
访问Tomcat2:http://ip2:8081/www/index.jsp
访问nginx代理的tomcat集群:http://ip1/www/index.jsp

刷新页面发现,tomcat1和tomcat2的页面会切换,但是sessionID是会变的,然后我们实现基于Redis的会话共享

【Redis会话共享】
下载实现Redis+Tomcat会话共享的jar,commons-logging-1.2.jar、commons-pool2-2.4.2.jar、jedis-2.8.2.jar、tomcat-redis-session-manage-tomcat7.jar、tomcat-juli.jar、tomcat-juli-adapters.jar
copy这些jar到tomcat的lib文件夹下面,再将tomcat-juli.jar、tomcat-juli-adapters.jar放在bin文件夹下面
在tomcat的conf的context.xml的 里加入如下配置

    <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />    
        <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"    
                 host="127.0.0.1"    
                 port="6379"   
                 database="0"
                 password="redis密码"
                 maxInactiveInterval="60" /> 

刷新页面发现,tomcat1和tomcat2的页面会切换,但是sessionID的不变的,说明Session共享实现了

参考教程:

单点登录集群:https://www.cnblogs.com/zhengbin/p/5488415.html
Redis安装教程:http://blog.csdn.net/ludonqin/article/details/47211109
Tomcat+Nginx+Redis会话共享实现:http://blog.csdn.net/grhlove123/article/details/48047735
Tomcat+Nginx+Redis实现负载均衡、会话共享:
https://www.cnblogs.com/zhrxidian/p/5432886.html


来源:https://www.cnblogs.com/mzq123

赞(0) 打赏
版权归原创作者所有,任何形式的转载请联系博主:daming_90:Java 技术驿站 » 单点登录集群安装教程

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏