Tomcat集群包括單機(jī)多部署應(yīng)用和多機(jī)單部署應(yīng)用兩種,在本文當(dāng)中使用的是單機(jī)多部署的方式。
多機(jī)部署正常部署即可,不需要額外做修改,需要注意多是,多機(jī)部署一般要求每個(gè)服務(wù)器之安裝一個(gè)tomcat,并且他們之間是網(wǎng)絡(luò)互通的,此時(shí)才可以進(jìn)行集群。
單機(jī)部署比較繁瑣,下面進(jìn)行說(shuō)明。
一.Tomcat單機(jī)部署多應(yīng)用
1.Mac/Linux
#1.在配置文件(mac的~/.bash_profile,linux的/etc/profile)配置如下的環(huán)境變量:
export CATALINA_BASE=/Users/codesheep/application/tomcat-9.0.16-2
export CATALINA_HOME=/Users/codesheep/application/tomcat-9.0.16-2
export TOMCAT_HOME=/Users/codesheep/application/tomcat-9.0.16-2
export CATALINA_3_BASE=/Users/codesheep/application/tomcat-9.0.16-3
export CATALINA_3_HOME=/Users/codesheep/application/tomcat-9.0.16-3
export TOMCAT_3_HOME=/Users/codesheep/application/tomcat-9.0.16-3
#2.修改tomcat配置文件(配置要導(dǎo)入的環(huán)境)
####第一個(gè)tomcat不變
####打開(kāi)第二個(gè)tomcat目錄下的bin下catalina.sh,在該文件當(dāng)中找到# OS specific support. $var_must_be set to either true or false.
在下面編輯
export CATALINA_BASE=$CATALINA_3_BASE
export CATALINA_HOME=$CATALINA_3_HOME
####如果不配置此項(xiàng)的話,可能造成在tomcat2啟動(dòng)時(shí)加載的配置信息時(shí)tomcat1的,所以在進(jìn)行Tomcat集群的時(shí)候一般都要進(jìn)行添加。
#3.打開(kāi)第二個(gè)tomcat的conf目錄下server.xml,修改3端口
server的port端口,shutdown家1000即可
connector 的port,8080---9080,URIEncoding="UTF-8"
connector 的port,protocol="AJP/1.3",8009--9009
#4.分別進(jìn)行入兩個(gè)tomcat的bin目錄,執(zhí)行startup.sh
#5.檢查兩個(gè)tomcat的啟動(dòng)日志
#6.訪問(wèn)8080,9080

${tomcat}/bin/catalina.sh

Server端口

Connector端口

Conncector端口
2.Windows下
1.環(huán)境變量當(dāng)中添加
export CATALINA_BASE=C:\tomcat-9.0.16-2
export CATALINA_HOME=C:\tomcat-9.0.16-2
export TOMCAT_HOME=C:\tomcat-9.0.16-2
export CATALINA_3_BASE=C:\tomcat-9.0.16-3
export CATALINA_3_HOME=C:\tomcat-9.0.16-3
export TOMCAT_3_HOME=C:\tomcat-9.0.16-3
2.修改tomcat配置文件
第一個(gè)不變,第二個(gè),打開(kāi)第二個(gè)tomcat目錄下的bin下catalina.bat,然后和mac下進(jìn)行同樣的操作即可。
后面的不走都一樣。
二.nginx負(fù)載均衡配、常用策略、場(chǎng)景及特點(diǎn)
1.輪訓(xùn)(默認(rèn),可以看成權(quán)重是1)
優(yōu)點(diǎn):實(shí)現(xiàn)簡(jiǎn)單
缺點(diǎn):沒(méi)有考慮每臺(tái)服務(wù)器的處理能力
upstream www.happymmall.com{
server www.happymmall.com:8080;
server www.happymmall.com:9080;
}
2.權(quán)重(最常用,只代表訪問(wèn)的概率,不一定是次數(shù))
優(yōu)點(diǎn):考慮了每臺(tái)服務(wù)器的處理能力,訪問(wèn)9080的概率是8080的1.5倍。
upstream www.happymmall.com{
server www.happymmall.com:8080 weight=10;
server www.happymmall.com:9080 weight=15;
}
3.ip hash
優(yōu)點(diǎn):可以實(shí)現(xiàn)同一用戶訪問(wèn)同一臺(tái)服務(wù)器
缺點(diǎn):ip hash不一定平均
upstream www.happymmall.com{
ip_hash;
server www.happymmall.com:8080 ;
server www.happymmall.com:9080 ;
}
4.url hash(需要安裝一個(gè)第三方的插件)
優(yōu)點(diǎn):實(shí)現(xiàn)同一個(gè)服務(wù)訪問(wèn)同一個(gè)服務(wù)器
缺點(diǎn):url hash請(qǐng)求不平均,請(qǐng)求頻繁的url會(huì)請(qǐng)求到同一服務(wù)器上面
upstream www.happymmall.com{
server www.happymmall.com:8080 ;
server www.happymmall.com:9080 ;
hash $request_uri;
}
5. fair(第三方)
特點(diǎn):按照后端服務(wù)器的響應(yīng)時(shí)間來(lái)進(jìn)行分配,響應(yīng)時(shí)間短的優(yōu)先分配
upstream www.happymmall.com{
server www.happymmall.com:8080 ;
server www.happymmall.com:9080 ;
fair;
}

Nginx負(fù)載均衡擴(kuò)展
三.Nginx+tomcat搭建集群
1.使用輪訓(xùn)策略
1. 啟動(dòng)2個(gè)tomcat
2. 修改系統(tǒng)host,加域名
mac/linux:etc/hosts
windows: C:\Windows\System32\drivers\etc\hosts
3.ping 第二步添加的域名,驗(yàn)證host生效
4.編輯nginx的配置文件
在${ngnix}/conf/ngnix.conf配置文件下,在http節(jié)點(diǎn)下新增include vhost/*.conf;新增一個(gè)superzqbo.com.conf文件
upstream www.superzqbo.com{
server superzqbo.com:8080;
server superzqbo.com:9080;
}
server {
listen 80;
autoindex on;
server_name superzqbo.com;
access_log c:/access.log combined;
index index.html index.htm index.jsp index.php;
#error_page 404 /404.html;
location / {
proxy_pass http://www.test123.com;
add_header Access-Control-Allow-Origin *;
}
}
5.啟動(dòng)nginx:
#注意:nginx服務(wù)的默認(rèn)端口是80,不要修改

效果
2.使用權(quán)重的策略
此時(shí)如果在訪問(wèn)www.superzqbo.com/superzqbo.com則9080出現(xiàn)的概率明顯高于8080.
upstream www.superzqbo.com {
server www.superzqbo.com:8080 weight=1;
server www.superzqbo.com:9080 weight=5;
}
server {
listen 80;
autoindex on;
server_name superzqbo.com www.superzqbo.com;
access_log /usr/local/nginx/logs/access.log combined;
index index.html index.htm index.jsp index.php;
location / {
proxy_pass http://www.superzqbo.com;
}
}