1. 程式人生 > >Tengine(nginx) 搭建Tomcat集群

Tengine(nginx) 搭建Tomcat集群

dba 添加 default 穩定 contex 拷貝 內容 font tom

    好久沒有更新學習的內容了,就是得強迫自己寫點東西 記錄自己的學習,才能更好的進步!

Tengine是由淘寶網發起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網站的需求,添加了很多高級功能和特性。Tengine的性能和穩定性已經在大型的網站如淘寶網,天貓商城等得到了很好的檢驗。它的最終目標是打造一個高效、穩定、安全、易用的Web平臺。

    首先將Tengin上傳到Linux服務器上,然後進行解壓

  1. 安裝依賴 yum -y install gcc openssl-devel pcre-devel zlib-devel
  2. 編譯三步走 ./configure \

--prefix=/opt/sxt/soft/tengine-2.1.0/ \

--error-log-path=/var/log/nginx/error.log \

--http-log-path=/var/log/nginx/access.log \

--pid-path=/var/run/nginx/nginx.pid \

--lock-path=/var/lock/nginx.lock \

--with-http_ssl_module \

--with-http_flv_module \

--with-http_stub_status_module \

--with-http_gzip_static_module \

--http-client-body-temp-path=/var/tmp/nginx/client/ \

--http-proxy-temp-path=/var/tmp/nginx/proxy/ \

--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \

--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \

--http-scgi-temp-path=/var/tmp/nginx/scgi \

--with-pcre

make && make install

  1. 註意:一定要從windows復制粘貼過來

/etc/init.d下面建立

nginx文件,粘貼內容,修改路徑

  1. 修改ngxin文件執行權限
  2. 配置chkconfig

  然後使用命令 service nginx start

出現如下的效果圖就是配置成功

技術分享圖片

準備兩臺Linux 每個Linux都安裝一個tomcat

在Nginx上配置反向代理

1.反向代理

首先在兩臺服務器分別配置並啟動tomcat,修改tomcat首頁為tomcat1和tomcat2

配置反向代理和upstream

upstream backend {

server 192.168.2.141:8080 ;

server 192.168.2.142:8080;

}

server {

location / {

proxy_pass http://backend;

}

}

從上面可以看出定義一組服務器。 這些服務器可以監聽不同的端口。 而且,監聽在TCPUNIX域套接字的服務器可以混用

訪問分別顯示tomcat1和tomcat2

兩個tomcat出現的問題

Session共享
– 首先我們應該明白,為什麽要實現共享,如果你的網站是存放在一個
機器上,那麽是不存在這個問題的,因為會話數據就在這臺機器,但
是如果你使用了負載均衡把請求分發到不同的機器呢?這個時候會話id
在客戶端是沒有問題的,但是如果用戶的兩次請求到了兩臺不同的機
器,而它的session數據可能存在其中一臺機器,這個時候就會出現取
不到session數據的情況,於是session的共享就成了一個問題

解決Session共享的方法

技術分享圖片

memcached緩存方案安裝memcached

1.拋出Session一致性問題

2.安裝memcached緩存數據庫

通過命令安裝 yum –y install memcached

    通過telnet測試memcached數據庫

3.tomcat配置名稱session一致性配置

jar包拷貝到tomcatlib

技術分享圖片

在tomcatserver.xml配置jvmRoute

Linux1

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">

Linux2

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">

在context.xmlContext配置Manager

Linux1

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes="n1:192.168.2.141:11211"

sticky="false"

lockingMode="auto"

sessionBackupAsync="false"

requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

/>

Linux2 的配置如上

4.index.jsp配置

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

SessionID:<%=session.getId()%>

<br/>

SessionIP:<%=request.getServerName()%>

<br/>

<h1>tomcat2 page</h1>

配置好後 記得刷新 Nginx和 重啟tomcat

然後在瀏覽器訪問 就能看見訪問不同的tomcat但是Session一致。

Tengine(nginx) 搭建Tomcat集群