Centos7部署Nginx負載均衡Tomcat服務(wù)器及session共享架構(gòu)
往日精選文章最中肯的Redis規(guī)范全在這了Redis 高級面試題 學會這些還怕進不了大廠?
Redis中緩存雪崩、緩存穿透等問題的解決方案
掌握Redis主從復(fù)制、哨兵、Cluster三種集群模式
2020 年最新版 68 道Redis面試題,收藏起來備用!
精選文章正文
負載均衡
負載均衡建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,它提供了一種廉價有效透明的方法擴展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性。
負載均衡(Load Balance)其意思就是分攤到多個操作單元上進行執(zhí)行,例如Web服務(wù)器、FTP服務(wù)器、企業(yè)關(guān)鍵應(yīng)用服務(wù)器和其它關(guān)鍵任務(wù)服務(wù)器等,從而共同完成工作任務(wù)
session共享
Session 是客戶端與服務(wù)器通訊會話跟蹤技術(shù),服務(wù)器與客戶端保持整個通訊的會話基本信息
由于負載均衡會把任務(wù)分攤到不同的機器上,因此當用戶進行頁面刷新時會從機器A跳轉(zhuǎn)到機器B,此時用戶所進行的所有操作數(shù)據(jù)可能會丟失,因此需要通過集群的session共享機制來實現(xiàn)數(shù)據(jù)跟蹤
前期準備
準備Centos7服務(wù)器,同步系統(tǒng)時間,配置IP地址和hostname,關(guān)閉防火墻和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
從官網(wǎng)下載yum源并安裝Nginx
[root@localhost ~]# yum install nginx -y部署redis
#yum安裝redis
[root@localhost ~]# yum install redis -y
#配置
#設(shè)定為后臺守護進程方式運行
daemonize yes
#設(shè)定登錄密碼(可選)
masterauth "your_password"
#啟動服務(wù)
[root@localhost ~]# systemctl start redis部署Tomcat集群
部署tomcat1
從Tomcat官網(wǎng)下載Tomcat7壓縮包并解壓
[root@localhost ~]# tar -zxvf apache-tomcat-7.0.104.tar.gz -C /usr/local/tomcat-7在/usr/local/tomcat-7/lib文件夾中添加三個jar包實現(xiàn)連接redis和session共享
commons-pool-1.6.jar
jedis-2.0.0.jar
tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar配置服務(wù)啟動文件
[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
WEB-INF/web.xml
WEB-INF/tomcat-web.xml
${catalina.base}/conf/web.xml
host="127.0.0.1"
port="6379"
#redis有設(shè)置密碼登錄則需要填寫密碼
password="your_password"
database="0"
maxInactiveInterval="60" />
編寫讀取redis緩存文件
[root@localhost ~]# vi /usr/local/tomcat-7/webapps/ROOT/session.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
shared session
session id=<%=session.getId()%>
tomcat 1
啟動服務(wù)
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start tomcat7部署tomcat2
#復(fù)制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
#修改三處端口號
address="::1"
port="8019"
redirectPort="8443" />配置服務(wù)啟動文件
[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"%>
shared session
session id=<%=session.getId()%>
tomcat 2
修改主頁顯示以示區(qū)分
[root@localhost ~]# vi /usr/local/tomcat-7-8888/webapps/ROOT/index.jsp
啟動服務(wù)
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start tomcat7-8888部署tomcat3
#復(fù)制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
#修改三處端口號
address="::1"
port="8029"
redirectPort="8443" />配置服務(wù)啟動文件
[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"%>
shared session
session id=<%=session.getId()%>
tomcat 3
修改主頁顯示以示區(qū)分
[root@localhost ~]# vi /usr/local/tomcat-7-9999/webapps/ROOT/index.jsp
啟動服務(wù)
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start tomcat7-9999配置Nginx負載均衡
[root@localhost ~]# vi /etc/nginx/conf.d/default.conf
#配置tomcat集群
upstream serverpool{
#默認情況下通過輪詢方式來調(diào)用tomcat集群
server localhost:8080;
server localhost:8888;
server localhost:9999;
}
#配置服務(wù)
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://serverpool/;
}
}啟動服務(wù)
[root@localhost ~]# systemctl start nginx測試驗證
驗證負載均衡
瀏覽器訪問http://ip
點擊刷新
再次點擊刷新
測試session共享
瀏覽器訪問http://ip/session.jsp
點擊刷新
再次點擊刷新
查看redis數(shù)據(jù)庫記錄
[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"
