[WAS] Was

김봉남·2024년 2월 6일

WAS

목록 보기
13/23
post-thumbnail

WAS

  • Apache Tomcat은 오픈 소스 웹 서버 및 서블릿 컨테이너 소프트웨어
  • Java 웹 애플리케이션을 호스팅하고 실행하는 데 사용
  • 다중 스레드 처리, 세션 관리, 웹 애플리케이션 배포, 그리고 보안 설정 등
  • https://tomcat.apache.org/download-90.cgi

JVM 설치

yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
  • 환경설정
[edu@wasts1 ~]$ vi ~/.bashrc
# User specific aliases and functions

JAVA_HOME=/usr/lib/jvm/java-1.8.0
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

tomcat 설치

]# mkdir -p /edu/tomcat/engine/
]# cd /edu/tomcat/engine/
]# wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-9/v9.0.29/bin/apache-tomcat-9.0.29.tar.gz
]# tar zxvf apache-tomcat-9.0.29.tar.gz
]# rm -f /edu/tomcat/engine/apache-tomcat-9.0.29.tar.gz

DB 연결

  • DB 벤더에서 제공하는 JDBC 드라이드 다운로드
cp /home/share/LABS/mysql-connector-java-8.0.18.jar /edu/tomcat/engine/apache-tomcat-9.0.29/lib/
  • server.xml 설정
<GlobalNamingResources><Resource name="jdbc/eduDS" auth="Container"
               type="javax.sql.DataSource"
               driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://192.168.56.101:3306/edu?useUnicode=true&amp;characterEncoding=utf8"
               username="edu" password="edu"
               maxTotal="10"
               maxIdle="10"
               minIdle="10"
               maxWaitMillis="30000"
               validationQuery="SELECT 1"
               testWhileIdle="true"
               timeBetweenEvictionRunsMillis="10000"
     />

</GlobalNamingResources>
  • context 설정
<Context path="" docBase=“/edu/webapp/example.war">
         <ResourceLink global=“jdbc/eduDS” name=“jdbc/eduDS”
                        type=“javax.sql.DataSource” />
</Context>
 - GlobalNamingResouce 는 Context 별로 공유해서 해서 사용
 - context 내에 ResouceLink로 사용 

tomcat 클러스터링

  • HTTP Session 클러스터링
  • UDP를 지원하지 않는 Cloud 환경에서는 TCP로 변경해서 사용
  • 대용량 트래픽을 원하는 어플리케이션은 적합하지 않음

클러스터링 설정

  • /WEB-INF/web.xml
  • 추가
]$ /edu/webapp/example.war/WEB-INF/web.xml

<web-app>
<distributable />
</web-app>
  • server.xml
   <Engine name="Catalina" defaultHost="localhost" jvmRoute="${server.name}">

        <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
                 channelSendOptions="8">

          <Manager className="org.apache.catalina.ha.session.DeltaManager"
                   expireSessionsOnShutdown="false"
                   notifyListenersOnReplication="true"/>

          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
            <Membership className="org.apache.catalina.tribes.membership.McastService"
                        bind="192.168.56.101"
                        address="231.0.6.1"
                        port="45564"
                        frequency="500"
                        dropTime="3000"/>
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="192.168.56.101"
                      port="4000"
                      autoBind="100"
                      selectorTimeout="5000"
                      maxThreads="6"/>

<생략>            

            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
            </Sender>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
          </Channel>

          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                 filter=""/>
          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                    watchEnabled="false"/>

          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        </Cluster>
profile
남자다

0개의 댓글