單點(diǎn)登錄集群安裝教程

在開發(fā)中的開源項(xiàng)目JeePlatform:https://github.com/u014427391/jeeplatform
歡迎start(s收藏)拷淘,打算集成單點(diǎn)登錄到自己的開源項(xiàng)目里狱掂,所以先搭建環(huán)境

【集群簡介】
使用nginx作為負(fù)載均衡潜的,使用redis存儲(chǔ)tomcat session菱农,來實(shí)現(xiàn)集群中tomcat session的共享君编,使用redis作為cas ticket的倉庫媳荒,來實(shí)現(xiàn)集群中cas ticket的一致性究履。

這里寫圖片描述

【安裝教程】
【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

復(fù)制建立服務(wù)啟動(dòng)腳本滤否,以便使用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/

啟動(dòng)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顽聂,同時(shí)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

執(zhí)行配置文件

./configure

編譯

make && make install

啟動(dòng)

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

重啟

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

檢驗(yàn)配置文件是否正確
檢驗(yàn):

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
修改其中一個(gè)tomcat的配置文件:vi conf/server.xml

<Server port="8005"shutdown="SHUTDOWN"> 改為 8006 <Connector
port="8080"protocol="HTTP/1.1" 改為 8081 <Connector
port="8009"protocol="AJP/1.3" 改為 8010

創(chuàng)建tomcat應(yīng)用文件夾
mkdir /opt/tomcat1/webapps/www
mkdir /opt/tomcat2/webapps/www

在www文件夾上傳index.jsp測試文件

<%@ page language="java" %>
<html>
  <head><title>Tomcat1</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 1");
%>

訪問Tomcat1:http://ip1:8080/www/index.jsp紊搪,測試是否成功
同理,在tomcat2的www文件夾里也上傳index.jsp測試文件

<%@ page language="java" %>
<html>
  <head><title>Tomcat2</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 2");
%>

訪問Tomcat2:http://ip2:8081/www/index.jsp
給Tomcat啟動(dòng)文件添加權(quán)限

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

cd到tomcat的bin目錄下面全景,啟動(dòng)
./startup.sh

【Redis安裝】
因?yàn)镽ocketMQ是基于Java開發(fā)的耀石,所以安裝RocketMQ之前,我們需要先安裝JDK爸黄,因?yàn)榉?wù)器一般采用Linux滞伟,所以本博客只介紹基于Linux系統(tǒng)的教程
1.在/usr/目錄下創(chuàng)建java目錄
mkdir /usr/java
進(jìn)入java目錄
cd /usr/java
2.下載jdk到/usr/java目錄揭鳞,然后tar解壓(可以使用xftp在本地下載jdk,或者使用命令curl -O url下載)
tar -zxvf jdk-8u102-linux-x64.tar.gz
3.設(shè)置環(huán)境變量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
驗(yàn)證jdk有效性
java -version
假如系統(tǒng)有安裝yum,就可以直接使用yum install java-1.7.0-openjdk下載jdk
設(shè)置環(huán)境變量亩钟,其它操作同上

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

如果遇到以下截圖中的報(bào)錯(cuò)乓梨,將make改為make MALLOC=libc;

這里寫圖片描述

可手動(dòng)拷貝redis-server清酥、redis-cli扶镀、redis-check-aof、redis-check-dump等至/usr/local/bin目錄下焰轻,也可執(zhí)行make install
Redis配置
負(fù)責(zé)初始化文件到/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 & #加入&符號(hào)臭觉,使Redis服務(wù)后臺(tái)運(yùn)行
        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 
 注意:添加&符號(hào)的作用是使Redis服務(wù)后臺(tái)運(yùn)行,否則辱志,啟動(dòng)Redis服務(wù)時(shí)蝠筑,占據(jù)在前臺(tái),占用了主用戶界面荸频,造成其它的命令執(zhí)行不了

添加Redis服務(wù)
chkconfig --add redis

設(shè)置Redis全局
vi /etc/profile

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

. /etc/profile

建議(本博客還是默認(rèn)使用6379端口):將/etc/redis/6379.conf這個(gè)文件下載到本地菱肖,然后修改下面截圖中的配置信息客冈,端口號(hào)一定要修改旭从,如果使用默認(rèn)的端口號(hào),放到阿里云上面會(huì)被植入木馬场仲,導(dǎo)致cpu一直100%和悦;


這里寫圖片描述

默認(rèn)是只有127.0.0.1的ip能訪問Redis服務(wù)器的,即本機(jī)渠缕,要遠(yuǎn)程使用必須注釋下面一行


這里寫圖片描述

添加日志文件路徑鸽素,記得創(chuàng)建相關(guān)目錄
設(shè)置一下Redis的密碼
這里寫圖片描述

Redis啟動(dòng)
service redis start

檢測Redis是否啟動(dòng)

ps -ef | grep redis

Redis客戶端使用

redis-cli

這里可以使用RedisDesktopManager客戶端軟件連接Redis服務(wù)器

【Nginx負(fù)載均衡】
cd /usr/local/nginx/conf,找到nginx.cong配置文件
在http{}里面加入,ip1就是你的一臺(tái)服務(wù)器的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

這時(shí)就可以實(shí)現(xiàn)nginx反向代理了
訪問Tomcat1:http://ip1:8080/www/index.jsp
訪問Tomcat2:http://ip2:8081/www/index.jsp
訪問nginx代理的tomcat集群:http://ip1/www/index.jsp

刷新頁面發(fā)現(xiàn),tomcat1和tomcat2的頁面會(huì)切換燕差,但是sessionID是會(huì)變的遭笋,然后我們實(shí)現(xiàn)基于Redis的會(huì)話共享

【Redis會(huì)話共享】
下載實(shí)現(xiàn)Redis+Tomcat會(huì)話共享的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的<Context></Context>里加入如下配置

<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" /> 

刷新頁面發(fā)現(xiàn)质和,tomcat1和tomcat2的頁面會(huì)切換稳摄,但是sessionID的不變的,說明Session共享實(shí)現(xiàn)了

參考教程:

單點(diǎn)登錄集群:https://www.cnblogs.com/zhengbin/p/5488415.html
Redis安裝教程:http://blog.csdn.net/ludonqin/article/details/47211109
Tomcat+Nginx+Redis會(huì)話共享實(shí)現(xiàn):http://blog.csdn.net/grhlove123/article/details/48047735
Tomcat+Nginx+Redis實(shí)現(xiàn)負(fù)載均衡饲宿、會(huì)話共享:
https://www.cnblogs.com/zhrxidian/p/5432886.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末秩命,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子褒傅,更是在濱河造成了極大的恐慌弃锐,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件殿托,死亡現(xiàn)場離奇詭異霹菊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)支竹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門旋廷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人礼搁,你說我怎么就攤上這事饶碘。” “怎么了馒吴?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵扎运,是天一觀的道長。 經(jīng)常有香客問我饮戳,道長豪治,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任扯罐,我火速辦了婚禮负拟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘歹河。我一直安慰自己掩浙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布秸歧。 她就那樣靜靜地躺著厨姚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寥茫。 梳的紋絲不亂的頭發(fā)上遣蚀,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼芭梯。 笑死险耀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的玖喘。 我是一名探鬼主播甩牺,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼累奈!你這毒婦竟也來了贬派?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤澎媒,失蹤者是張志新(化名)和其女友劉穎搞乏,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體戒努,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡请敦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了储玫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侍筛。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖撒穷,靈堂內(nèi)的尸體忽然破棺而出匣椰,到底是詐尸還是另有隱情,我是刑警寧澤端礼,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布禽笑,位于F島的核電站,受9級(jí)特大地震影響齐媒,放射性物質(zhì)發(fā)生泄漏蒲每。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一喻括、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贫奠,春花似錦唬血、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谢肾,卻和暖如春腕侄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國打工冕杠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留微姊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓分预,卻偏偏與公主長得像兢交,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子笼痹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容