tomcat+apach load balance

6050 단어 자바Web
본문http://www.iteye.com/topic/985404?dhcc, 실제 조작 설정 체 조 를 통 해 기록 되 었 습 니 다.
환경 및 버 전
        환경: 호스트 --- windows 7 (로 컬 localhost);
        주요 기능: JDK - 1.5.022 (설치 판);Tomcat 39 --- - 6.0.39 (설치 판);Tomcat 32 - 6.0.32 (설치 판) Apache - 2.2.25 (httpd - 2.2.25 - win 32 - x86 - no ssl. msi, 설치 판)
2. apache tomcat 설정 작업
       1, 아파 치 - 2.2.25 버 전 은 이미 modjk 기능 이 므 로 번 거 로 운 worker. properties 파일 을 설정 할 필요 가 없습니다. 설정 과정 이 편리 합 니 다.
        2 、 편집기 로 APACHE 열기HOME \ \ conf \ httpd. conf 파일, 다음 프 록 시 블록 (proxy) 을 찾 습 니 다.
             #LoadModule proxy_module modules/mod_proxy.so
             #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
             #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
             #LoadModule proxy_connect_module modules/mod_proxy_connect.so
             #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
             #LoadModule proxy_http_module modules/mod_proxy_http.so
        3. 이 프 록 시 블록의 "\ #" 기 호 를 지우 고 아파 치 는 시작 하 는 과정 에서 상기 프 록 시 (proxy) 를 불 러 옵 니 다.
        4. 파일 끝 에 다음 코드 를 추가 합 니 다.
             ProxyRequests Off
            
                    BalancerMember ajp://localhost:8009 loadfactor=1 route=jvm1
                    BalancerMember ajp://localhost:9009 loadfactor=1 route=jvm2
            

        5. \ # Include conf / extra / httpd - vhosts. conf 위 치 를 찾 고 '\ #' 기 호 를 제거 합 니 다.
        6 、 편집기 로 APACHE 열기HOME \ \ conf \ extra \ httpd - vhosts. conf 파일, 가상 사이트 설정, 파일 끝 에 추가
       
   ServerAdmin [email protected]
   ServerName localhost
   ServerAlias localhost
   ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
   ProxyPassReverse / balancer://cluster/
   ErrorLog "logs/error.log"
   CustomLog "logs/access.log" common
        

        7. Tomcat - server. xml 파일 설정
        7.1. 만약 에 2 개의 Tomcat 가 서로 다른 기계 에 있 으 면 그 어떠한 포트 도 수정 할 필요 가 없다.다만 < Engine name = "Catalina" defaultHost = "localhost" jvmRoute = "jvm 1" > 주석 부 호 를 놓 고 < Engine name = "Catalina" defaultHost = "localhost" > 주석 을 놓 아야 합 니 다.
        7.2. tomcat 가 같은 기기 에 있 는 경우 tomcat 39 의 < Engine name = "Catalina" defaultHost = "localhost" jvmRoute = "jvm 1" > 을 < Engine name = "Catalina" defaultHost = "localhost" jvmRoute = "jvm 2" 로 변경 합 니 다.
        7.3 tomcat 39 의 < Server port = "8005" shutdown = "SHUTDOWN" >
           
                           redirectPort="8443" />
            8005 는 9005, 8009 는 9009, 8080 은 9080 으로 바 뀌 었 다.
            9009 포트 는 아파 치 httpd. conf 에서 BalancerMember 에 설 정 된 ajp 연결 포트 에 대응 합 니 다.
        7.4. < Cluster className = "org. apache. catalina. ha. tcp. Simple TcpCluster" / > 의 설명 을 놓 습 니 다. 클 러 스 터 의 모든 tomcat 노드 간 에 세 션 (Session) 을 공유 할 수 있 도록 하기 위해 서 입 니 다.
3. 새로운 테스트 웹 프로젝트
        1. 네트워크 의 테스트 session 의 예 를 참조 합 니 다.
       <%@ page contentType="text/html; charset=GBK" %> 
       <%@ page import="java.util.*" %> 
       <html><head><title>Cluster App Test</title></head> 
       <body> 
        Server Info: 
       <% 
         out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%> 
       <% 
         out.println("<br> ID " + session.getId()+"<br>"); 
         String dataName = request.getParameter("dataName"); 
  
         if (dataName != null && dataName.length() > 0) { 
            String dataValue = request.getParameter("dataValue"); 
            session.setAttribute(dataName, dataValue); 
         }  
         out.print("<b>Session   </b>");  
  
         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="test.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>

        2. my eclipse new 웹 프로젝트 는 WebRoot 아래 test. jsp 를 새로 만 듭 니 다. 내용 은 위의 코드 입 니 다. WebRoot \ WEB - INF \ 웹. xml 의 < 웹 - app > 노드 에 < distributable / > 를 추가 하여 Tomcat 에 현재 응용 클 러 스 터 의 모든 노드 간 에 Session 공 유 를 실현 하 라 고 알 립 니 다.
        3. 두 개의 TOMCAT 에서HOME \ \ conf \ server. xml 의 < Host > < / Host > 사이 에 < Context 추가   path="/test"   docBase="D:\workspace\testLoadBlance\WebRoot"   reloadable="true"   debug="0">
4. 테스트 load balance
        1. tomcat 39, tomcat 32, apache 를 시작 하여 브 라 우 저 에 입력 합 니 다.http://localhost/test/test.jspapache 를 새로 고 칠 때마다 다른 tomcat 에 요청 을 보 냅 니 다.
        2. jvm 1 에서 이름과 값 을 제출 한 후 jvm 2 로 갱신 하면 jvm 1 이 제출 한 값 을 볼 수 있 고 반대로 load balance 를 설명 하 며 session 을 공유 하 는 목적 을 달성 할 수 있 습 니 다.
5. 존재 하 는 문제
        1, tomcat 7 사용 시 session 을 공유 할 수 없습니다.
       

좋은 웹페이지 즐겨찾기