PS:建議將全部文件下載後上傳至/usr/local/src ;若無其餘說明,本教程全部操做均以/usr/local/src做爲起手目錄html
tar -zxvf redis-3.2.8.tar.gz cd redis-3.2.8 make
建議安裝後, 將redis移動到/usr/local/redis3.2或類似的好記的目錄,方便後續操做java
安裝後查看是否安裝成功linux
cd src ./redis-server ../redis.conf
具體參考: redis安裝|菜鳥教程nginx
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz tar zxvf pcre-8.35.tar.gz cd pcre-8.35 ./configure make && make install tar -zxvf nginx-1.10.3.tar.gz cd nginx-1.10.3 ./confignre --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35 make && make install
安裝完成後,進入sbin目錄, 輸入 nginx -s start
默認端口80,嘗試訪問c++
nginx源碼安裝較爲複雜,參考網上完整安裝教程: Nginx安裝配置 | 菜鳥教程git
tar -zxvf apache-tomcat-8.0.43.zip cd apache-tomcat-8.0.43 cd bin ./startup.sh
解壓即安裝,啓動後默認端口爲8080, 自行測試server是否正常開啓,若失敗,嘗試如下命令github
systemctl stop firewalld systemctl stop iptabled
mv apache-tomcat-8.0.43 /usr/local/tomcat8/8081 cp /usr/local/tomcat8/8081 /usr/local/tomcat8/8082
更改關閉端口,例如8005->8015web
<Server port="8005" shutdown="SHUTDOWN"> .....
更改啓動端口,例如8080->8081redis
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; upstream tomcatcluster{ server 127.0.0.1:8081 weight=1; server 127.0.0.1:8082 weight=1; } server { listen 80; server_name localhost; charset utf-8; #access_log logs/host.access.log main; location / { proxy_pass http://tomcatcluster; proxy_redirect default; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
其中核心是apache
upstream tomcatcluster{
server 127.0.0.1:8081 weight=1;
server 127.0.0.1:8082 weight=1;
}
定義一個upstream 標識爲tomcatcluster;
server:定義一個服務器
ip:port:指定URL
weight:權重, 越大
location / {
proxy_pass http://tomcatcluster;
proxy_redirect default;
}
http:// 後接upstream指定的標識 ,如 tomcatcluster
進入nginx目錄, 好比個人/usr/local/nginx
cd /usr/local/nignx cd sbin ./nginx -s start
啓動前可以使用nignx -t
檢驗配置文件是否錯誤.
瀏覽器訪問80端口, 若無心外, 則顯示tomcat的歡迎界面,因而爲tomcat添加項目
cd /usr/local/tomcat8/8081 cd webapps/ROOT rm -rf * vi index.jsp
輸入如下內容:
<html> <body> <h1>This is tomcat 1 , sessionId: <%=session.getId()%></h1> <% session.setAttribute("aa","guddqs"); session.setAttribute("bb","bbgudqs"); %> </body> </html>
相似的修改8082, 要在jsp上區分出是哪一個tomcat服務
修改後,屢次刷新頁面, 輪次出現2個tomcat的頁面. 至此nginx+tomcat負載均衡搭建完畢
PS: 本教程採用tomcat8, 並使用國外某大佬github項目, 對於tomcat7須要另外一個redis-session-manager.jar
unzip TomcatRedisSessionManager-1.1.1.zip cd TomcatRedisSessionManager-1.1.1 ls -l total 740 -rw-r--r--. 1 root root 61829 Mar 19 2016 commons-logging-1.2.jar -rw-r--r--. 1 root root 111892 Mar 19 2016 commons-pool2-2.4.1.jar -rw-r--r--. 1 root root 533252 Feb 21 2016 jedis-2.8.0.jar -rw-r--r--. 1 root root 1850 Nov 26 00:30 ReadMe.txt -rw-r--r--. 1 root root 324 Nov 25 23:56 RedisDataCache.properties -rw-r--r--. 1 root root 28807 Nov 26 00:49 TomcatRedisSessionManager-1.1.1.jar
其中4個jar包須要複製到tomcat的lib目錄下
cp commons-logging-1.2.jar /usr/local/tomcat/8081/lib cp commons-pool2-2.4.1.jar /usr/local/tomcat/8081/lib .......
RedisDataCache.properties須要複製到tomcat的conf下
cp RedisDataCache.properties /usr/local/tomcat/8081/conf
進入tomcat的conf目錄, 修改 context.xml文件
再<Context>
節點下加入
<Valve className="com.r.tomcat.session.management.RequestSessionHandlerValve" /> <Manager className="com.r.tomcat.session.management.RequestSessionManager" />
而後修改以前複製到conf下的RedisDataCache.properties文件,切記不可修改文件名
vi RedisDataCache.properties
單redis配置以下:
redis.hosts=127.0.0.1:6379 # Redis Password redis.password= # set true to enable redis cluster mode redis.cluster.enabled=false # Redis database (default 0) #redis.database=0 # Redis connection timeout (default 2000) #redis.timeout=2000
redis cluster模式配置文件以下:
redis.hosts=127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002,127.0.0.1:3003,127.0.0.1:3004,127.0.0.1:3005 # Redis Password redis.password= # set true to enable redis cluster mode redis.cluster.enabled=true # Redis database (default 0) #redis.database=0 # Redis connection timeout (default 2000) #redis.timeout=2000
PS: redis.password留空則等於無密碼
相似的修改8082下的tomcat配置文件, 複製jar包, RedisDataCache.properties
最後重啓2個tomcat, 訪問80端口, 刷新頁面, 觀察頁面顯示是否達到 2個不一樣的tomcat服務單具備相同的session id
使用nginx反向代理到2個tomcat服務器, 僅需修改tomcat配置不一樣的端口,以及爲nginx.conf添加upstream配置並將反向代理指向upstream便可 而添加tomcat的session共享則利用了tomcat的提供的外部session存儲機制接口,而實現則使用了redis做爲儲存源.從而實現了session共享.