2010년 8월 19일 목요일

Redirect 설정

IP 로 웹서버에 접근하는것을 Tomcat Web 프로젝트로 리다이렉트

<VirtualHost *:80>
        ServerName 211.115.xx.xxx
        Redirect / http://www.test.kr/
</VirtualHost>

위의 www.test.kr 은 내가 산 도메인 이고 위와 같이 접근하면 Tomcat으로 Redirect 된다.


Could not reliably determine the server's fully qualified domain name, using <IP>

아파치 설정을 하다가 가상 호스트를 쓸일이 생겨서

<VirtualHost *:80>
.......
</VirtualHost>

하고 재 실행을 했더니

Could not reliably determine the server's fully qualified domain name, using <IP>

라는 에러가 발생했다.


Apache + Tomcat 을 연동해서 사용하고 있는데 사용중 문제는 없었지만 그래도 찝찝하여

httpd.conf 에 ServerName localhost 추가.

일단 위의 WARNING 은 막았는데 좀더 알아봐야 할 문제이다.

2010년 8월 5일 목요일

JConsole or VisualVm jmx connecting firewall server

Tomcat 을 실행 후 모니터링 하는 도구로서 java 에서 제공해주는 jconsole, visualvm이 있다.

둘 모두 구동하는 방식은 똑 같으며 visualvm 이 더 많은 프로파일 기능을 제공한다.

위의 둘을 사용하기 위해서는 서버를 실행 시킬시에 다음의 옵션을 추가한다.

-- Remote 로 접속해서 사용할 경우

-Dcom.sun.management.jmxremote     // jmxremote 를 사용하겠다는 옵셥
-Dcom.sun.management.jmxremote.port=8999    // jmxremote 접속시에 사용할 포트
-Dcom.sun.management.jmxremote.ssl=false    // ssl 사용여부
-Dcom.sun.management.jmxremote.authenticate=false  // 인증사용여부

위의 옵셕을 주고 서버를 실행시키면 jconsole. visualvm 에서 모니터링을 할 수 있다.

jconsole, visualvm 사용 방법은 지금 포스팅과 상관이 없으니 생량.

위와 같은 옵션만 주게 되면 한가지 문제점에 봉착하게 된다.

서버가 우리쪽에 없고 방확벽(firewall) 을 따로 관리해야 하는 곳에 있다면 문제가 발생한다.

문제점이라 하면...... 저 8999 포트로 접속이 안되는것. 그럼 8999포트를 열면되지 라고 생각 할 수 있겠지만 문제가 그리 간단하면 내가 그리 고생하지는 않았을 것이다.

찾아본 문서에 의하면 jmx 자체가 방확벽이 걸릴경우에는 저 8999로 선언한 포트를 사용하지 않고 다른 포트를 만들어 버린다는 것. 내부적으로 어떻게 돌아가는지는 나도 아직 파악하지는 못한상태..

그럼 어떻게 해야 할까.. 포트를 고정시켜서 사용해야 하는데....

Tomcat 문서를 열심히 뒤저본 결과(처음에는 Tomcat 문서를 찾지 않았다. 괜히 엄한곳만 검색해서 시간만 잡아먹었다 ㅜ) 방법은 있었다.

그 방법이라 함은 포트를 고정시키는 방법

차례대로 해보자.

1. Tomcat 의 server.xml 에 다음의 리스너를 추가하자.

-  <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"     rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" useLocalPorts="false"/>

2. $CATALINA_HOME/lib 에 catalina-jmx-remote.jar 복사

- 위의 jar파일은 톰캣에 기본적으로 들어 있는 파일이 아니다.


3. 서버 띄울시에 옵션 추가

- 사실 옵션을 추가하는 방식은 시스템 마다 다를것이며 사용자마다 다를것이다.

- 설정방법

CATALINA_OPTS
Dcom.sun.management.jmxremote
Dcom.sun.management.jmxremote.ssl=false
Dcom.sun.management.jmxremote.password.file=$CATALINA_HOME/conf/jmxremote.password
Dcom.sun.management.jmxremote.access.file=$CATALINA_HOME/conf/jmxremote.access
export CATALINA_OPTS

4. jmxremote.password, jmxremote.access 파일을 생성

- 위에서 인증파일로 두 파일을 사용하겠다고 하니 생성을 하고 세팅을 해줘야 겠다.
- jmxremote.password  --> test   test
- jmxremote.access  --> test   readonly (혹은 readwrite)

5. 톰캣 실행

6. jconsole , visualvm 에서 다음과 같이 URL로 접속한다.

service:jmx:rmi://<hostname>:10002/jndi/rmi://<hostname>:10001/jmxrmi

username , password 입력

7. 모니터링 하세요