国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

nginx+tomcat+memcached搭建服務(wù)器集群及負(fù)載均衡

2019-11-14 22:17:57
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
nginx+tomcat+memcached搭建服務(wù)器集群及負(fù)載均衡

  在實(shí)際項(xiàng)目中,由于用戶的訪問(wèn)量很大的原因,往往需要同時(shí)開(kāi)啟多個(gè)服務(wù)器才能滿足實(shí)際需求。但是同時(shí)開(kāi)啟多個(gè)服務(wù)又該怎么管理他們呢?怎樣實(shí)現(xiàn)session共享呢?下面就來(lái)講一講如何使用tomcat+nginx搭建服務(wù)器集群以及如何實(shí)現(xiàn)session共享。

環(huán)境:

apache-tomcat-6.0.29+apache-tomcat-6.0.29+jdk1.6+Win7(由于自己只是做了一個(gè)demo,j就沒(méi)有用到服務(wù)器系統(tǒng)了)

1.首先我們準(zhǔn)備兩個(gè)tomcat(tomcat1,tomcat2),并將端口修改為不一樣。我的tomcat1是8089,tomcat2是9089。修改端口的位置在tomcat文件的conf->server.xml文件的位置:

2.為了后面區(qū)分我們到底訪問(wèn)的是哪個(gè)tomcat,所以這里我們修改一下tomcat首頁(yè)的信息,在tomcat1文件夾下webapps->ROOT->index.html,在最前面我加上了<span style="color:red">this is tomcat    one</span>,同樣在tomcat2下添加<span style="color:red">this is tomcat two</span>。

3.接下來(lái)我們開(kāi)始準(zhǔn)備nginx。nginx也是一個(gè)服務(wù)器,這里我們主要是用來(lái)做代理和負(fù)載均衡的。當(dāng)我們下載完nginx直接解壓就可以用。要運(yùn)行nginx可以直接點(diǎn)擊nginx.exe,也可以使用命令的模式:start nginx啟動(dòng)nginx,nginx -s stop停止nginx。

4.啟動(dòng)nginx后,我們?cè)跒g覽器輸入127.0.0.1,出現(xiàn)如下界面就代表nginx已近啟動(dòng)了:

5.接下來(lái)我們來(lái)配置nginx來(lái)做代理服務(wù)器和負(fù)載均衡:

打開(kāi)nginx文件下的conf->nginx.conf文件,在hettp中添加

upstream 127.0.0.1{//這個(gè)127.0.0.1可以隨便取個(gè)名字    server 127.0.0.1:8088 weight=1; #服務(wù)器A    server 127.0.0.1:9088 weight=1; #服務(wù)器B}

在server中的location添加:

 PRoxy_pass  http://127.0.0.1;  #訪問(wèn)js,圖片等需要做代理

其他的現(xiàn)在不用配置,配置完了如下:

說(shuō)明:

  1)server后的ip即使tomcat的ip,weight表示權(quán)重,weight越大,對(duì)應(yīng)服務(wù)器被訪問(wèn)的概率越大,若是相等,幾個(gè)服務(wù)器輪流被訪問(wèn);

2)proxy_pass 后的http必須加上;

這是我們啟動(dòng)tomcat1,tomcat2,nginx,在瀏覽器中輸入127.0.0.1,然后刷新,這時(shí)我們會(huì)看到tomcat1和tomcat2的頁(yè)面交替顯示,這就表示nginx已經(jīng)負(fù)載了兩個(gè)tomcat,可以將請(qǐng)求轉(zhuǎn)發(fā)到不同的tomcat。

6.下面我們就來(lái)解決session的問(wèn)題了

這里需要將以下jar包放到tomcat的lib文件里面

這些jar包我已上傳,下載地址:http://files.VEVb.com/mouseIT/nginx%2Cmemcached%EF%BC%8Ctomcat%E9%9B%86%E7%BE%A4%E7%9A%84jar%E5%8C%85.rar

然后在tomcat的context.xml中添加以下數(shù)據(jù):

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"                      memcachedNodes="n1:127.0.0.1:11211"                      sticky="false"                      sessionBackupAsync="false"                      lockingMode="auto"                      requestUriIgnorePattern=".*/.(ico|png|gif|jpg|CSS|js)$"                      transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"                      />

如下:

為了實(shí)現(xiàn)session共享,這里我們還需要使用的memcached。

將下下來(lái)的memcached直接解壓,點(diǎn)擊memcached.exe。這是只有一個(gè)窗口,什么都看不見(jiàn),回車后輸入命令stats,看見(jiàn)如下表示正常:

為了測(cè)試,我們建一個(gè)web項(xiàng)目,記得要在web.xml的web-app中添加<distributable/> 這樣服務(wù)器才知道這是分布式的。

同時(shí)我們建立默認(rèn)的登陸頁(yè)面,內(nèi)容如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ page import="java.util.*" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>this is tomcat oneServer Info:<%String path = request.getContextPath();out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%><%  out.println("<br> ID " + session.getId()+"<br>");  // 如果有新的 Session 屬性設(shè)置  String dataName = request.getParameter("dataName");  if (dataName != null && dataName.length() > 0) {     String dataValue = request.getParameter("dataValue");     session.setAttribute(dataName, dataValue);  }  out.println("<b>Session 列表</b><br>");  System.out.println("============================");  Enumeration e = session.getAttributeNames();  while (e.hasMoreElements()) {     String name = (String)e.nextElement();     String value = session.getAttribute(name).toString();     out.println( name + " = " + value+"<br>");         System.out.println( name + " = " + value);   }%>  <form action="<%=path%>/login.jsp" method="POST">    名稱:<input type="text" size=20 name="dataName">     <br>    值:<input type="text" size=20 name="dataValue">     <br>    <input type="submit">   </form></body></html>

這個(gè)是在網(wǎng)上收的,具體的原理我就不再闡述了。

然后我們依次啟動(dòng)memcached->tomcat->nginx。注意一定要最先啟動(dòng)memcached,不然啟動(dòng)tomcat時(shí)會(huì)出錯(cuò)。

然后我們?cè)L問(wèn)127.0.0.1/tomcat下的web項(xiàng)目名

進(jìn)入主頁(yè)面后,我們輸入名稱和值,然后點(diǎn)擊提交(這時(shí)注意tomcat的窗口),我輸入的是abc,123,點(diǎn)擊提交后,tomcat1出現(xiàn)如下:

然后我們刷新瀏覽器,觀察tomcat2的窗口,也會(huì)出現(xiàn)上面的數(shù)據(jù):

這就表示tomcat2獲得了session的數(shù)據(jù),tomcat1,tomcat2實(shí)現(xiàn)了session共享。

今天總結(jié)的這些只是一個(gè)簡(jiǎn)單的應(yīng)用,還有很多的細(xì)節(jié)沒(méi)有說(shuō)。這些也是我才學(xué)會(huì)的。以后還有什么好的東西會(huì)繼續(xù)和大家分享,大家共同探討!


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 德令哈市| 固阳县| 凌源市| 开江县| 曲沃县| 邵阳县| 耒阳市| 安溪县| 休宁县| 新郑市| 宜兴市| 秦皇岛市| 兴化市| 无为县| 天镇县| 吴川市| 双桥区| 新蔡县| 静宁县| 辰溪县| 宜都市| 盘锦市| 凯里市| 绍兴县| 牡丹江市| 平凉市| 酒泉市| 礼泉县| 阿拉善右旗| 蕉岭县| 通山县| 遵义县| 仙居县| 搜索| 乃东县| 湘潭市| 陆河县| 景泰县| 惠安县| 新郑市| 威海市|