Centos7部署Nginx負載均衡Tomcat服務器及session共享架構

簡介

負載均衡
負載均衡建立在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。
負載均衡(Load Balance)其意思就是分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務
session共享
Session 是客戶端與服務器通訊會話跟蹤技術,服務器與客戶端保持整個通訊的會話基本信息
由於負載均衡會把任務分攤到不同的機器上,因此當用戶進行頁面刷新時會從機器A跳轉到機器B,此時用戶所進行的所有操作數據可能會丟失,因此需要通過集羣的session共享機制來實現數據跟蹤

前期準備

準備Centos7服務器,同步系統時間,配置IP地址和hostname,關閉防火牆和selinux
安裝openjdk

[root@localhost ~]# yum install java -y

#查看安裝情況
[root@localhost ~]# java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)

部署Nginx
從官網下載yum源並安裝Nginx

[root@localhost ~]# yum install nginx -y

部署redis

#yum安裝redis
[root@localhost ~]# yum install redis -y

#配置
#設定爲後臺守護進程方式運行
daemonize yes
#設定登錄密碼(可選)
masterauth "your_password"

#啓動服務
[root@localhost ~]# systemctl start redis

部署Tomcat集羣

部署tomcat1

從Tomcat官網下載Tomcat7壓縮包並解壓

[root@localhost ~]# tar -zxvf apache-tomcat-7.0.104.tar.gz -C /usr/local/tomcat-7

在/usr/local/tomcat-7/lib文件夾中添加三個jar包實現連接redis和session共享

commons-pool-1.6.jar
jedis-2.0.0.jar
tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar

配置服務啓動文件

[root@localhost ~]# vi /usr/lib/systemd/system/tomcat7.service 
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/usr/local/tomcat-7/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/local/tomcat-7
Environment=CATALINA_BASE=/usr/local/tomcat-7
ExecStart=/usr/local/tomcat-7/bin/startup.sh
ExecStop=/usr/local/tomcat-7/bin/shutdown.sh
User=root
Group=root
[Install]
WantedBy=multi-user.target

配置redis緩存

[root@localhost ~]# vi /usr/local/tomcat-7/conf/context.xml 
<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
    <!--配置Redis緩存-->
    <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
    <Manager className="com.radiadesign.catalina.session.RedisSessionManager"
    host="127.0.0.1"
    port="6379"
    #redis有設置密碼登錄則需要填寫密碼
    password="your_password"
    database="0"
    maxInactiveInterval="60" />
</Context>

編寫讀取redis緩存文件

[root@localhost ~]# vi /usr/local/tomcat-7/webapps/ROOT/session.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>shared session</title>
</head>
<body>
<br>session id=<%=session.getId()%>
<br>tomcat 1
</body>
</html>

啓動服務

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start tomcat7

部署tomcat2

#複製tomcat1文件夾
[root@localhost ~]# cp -r /usr/local/tomcat-7/ /usr/local/tomcat-7-8888/

修改配置文件

[root@localhost ~]# vi /usr/local/tomcat-7-8888/conf/server.xml
#修改三處端口號
<Server port="8015" shutdown="SHUTDOWN">
<Connector port="8888" protocol="HTTP/1.1"
<Connector protocol="AJP/1.3"
address="::1"
port="8019"
redirectPort="8443" />

配置服務啓動文件

[root@localhost ~]# vi /usr/lib/systemd/system/tomcat7-8888.service
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/usr/local/tomcat-7-8888/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/local/tomcat-7-8888
Environment=CATALINA_BASE=/usr/local/tomcat-7-8888
ExecStart=/usr/local/tomcat-7-8888/bin/startup.sh
ExecStop=/usr/local/tomcat-7-8888/bin/shutdown.sh
User=root
Group=root
[Install]
WantedBy=multi-user.target

修改讀取redis緩存的文件

[root@localhost ~]# vi /usr/local/tomcat-7-8888/webapps/ROOT/session.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>shared session</title>
</head>
<body>
<br>session id=<%=session.getId()%>
<br>tomcat 2
</body>
</html>

修改主頁顯示以示區分

[root@localhost ~]# vi /usr/local/tomcat-7-8888/webapps/ROOT/index.jsp
 <span id="nav-home"><a href="${tomcatUrl}">Home-7-8888</a></span>

啓動服務

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start tomcat7-8888

部署tomcat3

#複製tomcat1文件夾
[root@localhost ~]# cp -r /usr/local/tomcat-7/ /usr/local/tomcat-7-9999/

修改配置文件

[root@localhost ~]# vi /usr/local/tomcat-7-9999/conf/server.xml
#修改三處端口號
<Server port="8025" shutdown="SHUTDOWN">
<Connector port="9999" protocol="HTTP/1.1"
<Connector protocol="AJP/1.3"
address="::1"
port="8029"
redirectPort="8443" />

配置服務啓動文件

[root@localhost ~]# vi /usr/lib/systemd/system/tomcat7-9999.service
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/usr/local/tomcat-7-9999/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/local/tomcat-7-9999
Environment=CATALINA_BASE=/usr/local/tomcat-7-9999
ExecStart=/usr/local/tomcat-7-9999/bin/startup.sh
ExecStop=/usr/local/tomcat-7-9999/bin/shutdown.sh
User=root
Group=root
[Install]
WantedBy=multi-user.target

修改讀取redis緩存的文件

[root@localhost ~]# vi /usr/local/tomcat-7-9999/webapps/ROOT/session.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>shared session</title>
</head>
<body>
<br>session id=<%=session.getId()%>
<br>tomcat 3
</body>
</html>

修改主頁顯示以示區分

[root@localhost ~]# vi /usr/local/tomcat-7-9999/webapps/ROOT/index.jsp
 <span id="nav-home"><a href="${tomcatUrl}">Home-7-9999</a></span>

啓動服務

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start tomcat7-9999

配置Nginx負載均衡

[root@localhost ~]# vi /etc/nginx/conf.d/default.conf
#配置tomcat集羣
upstream serverpool{
#默認情況下通過輪詢方式來調用tomcat集羣
    server localhost:8080;
    server localhost:8888;
    server localhost:9999;
    }
#配置服務
server{
    listen 80;
    server_name localhost;
    location / {
    proxy_pass http://serverpool/;
    }
}

啓動服務

[root@localhost ~]# systemctl start nginx

測試驗證

驗證負載均衡
瀏覽器訪問http://ip
在這裏插入圖片描述
點擊刷新
在這裏插入圖片描述
再次點擊刷新
在這裏插入圖片描述
測試session共享
瀏覽器訪問http://ip/session.jsp
在這裏插入圖片描述
點擊刷新
在這裏插入圖片描述
再次點擊刷新
在這裏插入圖片描述
查看redis數據庫記錄

[root@localhost ~]# redis-cli
127.0.0.1:6379> auth "your_password"
OK
127.0.0.1:6379> ping 
PONG
127.0.0.1:6379> keys *
1) "C13930F70F4B33537E99140CFEDAC637"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章