24.6. mod_cluster HTTP 커넥터

mod_cluster 커넥터는 Apache HTTP 서버 기반 로드 밸런서입니다. 통신 채널을 사용하여 Apache HTTP Server의 요청을 애플리케이션 서버 노드 세트 중 하나로 전달합니다.

mod_cluster 커넥터는 다른 커넥터보다 몇 가지 장점이 있습니다.

  • mod_cluster 관리 프로토콜(MCMP)은 mod_cluster 모듈이 활성화된 JBoss EAP 서버와 Apache HTTP 서버 간의 추가 연결입니다. JBoss EAP 서버에서는 사용자 지정 HTTP 메서드 세트를 통해 서버 측 부하 분산 요소 및 라이프사이클 이벤트를 Apache HTTP 서버로 전송하는 데 사용됩니다.
  • mod_cluster를 사용하여 Apache HTTP Server의 동적 구성을 사용하면 JBoss EAP 서버가 수동 구성 없이 부하 분산 배열에 참여할 수 있습니다.
  • JBoss EAP는 mod_cluster와 함께 Apache HTTP Server를 사용하는 대신 로드 밸런싱 인수 계산을 수행합니다. 따라서 부하 분산 메트릭이 다른 커넥터보다 더 정확합니다.
  • mod_cluster 커넥터는 세부적인 애플리케이션 라이프사이클 제어를 제공합니다. 각 JBoss EAP 서버는 웹 애플리케이션 컨텍스트 라이프사이클 이벤트를 Apache HTTP Server에 전달하여 지정된 컨텍스트에 대한 요청을 시작하거나 중지하도록 알립니다. 이렇게 하면 최종 사용자가 사용할 수 없는 리소스로 인해 HTTP 오류가 표시되지 않습니다.
  • AJP, HTTP 또는 HTTPS 전송을 사용할 수 있습니다.

modcluster 하위 시스템의 특정 구성 옵션에 대한 자세한 내용은 ModCluster 하위 시스템 속성을 참조하십시오.

24.6.1. Apache HTTP 서버에서 mod_cluster 구성

JBoss Core Services Apache HTTP Server를 설치하거나 JBoss Web Server를 사용할 때 mod_cluster 모듈은 이미 포함되어 있으며 기본적으로 로드됩니다.

참고

Apache HTTP 서버는 더 이상 3.1.0 버전으로 JBoss Web Server와 함께 배포되지 않습니다.

환경에 맞게 mod_cluster 모듈을 구성하려면 아래 단계를 참조하십시오.

참고

또한 Red Hat 고객은 Red Hat 고객 포털에서 부하 분산 구성 도구를 사용하여 mod_cluster 및 기타 커넥터를 위한 최적의 구성 템플릿을 신속하게 생성할 수 있습니다. 이 도구에 액세스하려면 로그인해야 합니다.

mod_cluster 설정

Apache HTTP 서버에는 이미 mod_cluster 모듈을 로드하고 기본 구성을 제공하는 mod_cluster 구성 파일인 mod_cluster.conf 가 포함되어 있습니다. 아래에 표시된 이 파일의 IP 주소, 포트 및 기타 설정은 요구 사항에 맞게 구성할 수 있습니다.

# mod_proxy_balancer should be disabled when mod_cluster is used
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule cluster_slotmem_module modules/mod_cluster_slotmem.so
LoadModule manager_module modules/mod_manager.so
LoadModule advertise_module modules/mod_advertise.so

MemManagerFile cache/mod_cluster

<IfModule manager_module>
  Listen 6666
  <VirtualHost *:6666>
    <Directory />
      Require ip 127.0.0.1
    </Directory>
    ServerAdvertise on
    EnableMCPMReceive
    <Location /mod_cluster_manager>
      SetHandler mod_cluster-manager
      Require ip 127.0.0.1
   </Location>
  </VirtualHost>
</IfModule>

Apache HTTP Server 서버는 로드 밸런서 장치로 구성되며 JBoss EAP에서 실행되는 modcluster 하위 시스템에서 작동할 수 있습니다. JBoss EAP 가 mod_cluster를 인식하도록 mod_cluster 작업자 노드를 구성해야 합니다.

mod_cluster에 대한 알림을 비활성화하고 대신 정적 프록시 목록을 구성하려면 mod_cluster에 대한 알림 비활성화 를 참조하십시오. Apache HTTP Server에서 사용 가능한 mod_cluster 구성 옵션에 대한 자세한 내용은 Apache HTTP Server mod_cluster 지시문을 참조하십시오.

mod_cluster 구성에 대한 자세한 내용은 JBoss Web Server HTTP 커넥터 및 로드 밸런싱 가이드의 Apache HTTP 서버를 사용하여 부하 분산 구성 섹션을 참조하십시오.

24.6.2. mod_cluster의 구성요소 비활성화

기본적으로 modcluster 하위 시스템의 밸런서는 멀티캐스트 UDP를 사용하여 백그라운드 작업자에게 가용성을 알립니다. 광고 비활성화 및 프록시 목록을 대신 다음 절차를 사용할 수 있습니다.

참고

다음 절차의 관리 CLI 명령은 관리형 도메인에서 full-ha 프로필을 사용하고 있다고 가정합니다. full-ha 이외의 프로필을 사용하는 경우 명령에서 적절한 프로필 이름을 사용합니다. 독립 실행형 서버를 실행하는 경우 /profile=full-ha 를 완전히 제거합니다.

  1. Apache HTTP 서버 구성을 수정합니다.

    httpd.conf Apache HTTP 서버 구성 파일을 편집합니다. EnableMCPMReceive 지시문을 사용하여 MCPM 요청을 수신 대기하는 가상 호스트를 다음과 같이 업데이트합니다.

    1. 지시문을 추가하여 서버 알림을 비활성화합니다.

      ServerAdvertise 지시문을 Off 로 설정하여 서버 알림을 비활성화합니다.

      ServerAdvertise Off
    2. 광고 빈도를 비활성화합니다.

      구성에서 AdvertiseFrequency 매개변수를 지정하는 경우 # 문자를 사용하여 주석 처리합니다.

      # AdvertiseFrequency 5
    3. MCPM 메시지를 수신하는 기능을 활성화합니다.

      웹 서버가 작업자 노드에서 MCPM 메시지를 받을 수 있도록 EnableMCPMReceive 지시문이 있는지 확인합니다.

      EnableMCPMReceive
  2. JBoss EAP modcluster 하위 시스템에서 알림을 비활성화합니다.

    다음 관리 CLI 명령을 사용하여 알림을 비활성화합니다.

    /profile=full-ha/subsystem=modcluster/proxy=default:write-attribute(name=advertise,value=false)
    중요

    다음 단계로 계속 이동하여 프록시 목록을 제공해야 합니다. 프록시 목록이 비어 있으면 광고가 비활성화되지 않습니다.

  3. JBoss EAP modcluster 하위 시스템에서 프록시 목록을 제공합니다.

    광고가 비활성화된 경우 modcluster 하위 시스템에서 프록시를 자동으로 검색할 수 없으므로 프록시 목록을 제공해야 합니다.

    먼저 적절한 소켓 바인딩 그룹에 아웃바운드 소켓 바인딩을 정의합니다.

    /socket-binding-group=full-ha-sockets/remote-destination-outbound-socket-binding=proxy1:add(host=10.33.144.3,port=6666)
    /socket-binding-group=full-ha-sockets/remote-destination-outbound-socket-binding=proxy2:add(host=10.33.144.1,port=6666)

    그런 다음 프록시를 mod_cluster 구성에 추가합니다.

    /profile=full-ha/subsystem=modcluster/proxy=default:list-add(name=proxies,value=proxy1)
    /profile=full-ha/subsystem=modcluster/proxy=default:list-add(name=proxies,value=proxy2)

Apache HTTP 서버 밸런서에서 더 이상 작업자 노드에 해당 존재를 알리지 않으며 UDP 멀티캐스트는 더 이상 사용되지 않습니다.

24.6.3. mod_cluster 작업자 노드 설정

mod_cluster 작업자 노드는 JBoss EAP 서버로 구성됩니다. 이 서버는 독립 실행형 서버 또는 관리형 도메인에서 서버 그룹의 일부일 수 있습니다. 별도의 프로세스는 클러스터의 모든 작업자 노드를 관리하는 JBoss EAP 내에서 실행됩니다. 이것을 마스터라고 합니다.

관리형 도메인의 작업자 노드는 서버 그룹 전체에서 동일한 구성을 공유합니다. 독립 실행형 서버로 실행되는 작업자 노드는 개별적으로 구성됩니다. 구성 단계는 그렇지 않으면 동일합니다.

  • 독립 실행형 서버는 standalone -ha 또는 standalone-full-ha 프로필을 사용하여 시작해야 합니다.
  • 관리형 도메인의 서버 그룹은 ha 또는 full-ha 프로필과 ha- sockets 또는 full-ha-sockets 소켓 바인딩 그룹을 사용해야 합니다. JBoss EAP에는 이러한 요구 사항을 충족하는 other-server-group이라는 클러스터 지원 서버 그룹이 포함되어 있습니다.
작업자 노드 설정

이 절차의 관리 CLI 명령은 full-ha 프로필이 있는 관리형 도메인을 사용하고 있다고 가정합니다. 독립 실행형 서버를 실행하는 경우 명령의 /profile=full-ha 부분을 제거합니다.

  1. 네트워크 인터페이스를 구성합니다.

    기본적으로 네트워크 인터페이스는 모두 기본적으로 127.0.0.1 로 설정됩니다. 독립 실행형 서버 또는 서버 그룹에서 하나 이상의 서버를 호스팅하는 모든 물리적 호스트는 다른 서버가 볼 수 있는 공용 IP 주소를 사용하도록 인터페이스를 구성해야 합니다.

    다음 관리 CLI 명령을 사용하여 환경에 맞게 관리,공용 및 비보안 인터페이스 외부 IP 주소를 수정합니다. 명령에서 EXTERNAL_IP_ADDRESS 를 호스트의 실제 외부 IP 주소로 바꿉니다.

    /interface=management:write-attribute(name=inet-address,value="${jboss.bind.address.management:EXTERNAL_IP_ADDRESS}")
    /interface=public:write-attribute(name=inet-address,value="${jboss.bind.address.public:EXTERNAL_IP_ADDRESS}")
    /interface=unsecure:write-attribute(name=inet-address,value="${jboss.bind.address.unsecure:EXTERNAL_IP_ADDRESS}")

    서버를 다시 로드합니다.

    reload
  2. 호스트 이름 구성.

    관리형 도메인에 참여하는 각 호스트의 고유한 호스트 이름을 설정합니다. 이 이름은 슬레이브마다 고유해야 하며 클러스터 식별에 슬레이브에 사용되므로 사용하는 이름을 기록합니다.

    1. 적절한 host .xml 구성 파일을 사용하여 JBoss EAP 슬레이브 호스트 를 시작합니다.

      $ EAP_HOME/bin/domain.sh --host-config=host-slave.xml
    2. 다음 관리 CLI 명령을 사용하여 고유한 호스트 이름을 설정합니다. 이 예에서는 slave1 을 새 호스트 이름으로 사용합니다.

      /host=EXISTING_HOST_NAME:write-attribute(name=name,value=slave1)

      호스트 이름 구성에 대한 자세한 내용은 호스트 이름 구성을 참조하십시오.

  3. 도메인 컨트롤러에 연결하도록 각 호스트를 구성합니다.

    참고

    이 단계는 독립 실행형 서버에는 적용되지 않습니다.

    관리형 도메인에 가입해야 하는 새로 구성된 호스트의 경우 로컬 요소를 제거하고 도메인 컨트롤러를 가리키는 remote 요소 호스트 특성을 추가해야 합니다.

    1. 적절한 host .xml 구성 파일을 사용하여 JBoss EAP 슬레이브 호스트 를 시작합니다.

      $ EAP_HOME/bin/domain.sh --host-config=host-slave.xml
    2. 다음 관리 CLI 명령을 사용하여 도메인 컨트롤러 설정을 구성합니다.

      /host=SLAVE_HOST_NAME:write-remote-domain-controller(host=DOMAIN_CONTROLLER_IP_ADDRESS,port=${jboss.domain.master.port:9990},security-realm="ManagementRealm")

      이를 통해 host-slave.xml 파일의 XML을 다음과 같이 수정합니다.

      <domain-controller>
          <remote host="DOMAIN_CONTROLLER_IP_ADDRESS" port="${jboss.domain.master.port:9990}" security-realm="ManagementRealm"/>
      </domain-controller>

      자세한 내용은 호스트 컨트롤러 구성을 참조하십시오.

  4. 각 슬레이브 호스트에 대한 인증을 구성합니다.

    각 슬레이브 서버에는 도메인 컨트롤러 또는 독립 실행형 마스터의 ManagementRealm에서 생성된 사용자 이름과 암호가 필요합니다. 도메인 컨트롤러 또는 독립 실행형 마스터에서 각 호스트에 대해 EAP_HOME/bin/add-user.sh 명령을 실행합니다. 슬레이브의 호스트 이름과 일치하는 사용자 이름을 사용하여 각 호스트에 대한 관리 사용자를 추가합니다.

    마지막 질문에 " 이 새 사용자가 하나의 AS 프로세스에서 다른 AS 프로세스에 연결하는 데 사용됩니까?"라는 질문으로 답해야 합니다. 그러면 시크릿 값이 제공됩니다.

    예: add-user.sh 스크립트 출력 (trimmed)

    $ EAP_HOME/bin/add-user.sh
    
    What type of user do you wish to add?
     a) Management User (mgmt-users.properties)
     b) Application User (application-users.properties)
    (a): a
    
    Username : slave1
    Password : changeme
    Re-enter Password : changeme
    What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[  ]:
    About to add user 'slave1' for realm 'ManagementRealm'
    Is this correct yes/no? yes
    Is this new user going to be used for one AS process to connect to another AS process?
    e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server {JEB} calls.
    yes/no? yes
    To represent the user add the following to the server-identities definition <secret value="SECRET_VALUE" />

    이 출력에서 제공된 Base64로 인코딩된 시크릿 값 SECRET_VALUE 를 복사합니다. 이 값은 다음 단계에서 사용할 수 있습니다.

    자세한 내용은 JBoss EAP의 마스터 도메인 컨트롤러에 사용자 추가 섹션을 참조하십시오. 서버 보안 구성 방법.

  5. 새 인증을 사용하도록 슬레이브 호스트의 보안 영역을 수정합니다.

    서버 구성에서 secret 값을 설정하고, 자격 증명 저장소 또는 자격 증명 모음에서 암호를 가져오거나, 암호를 시스템 속성으로 전달하여 암호를 지정할 수 있습니다.

    • 관리 CLI를 사용하여 서버 구성 파일에 Base64로 인코딩된 암호 값을 지정합니다.

      다음 관리 CLI 명령을 사용하여 보안 값을 지정합니다. SECRET_VALUE 를 이전 단계의 add-user 출력에서 반환된 secret 값으로 바꿉니다.

      /host=SLAVE_HOST_NAME/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="SECRET_VALUE")

      서버를 다시 로드해야 합니다. host 인수는 독립 실행형 서버에 적용되지 않습니다.

      reload --host=HOST_NAME

      자세한 내용은 JBoss EAP에서 서버 보안 구성 가이드의 자격 증명 사용을 위한 컨트롤러 구성 섹션을 참조하십시오.

    • 자격 증명 저장소에서 암호를 가져오도록 호스트를 구성합니다.

      자격 증명 저장소에 secret 값을 저장한 경우 다음 명령을 사용하여 서버 시크릿을 인증 정보 저장소의 값으로 설정할 수 있습니다.

      /host=SLAVE_HOST_NAME/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(credential-reference={store=STORE_NAME,alias=ALIAS}

      서버를 다시 로드해야 합니다. host 인수는 독립 실행형 서버에 적용되지 않습니다.

      reload --host=HOST_NAME

      자세한 내용은 JBoss EAP의 Credential Store 섹션을 참조하십시오. 서버 보안 구성 가이드.

    • 자격 증명 모음에서 암호를 가져오도록 호스트를 구성합니다.

      1. EAP_HOME/bin/vault.sh 스크립트를 사용하여 마스킹된 암호를 생성합니다. 예를 들어 VAULT::secret::password::VAULT_SECRET_VALUE 형식의 문자열을 생성합니다.

        VAULT::secret::password::ODVmYmJjNGMtZDU2ZC00YmNlLWE4ODMtZjQ1NWNmNDU4ZDc1TElORV9CUkVBS3ZhdWx0.
        참고

        자격 증명 모음에 암호를 생성할 때 Base64로 인코딩되지 않은 일반 텍스트로 지정해야 합니다.

      2. 다음 관리 CLI 명령을 사용하여 보안 값을 지정합니다. VAULT_SECRET_VALUE 를 이전 단계에서 생성된 마스킹된 암호로 교체해야 합니다.

        /host=master/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="${VAULT::secret::password::VAULT_SECRET_VALUE}")

        서버를 다시 로드해야 합니다. host 인수는 독립 실행형 서버에 적용되지 않습니다.

        reload --host=HOST_NAME

        자세한 내용은 JBoss EAP 구성 서버 보안 가이드의 Password Vault 섹션을 참조하십시오.

    • 암호를 시스템 속성으로 지정합니다.

      다음 예제에서는 server.identity.password 를 암호의 시스템 속성 이름으로 사용합니다.

      1. 서버 구성 파일에서 암호의 시스템 속성을 지정합니다.

        다음 managemente CLI 명령을 사용하여 시스템 속성을 사용하도록 비밀 ID를 구성합니다.

        /host=SLAVE_HOST_NAME/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="${server.identity.password}")

        서버를 다시 로드해야 합니다. host 인수는 독립 실행형 서버에 적용되지 않습니다.

        reload --host=master
      2. 서버를 시작할 때 시스템 속성의 암호를 설정합니다.

        명령줄 인수 또는 속성 파일에 전달하여 server.identity.password 시스템 속성을 설정할 수 있습니다.

        1. 를 일반 텍스트 명령줄 인수로 전달합니다.

          서버를 시작하고 server.identity.password 속성을 전달합니다.

          $ EAP_HOME/bin/domain.sh --host-config=host-slave.xml -Dserver.identity.password=changeme
          주의

          암호를 일반 텍스트로 입력해야 하며 ps -ef 명령을 실행하는 사용자에게 표시됩니다.

        2. 속성 파일에서 속성을 설정합니다.

          속성 파일을 생성하고 키/값 쌍을 속성 파일에 추가합니다. 예를 들면 다음과 같습니다.

          server.identity.password=changeme
          주의

          암호는 일반 텍스트로 되어 있으며 이 속성 파일에 대한 액세스 권한이 있는 사용자에게 표시됩니다.

          명령줄 인수를 사용하여 서버를 시작합니다.

          $ EAP_HOME/bin/domain.sh --host-config=host-slave.xml --properties=PATH_TO_PROPERTIES_FILE
  6. 서버를 다시 시작합니다.

    이제 슬레이브는 호스트 이름을 사용자 이름으로 사용하고 암호화된 문자열을 암호로 사용하여 마스터에 대해 인증합니다.

독립 실행형 서버 또는 관리형 도메인의 서버 그룹 내의 서버는 이제 mod_cluster 작업자 노드로 구성됩니다. 클러스터된 애플리케이션을 배포하는 경우 해당 세션은 페일오버를 위해 모든 클러스터 노드에 복제되며 외부 웹 서버 또는 로드 밸런서의 요청을 수락할 수 있습니다. 클러스터의 각 노드는 기본적으로 자동 검색을 사용하여 다른 노드를 검색합니다.

24.6.4. mod_cluster fail_on_status 매개 변수 구성

fail_on_status 매개 변수는 클러스터에서 작업자 노드에서 반환되는 경우 해당 노드를 실패로 표시하는 이러한 HTTP 상태 코드를 나열합니다. 그런 다음 로드 밸런서에서 향후 요청을 클러스터의 다른 작업자 노드로 보냅니다. 실패한 작업자 노드는 로드 밸런서에 STATUS 메시지를 전송할 때까지 NOTOK 상태로 유지됩니다.

fail_on_status 매개 변수는 로드 밸런서의 httpd 구성 파일에서 구성해야 합니다. fail_on_status 의 여러 HTTP 상태 코드를 쉼표로 구분된 목록으로 지정할 수 있습니다. 다음 예제에서는 fail_on_status 에 대해 HTTP 상태 코드 203204 를 지정합니다.

예제: fail_on_status 구성

ProxyPass / balancer://MyBalancer stickysession=JSESSIONID|jsessionid nofailover=on failonstatus=203,204
ProxyPassReverse / balancer://MyBalancer
ProxyPreserveHost on

24.6.5. 클러스터 간 트래픽 마이그레이션

JBoss EAP를 사용하여 새 클러스터를 생성한 후 업그레이드 프로세스의 일부로 이전 클러스터에서 새 클러스터로 트래픽을 마이그레이션할 수 있습니다. 이 작업에는 최소한의 중단 또는 다운타임으로 이 트래픽을 마이그레이션하는 데 사용할 수 있는 전략이 표시됩니다.

  • 새 클러스터 설정. 이 클러스터를 ClusterNEW 라고 합니다.
  • 중복되는 이전 클러스터 설정입니다. 이 클러스터를 ClusterOLD 라고 합니다.
클러스터 업그레이드 프로세스 - 부하 분산 그룹
  1. 사전 요구 사항에 설명된 단계를 사용하여 새 클러스터를 설정합니다.
  2. ClusterNEWClusterOLD 양쪽에서 구성 옵션 sticky-sessiontrue 의 기본 설정으로 설정되어 있는지 확인합니다. 이 옵션을 활성화하면 클러스터 노드에 대한 모든 새 요청이 해당 클러스터 노드로 계속 전송됩니다.

    /profile=full-ha/subsystem=modcluster/proxy=default:write-attribute(name=sticky-session,value=true)
  3. ClusterOLD의 모든 클러스터 노드가 ClusterOLD 로드 밸런싱 그룹의 멤버 라고 가정하여 load-balancing-groupClusterOLD 로 설정합니다.

    /profile=full-ha/subsystem=modcluster/proxy=default:write-attribute(name=load-balancing-group,value=ClusterOLD)
  4. mod_cluster 작업자 노드 구성 섹션에 설명된 프로세스를 사용하여 ClusterNEW 의 노드를 mod_cluster 구성에 개별적으로 추가합니다. 또한 앞에서 설명한 절차를 사용하여 로드 밸런싱 그룹을 ClusterNEW 로 설정합니다.

    이 시점에는 mod_cluster-manager 콘솔에서 낮은 단축된 예와 유사한 출력이 표시됩니다.

                    mod_cluster/<version>
    
        LBGroup ClusterOLD: [Enable Nodes]   [Disable Nodes]   [Stop Nodes]
            Node node-1-jvmroute (ajp://node1.oldcluster.example:8009):
                [Enable Contexts]   [Disable Contexts]   [Stop Contexts]
                Balancer: qacluster, LBGroup: ClusterOLD, Flushpackets: Off, ..., Load: 100
                Virtual Host 1:
                    Contexts:
                        /my-deployed-application-context, Status: ENABLED Request: 0 [Disable]   [Stop]
    
            Node node-2-jvmroute (ajp://node2.oldcluster.example:8009):
                [Enable Contexts]   [Disable Contexts]   [Stop Contexts]
                Balancer: qacluster, LBGroup: ClusterOLD, Flushpackets: Off, ..., Load: 100
                Virtual Host 1:
                    Contexts:
                        /my-deployed-application-context, Status: ENABLED Request: 0 [Disable]   [Stop]
    
    
        LBGroup ClusterNEW: [Enable Nodes]   [Disable Nodes]   [Stop Nodes]
            Node node-3-jvmroute (ajp://node3.newcluster.example:8009):
                [Enable Contexts]   [Disable Contexts]   [Stop Contexts]
                Balancer: qacluster, LBGroup: ClusterNEW, Flushpackets: Off, ..., Load: 100
                Virtual Host 1:
                    Contexts:
                        /my-deployed-application-context, Status: ENABLED Request: 0 [Disable]   [Stop]
    
            Node node-4-jvmroute (ajp://node4.newcluster.example:8009):
                [Enable Contexts]   [Disable Contexts]   [Stop Contexts]
                Balancer: qacluster, LBGroup: ClusterNEW, Flushpackets: Off, ..., Load: 100
                Virtual Host 1:
                    Contexts:
                        /my-deployed-application-context, Status: ENABLED Request: 0 [Disable]   [Stop]
  5. 이전 활성 세션은 ClusterOLD 그룹 내에 있으며 모든 새 세션은 ClusterOLD 또는 CLusterNEW 그룹에 생성됩니다. 다음으로 클러스터 노드가 현재 활성 클라이언트 세션에 오류가 발생하지 않고 제거될 수 있도록 전체 ClusterOLD 그룹을 비활성화하려고 합니다.

    mod_cluster-manager 웹 콘솔에서 LBGroup ClusterOLD 에 대한 노드 비활성화 링크를 클릭합니다.

    이 시점에서 이미 설정된 세션에 속한 요청만 ClusterOLD 로드 밸런싱 그룹의 멤버로 라우팅됩니다. 새 클라이언트의 세션은 ClusterNEW 그룹에만 생성됩니다. ClusterOLD 그룹 내에 활성 세션이 없는 즉시 해당 멤버를 안전하게 제거할 수 있습니다.

    참고

    Stop Nodes 를 사용하면 요청을 이 도메인으로 즉시 라우팅하지 않도록 로드 밸런서를 명령합니다. 그러면 ClusterNEW와 Cluster OLD 간에 세션 복제가 없는 경우 클라이언트에 세션 데이터가 손실되는 다른 로드 밸런싱 그룹으로 강제로 장애 조치됩니다.

기본 부하 분산 그룹

현재 ClusterOLD 설정에 mod_cluster-manager 콘솔의 LBGroup:에서 찾은 로드 밸런싱 그룹 설정이 없는 경우 ClusterOLD 노드를 비활성화할 수 있습니다. 이 경우 각 ClusterOLD 노드에 대해 Disable Contexts (컨텍스트 비활성화)를 클릭합니다. 이러한 노드의 컨텍스트는 비활성화되며 활성 세션이 없으면 제거할 준비가 됩니다. 새 클라이언트의 세션은 컨텍스트가 활성화된 노드에서만 생성됩니다. 이 예에서는 ClusterNEW 멤버일 가능성이 큽니다.

관리 CLI 사용

mod_cluster-manager 웹 콘솔을 사용하는 것 외에도 JBoss EAP 관리 CLI를 사용하여 특정 컨텍스트를 중지하거나 비활성화할 수 있습니다.

문맥 중지

/host=master/server=server-one/subsystem=modcluster:stop-context(context=/my-deployed-application-context, virtualhost=default-host, waittime=0)

대기 시간이 0 으로 설정된 컨텍스트를 중지하면 시간 초과가 발생하지 않고 요청의 모든 요청을 즉시 라우팅하지 않도록 장치에 지시하여 다른 사용 가능한 컨텍스트로 장애 조치(failover)합니다.

waittime 인수를 사용하여 시간 초과 값을 설정하면 이 컨텍스트에서 새 세션이 생성되지 않지만 기존 세션은 완료되거나 지정된 시간 초과가 경과할 때까지 이 노드로 계속 이동합니다. waittime 인수의 기본값은 10 초입니다.

문맥 비활성화

/host=master/server=server-one/subsystem=modcluster:disable-context(context=/my-deployed-application-context, virtualhost=default-host)

컨텍스트를 비활성화하면 이 컨텍스트에서 새 세션을 만들지 않아야 한다고 밸런서에 알립니다.