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