workers.properties configuration
workers.properties
apache-test/conf/jk 디렉토리 안에 파일을 생성하며 아래와 같이 설정합니다..
ps=/
worker.list=TEST, TEST2, TEST3 등등
#TEST
worker.TEST.port=[WAS AJP PORT]
worker.TEST.host=[WAS HOST]
worker.TEST.type=ajp13
연결 지시문 (Connection Directives)
연결 지시문 종류 (모든 지시문은 Default 값으로 기재하였습니다.) |
---|
socket_timeout=0 |
소켓 통신 및 WAS와 통신 시, 응답하지 않을 경우 에러를 발생하고 재시도합니다. 0 (default)으로 설정하면 모든 소켓 작업에서 무한한 시간동안 기다립니다. |
socket_connect_timeout=0 |
socket_timeout * 1000(default) 값이며 socket_timeout은 초 단위이고 socket_connect_timeout은 밀리초 단위로 설정하는 지시문입니다. |
socket_keepalive=false |
웹 서버와 비활성 연결을 끊는 경향이 있습니다. Tomcat과 Apache 사이에 방화벽이 있을때 사용해야 합니다. 활성화가 필요할 경우 'ture' 로 설정해야 합니다. 응답이 없어 대기할 경우 방화벽에 의해 소켓이 끊길 수 있으니 이부분도 확인이 필요합니다. |
ping_mode |
이 플래그는 설정된 연결이 작동하는지에 대해서 확인하기 위해 어떤 조건에서 연결을 검색하는지 결정합니다. 이 플래그는 비어있는 AJP13 Packet(Cping)으로 수행되며 시간 초과 내 적절한 응답(Cpong)을 수신합니다. 지시문 옵션) C (connect) : 연결한 후 연결을 한번 검색합니다. ❗ 시간초과의 경우 connect_timeout으로 설정할 수 있으나, 설정하지 않으면 ping_timeout값이 대신 사용합니다. P (prepost) : 요청을 보내기전에 확인 ❗ 시간초과의 경우 connect_timeout으로 설정할 수 있으나, 설정하지 않으면 ping_timeout값이 대신 사용합니다. I (interval) : connection_ping_interval보다 오래 유휴 상태인 idle 연결에 대해서 검색합니다. ❗ 시간초과의 경우 ping_timeout으로 설정할 수 있습니다. A : 위 옵션을 전부 사용합니다. |
ping_timeout=10000 |
ping_mode 지시문의 cping의 응답 시간이며 ping_mode가 없더라도 사용이 가능합니다. |
connection_ping_interval=0 |
ping_mode 또는 connection_ping_interval을 0보다 큰 값 으로 설정 하여 활성화 할 수 있습니다. ping_mode 를 통해 간격 탐색을 활성화하면 connection_ping_interval 의 기본값 은 (ping_timeout / 1000) * 10이 됩니다. |
connection_pool_size=auto |
자식프로세스가 생성할 수 있는 쓰레드 개수입니다. 자식 프로세스당 pool 크기를 지정합니다. defalut로 사용하게 되면 알아서 pool사이즈를 맞춰주니 설정을 따로 하지 않는 것이 좋다고 합니다. ❗ prefork MPM이 있는 버전에서나, Apache 2.x 또는 Apache 1.3.x에서 1보다 큰 값으로 사용하지 마시기 바랍니다. |
connection_pool_minsize= |
자식 프로세스에서 유지할 수 있는 최소 쓰레드 개수를 지정합니다. 유지 관리할 연결의 최소 크기 입니다. (connection_pool_size+1)/2 ❗ Apache 2.x 에서 prefork MPM 또는 Apache1.3.x와 함께 1보다 높은 값으로 사용하시면 안됩니다. |
connection_pool_timeout=0 |
지정된 시간이 지나면 커넥션을 닫으며, 기본값은 0 (무제한) 입니다. jk가 비활성 소켓을 닫은 후 캐시에 보관해야 하는 시간(초)를 지정합니다. 이 설정은 서버의 스레드 수를 줄이기 위해 사용합니다. ❗ 이 설정은 자식이 죽을때까지 삭제 하지 않는다는 것이 문제가 될 수 있습니다. 이 시간 간격은 keepAliveTimeout속성(명시적설정)이 된 경우에는 tomcat의 server.xml에서 connectionTimeout속성과 동기화 되어 있어야 합니다. 그러나 mod_jk의 값은 초단위로 제공되며 이를 계산하여 server.xml값은 밀리초로 사용해야 합니다. |
connection_acquire_timeout= |
Timeout 작업자는 이 연결을 끊기 전 캐시에 있는 남아있는 소켓을 기다립니다. 기본값은 retries*retry_interval 입니다. |
로드밸런싱 지시문(Load Balancing Directives)
로드 밸런서 기본적인 설정에 대해 설명해 놓도록 하며, 지시문 앞에 문법은 지켜져야 합니다.
❗ worker.[worker name].[Directives]=[valse]
apache/conf/jk/worker.properties
ps=/
worker.list=TEST, lb
#TEST
worker.TEST.port=[WAS AJP PORT]
worker.TEST.host=[WAS HOST]
worker.TEST.type=ajp13
worker.TEST.lbfactor=1
#TEST1
worker.TEST1.port=[WAS AJP PORT]
worker.TEST1.host=[WAS HOST]
worker.TEST1.type=ajp13
worker.TEST1.lbfactor=1
worker.lb.type=lb // 로드밸런서 지정
worker.lb.balance_workers=TEST,TEST1 //worker 내 로드밸런스를 적용할 서버 지정
conf/httpd.conf
LoadModule jk_module modules/mod_jk.so //모듈 활성화 확인이 필요
conf/extra/httpd-ssl.conf
도메인이 여러개인경우, 그 설정 파일 내에 값을 설정해줍니다.
이를 활용하면 각 포트가 다르고, 각 도메인마다 다른 서버로 접근할 경우도 설정이 가능합니다.
JkMount /* lb //모든 경로로들어오는것을 나눠 분산한다는 의미입니다..
로드밸런싱 지시문 (모든 지시문은 Default 값으로 기재하였습니다.) |
---|
sticky_session=1 또는 true |
로드밸런싱하는 tomcat의 인스턴스에서 세션데이터를 유지 할 수 있는 기능입니다. |
sticky_session_force=false |
이 설정은 sticky_session=true 인 경우에만 사용되며, 세션 ID와 일치하는 작업자가 오류상태인 경우 클라이언트는 500(서버오류)를 수신합니다. false로 할 경우 다른 작업자에서 장애 조치가 실행되고 클라이언트의 세션을 끊기 때문에 기본값은 false 입니다. 쉽게 말하면 primary worker에서 에러가 발생해도 secondary worker 에서 수행하려면 false 이다. |
method= |
이 지시자의 경우는 로드밸런스의 방식을 지정합니다. B (Busyness) : 진행 및 처리중인 요청이 가장 적은 작업자를 선택합니다. R (Requests) : lbfactor에 따라 액세스가 분산됩니다. S (session) : 세션의 수가 가장 작은 작업자를 선택하지만, 세션을 사용하지 않는 리소스는 세션을 알수 없기 때문에 주의 해야 합니다. |
lock= |
로드밸런서의 공유 메모리 런타임 데이터를 동기화하는 데 사용할 잠금 방법 지정합니다. O(Optimistic) : 공유 메모리 잠금을 사용하며 최상의 작업자를 찾지 않게 됩니다. P(Pessimistic) : 공유메모리잠금을 사용하며 밸런서의 비관적 잠금은 더 정확하게 작동하지만 평균 응답시간이 느려질 수 있습니다. |
retries= 2 |
default 값은 2지만, 0으로 설정하지 않는 경우, 통신 실패 시 아파치에서 자동으로 디폴트 값인 1회를 추가로 보내는데 이로 인해 통신되지 않았던 결제 API호출의 경우 두번 통신되는 경우가 있어 0으로 사용하는 것이 좋습니다. |
lb_retries= |
기본적인 바로 위 retries 의 경우 특정 그 tomcat에서만 재시도를 추가로 보내지만, 이 설정은 로드밸런싱으로 양쪽에 요청하여 그 구성원 내 처리가 가능한 tomcat이 처리할 수 있도록한다. 하지만 추가로 보내는 이러한 기능은 예를 들면, 결제 API호출의 경우 두번 통신되는 경우가 있어 0으로 사용하는 것이 좋습니다. |
lbfactor= |
로드 밸런서의 부하분산의 분산시킬지에 대한 수치 입니다. 예를 들면, 5를 주면 이 AJP로 5번을 받고 다른 AJP로 처리한다는 의미 입니다. ❗ 이 설정 값은 부하분산 설정이 필요합니다. 이 내용은 아래 다루도록 하겠습니다. |
🔰 고급 작업자 지침
참조 : https://tomcat.apache.org/connectors-doc/reference/workers.html
Author And Source
이 문제에 관하여(workers.properties configuration), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jungjoowon04/Apache-Workers.properties저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)