Amazon Web Services에 JBoss EAP 배포


Red Hat JBoss Enterprise Application Platform 7.4

Amazon Web Services에서 Red Hat JBoss Enterprise Application Platform 사용 방법(고가용성 구성 포함).

Red Hat Customer Content Services

초록

이 문서에서는 Amazon EC2에 Red Hat JBoss Enterprise Application Platform을 배포하는 방법에 대해 설명합니다.

JBoss EAP 문서에 대한 피드백 제공

오류를 보고하거나 문서를 개선하기 위해 Red Hat Jira 계정에 로그인하여 문제를 제출하십시오. Red Hat Jira 계정이 없는 경우 계정을 생성하라는 메시지가 표시됩니다.

절차

  1. 티켓을 생성하려면 다음 링크를 클릭하십시오.
  2. 문서 URL, 섹션 번호 를 포함하고 문제를 설명하십시오.
  3. 요약 에 문제에 대한 간략한 설명을 입력합니다.
  4. 설명에서 문제 또는 개선 사항에 대한 자세한 설명을 제공합니다. 문서에서 문제가 발생한 위치에 URL을 포함합니다.
  5. Submit 을 클릭하고 문제를 적절한 문서 팀으로 라우팅합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

1장. Amazon EC2 정보

amazon.com에서 운영하는 서비스인 Amazon EC2(Amazon Elastic Compute Cloud)는 고객에게 맞춤형 가상 컴퓨팅 환경을 제공합니다. 이 서비스를 사용하면 가상 시스템 또는 인스턴스를 생성하기 위해 AMI(Amazon Machine Image)를 부팅할 수 있습니다. 사용자는 인스턴스에 필요한 소프트웨어를 설치할 수 있으며 사용되는 용량에 따라 비용이 청구됩니다. Amazon EC2는 유연하도록 설계되었으며 사용자는 배포된 애플리케이션을 신속하게 확장할 수 있습니다.

자세한 내용은 Amazon Web Services 웹 사이트를 참조하십시오.

Amazon 머신 이미지 정보

AMI(Amazon Machine Image)는 EC2 가상 머신 인스턴스의 템플릿입니다. 사용자는 에서 인스턴스를 만들 적절한 AMI를 선택하여 EC2 인스턴스를 생성합니다. AMI의 기본 구성 요소는 설치된 운영 체제와 기타 소프트웨어가 포함된 읽기 전용 파일 시스템입니다. 각 AMI에는 다양한 사용 사례에 맞게 다양한 소프트웨어가 설치되어 있습니다. Amazon EC2에는 Amazon Web Services 와 타사가 모두 제공하는 많은 AMI가 포함되어 있습니다. 사용자가 고유한 사용자 지정 AMI를 생성할 수도 있습니다.

JBoss EAP Amazon 머신 이미지 유형

퍼블릭 또는 프라이빗 AMI(Amazon Machine Image)를 배포하여 Amazon Elastic Compute Cloud(Amazon EC2)에서 JBoss EAP를 사용합니다.

중요

Red Hat은 현재 독립 실행형 인스턴스 또는 관리형 도메인에서 full-ha 프로필을 지원하지 않습니다.

JBoss EAP 공용 AMI
AWS Marketplace https://aws.amazon.com/marketplace 를 통해 JBoss EAP 공용 AMI에 액세스합니다. 공용 AMI는 pay-as-you-go (PAYG) 모델과 함께 제공됩니다. PAYG 모델을 사용하면 사용한 컴퓨팅 리소스 수에 따라 지불하면 됩니다.
JBoss EAP 프라이빗 AMI
기존 서브스크립션을 사용하여 Red Hat Cloud Access를 통해 JBoss EAP 프라이빗 AMI에 액세스할 수 있습니다. Red Hat Cloud Access에 대한 자세한 내용은 Red Hat Cloud Access 정보 를 참조하십시오.

Red Hat Cloud Access 정보

기존 Red Hat 서브스크립션이 있는 경우 Red Hat Cloud Access는 Amazon EC2 및 Microsoft Azure와 같은 Red Hat 인증 클라우드 인프라 공급자의 JBoss EAP 지원을 제공합니다. Red Hat Cloud Access를 사용하면 기존의 서버와 퍼블릭 클라우드 기반 리소스 간에 서브스크립션을 비용 효율적으로 이전할 수 있습니다.

고객 포털에서 Red Hat Cloud Access에 대한 자세한 정보를 확인할 수 있습니다.

Red Hat Cloud Access 기능

Red Hat Cloud Access 프로그램의 멤버십을 사용하면 Red Hat에서 생성한 지원되는 프라이빗 AMI(Amazon Machine Images)에 액세스할 수 있습니다.

Red Hat AMI에는 다음과 같은 소프트웨어가 사전 설치되어 있으며 Red Hat에서 완벽하게 지원됩니다.

  • Red Hat Enterprise Linux
  • JBoss EAP
  • Red Hat Update Infrastructure를 사용한 RPM 제품 업데이트

각 Red Hat AMI는 시작점이므로 애플리케이션의 요구 사항을 추가로 구성해야 합니다.

지원되는 Amazon EC2 인스턴스 유형

Red Hat Cloud Access는 다음과 같은 Amazon EC2 인스턴스 유형을 지원합니다. 각 인스턴스에 대한 자세한 내용은 Linux 인스턴스용 Amazon Elastic Compute Cloud 사용자 가이드를 참조하십시오.

JBoss EAP를 배포하기 위한 AMI의 최소 가상 하드웨어 요구 사항은 다음과 같습니다.

  • 가상 CPU: 2
  • memory: 4GB

그러나 JBoss EAP에 배포하는 애플리케이션에 따라 추가 프로세서와 메모리가 필요할 수 있습니다.

지원되는 Red Hat AMI

지원되는 Red Hat AMI는 다음 예와 같이 이름으로 식별할 수 있습니다.

개인 이미지 예

RHEL-7-JBEAP-7.4.0_HVM_GA-20210909-x86_64-0-Access2-GP2

공용 이미지 예

RHEL-7-JBEAP-7.4.0_HVM_GA-20220804-x86_64-0-Marketplace-GP2

  • RHEL-x 는 AMI에 설치된 Red Hat Enterprise Linux의 버전 번호입니다. 예시 7.
  • JBEAP-x.y.z 는 AMI에 설치된 JBoss EAP의 버전 번호입니다. 예 7.4.0.
  • 20220804 는 AMI가 YYYYMMDD 형식으로 생성된 날짜입니다.
  • x86_64 는 AMI의 아키텍처입니다. 이는 x86_64 또는 i386 일 수 있습니다.
  • Access2 또는 Marketplace 는 AMI가 비공개인지 퍼블릭인지 다음과 같이 나타냅니다.

    • 개인 이미지에는 Access2 가 포함되어 있습니다.
    • 공개 이미지에는 Marketplace 가 포함되어 있습니다.

2장. JBoss EAP 인스턴스 시작

다음 절차에서는 AWS(Amazon Web Services) 마켓플레이스에서 공용 JBoss EAP 인스턴스를 시작하고 Amazon EC2 콘솔에서 JBoss EAP 인스턴스를 시작하는 방법을 보여줍니다.

2.1. AWS 마켓플레이스에서 JBoss EAP 인스턴스 시작

pay-as-you-go(PAYG) 모델과 함께 제공되는 공용 JBoss EAP Amazon Machine Image(AMI)는 Amazon Web Services(AWS) 마켓플레이스에서 사용할 수 있습니다.

사전 요구 사항

  • AWS 계정이 있어야 합니다.
  • Amazon Web Services CLI는 계정 자격 증명으로 설치 및 구성됩니다.

절차

  1. URL에서 AWS 마켓플레이스로 이동하십시오. https://aws.amazon.com/marketplace.
  2. 검색 모음에서 "JBoss EAP"를 검색합니다. Red Hat LimitedRed Hat 을 선택하여 게시자로 결과를 필터링합니다.
  3. 시작할 이미지를 클릭합니다.

    참고

    유럽 연합을 기반으로 하는 경우 게시자 "Red Hat Limited"에서 이미지를 선택합니다. 그렇지 않으면 게시자 "Red Hat"에서 이미지를 선택합니다.

    소프트웨어 서브스크립션 페이지로 리디렉션됩니다.

  4. 서브스크립션 설정을 선택하고 Continue to Subscribe (서브스크립션 중 계속)를 클릭합니다.
  5. 사용 약관을 클릭하여 약관에 동의 하고 계속 구성을 클릭합니다.

    구성 페이지로 리디렉션됩니다.

  6. 구성 옵션을 선택하고 Continue to Launch 를 클릭합니다.

    소프트웨어 페이지를 실행하라는 지시가 표시됩니다.

  7. 시작 구성 세부 사항을 검토하고 시작을 클릭하여 인스턴스를 시작합니다.

2.2. AWS EC2 콘솔을 사용하여 프라이빗 AMI에서 JBoss EAP 인스턴스 시작

AWS EC2 콘솔을 사용하여 프라이빗 AMI에서 JBoss EAP 인스턴스를 시작할 수 있습니다.

AWS 명령줄 인터페이스를 사용하여 인스턴스를 시작할 수도 있습니다. AWS CLI 에 대한 자세한 내용은 AWS CLI를 참조하십시오.

사전 요구 사항

  • 고객님은 Red Hat 서브스크립션을 보유하고 있습니다.
  • AWS 계정이 있어야 합니다.
  • Amazon Web Services CLI는 계정 자격 증명으로 설치 및 구성됩니다.

절차

  1. Amazon EC2 콘솔 을 엽니다.
  2. Amazon EC2 콘솔에서 AMI를 클릭합니다.
  3. AMI (Amazon Machine Images) 패널에 있는 프라이빗 이미지에서 jbeap AMI 를 검색하고 AMI를 선택합니다.

    예를 들어 RHEL-7-JBEAP-7.4.0_HVM_GA-20210909-x86_64-0-Access2-GP2.

  4. 인스턴스 유형을 선택합니다. 지원되는 Amazon EC2 인스턴스 유형에 대한 자세한 내용은 지원 Amazon EC2 인스턴스 유형을 참조하십시오.
  5. Configure Instance Details(인스턴스 세부 정보 구성) 섹션에서 인스턴스 설정을 구성합니다.
  6. Advanced Details(고급 세부 정보 ) 섹션에서 사용자 데이터 상자에서 인스턴스 시작 시 샘플 스크립트를 붙여넣어 JBoss EAP를 실행할 수 있습니다. 샘플 스크립트에 대한 정보는 Launching JBoss EAP on Amazon EC2 Using Script 를 참조하십시오.

    참고

    필요한 경우 스토리지를 지정하고, 인스턴스에 태그를 지정하고, 보안 그룹 세부 정보를 구성합니다.

  7. 검토 및 시작을 클릭합니다. 그러면 인스턴스 시작 검토 페이지로 바로 이동합니다.
  8. Launch(시작 )를 클릭하여 키 쌍을 선택하고 인스턴스를 시작합니다.
참고

키 쌍을 선택하지 않은 경우 인스턴스를 시작하기 전에 키 쌍을 지정합니다.

3장. 비클러스터형 JBoss EAP 인스턴스 시작

이 장에서는 프라이빗 AMI 또는 공용 마켓플레이스 목록을 통해 생성된 Red Hat Amazon Machine Image(AMI)에서 JBoss EAP의 클러스터되지 않은 인스턴스를 시작하는 단계를 설명합니다.

사전 요구 사항

  • 적합한 Red Hat AMI. 자세한 내용은 지원 Red Hat AMI를 참조하십시오.
  • 22, 8080, 9990 포트에서 들어오는 요청을 허용하는 사전 구성된 보안 그룹.

클러스터되지 않은 JBoss EAP 인스턴스 시작

참고

ec2-user 사용자로 ssh 를 통해 EC2 인스턴스에 연결할 수 있습니다. 관리 권한이 필요한 경우 나중에 root 사용자로 변경할 수 있습니다. 예를 들면 다음과 같습니다.

$ ssh -l ec2-user ${INSTANCE_PUBLIC_IP}
...
$ sudo su -
  • Red Hat AMI 인스턴스를 시작합니다.

    클러스터되지 않은 JBoss EAP 인스턴스는 Red Hat AMI에서 구성 및 시작되었습니다.

  • JBoss EAP를 구성하려면 인수를 서비스에 직접 전달할 수 있습니다. 일부 인수는 이러한 방식으로 처리되지 않을 수 있습니다. 서비스 구성 파일의 위치는 다음과 같습니다.

    • RHEL 6: /etc/sysconfig/eap7-standalone
    • RHEL 7: /etc/opt/rh/eap7/wildfly/eap7-standalone.conf

    시스템 경로에 대한 자세한 내용은 시스템 경로를 참조하십시오.

참고
  • 복잡한 구성의 경우 JBoss EAP bin 디렉터리 /opt/rh/eap7/root/usr/share/wildfly/bin/ 에서 standalone.conf 파일을 사용하거나 CLI를 사용하여 JBoss EAP 서비스를 시작하고 서버를 구성할 수 있습니다. 스크립트는 bin 디렉토리에서 찾을 수 있습니다. 그런 다음 구성을 다시 로드합니다.
  • 정기적으로 yum -y 업데이트를 실행하여 보안 수정 및 개선 사항을 적용해야 합니다.
  • RHEL 6에서 JBoss EAP를 시작하려면 다음 명령을 실행합니다.

    $ service eap7-standalone start

    RHEL 7에서 JBoss EAP를 시작하려면 다음 명령을 실행합니다.

    $ systemctl start eap7-standalone
  • RHEL 6에서 JBoss EAP를 중지하려면 다음 명령을 실행합니다.

    $ service eap7-standalone stop

    RHEL 7에서 JBoss EAP를 중지하려면 다음 명령을 실행합니다.

    $ systemctl stop eap7-standalone
    참고

    systemctl 명령은 RHEL 7에만 관련이 있습니다.

참고

JBoss EAP를 다른 IP 주소에 바인딩하려면 RHEL 7의 /etc/opt/rh/eap7/wildfly/eap7-standalone.conf 파일에 다음 행을 추가합니다. 내부 IP 주소는 EC2에서 공용 IP 주소로 변환됩니다.

WILDFLY_BIND=$YOUR_PRIVATE_IP_ADDRESS

4장. 클러스터되지 않은 관리형 도메인 시작

4.1. 도메인 컨트롤러로 사용할 인스턴스를 시작합니다

이 주제에서는 프라이빗 AMI 또는 공용 마켓플레이스 목록을 통해 생성된 Red Hat Amazon Machine Image(AMI)에서 클러스터되지 않은 JBoss EAP 관리형 도메인을 시작하는 단계를 설명합니다.

사전 요구 사항
클러스터되지 않은 JBoss EAP 인스턴스 시작
참고

ec2-user 사용자로 ssh 를 통해 EC2 인스턴스에 연결할 수 있습니다. 관리 권한이 필요한 경우 나중에 root 사용자로 변경할 수 있습니다. 예를 들면 다음과 같습니다.

$ ssh -l ec2-user ${INSTANCE_PUBLIC_IP}
...
$ sudo su -
  • Red Hat AMI 인스턴스를 시작합니다.

    클러스터되지 않은 JBoss EAP 인스턴스는 Red Hat AMI에서 구성 및 시작되었습니다.

  • JBoss EAP를 구성하려면 인수를 서비스에 직접 전달할 수 있습니다. 일부 인수는 이러한 방식으로 처리되지 않을 수 있습니다. 서비스 구성 파일의 위치는 다음과 같습니다.

    • RHEL 6: /etc/sysconfig/eap7-domain
    • RHEL 7: /etc/opt/rh/eap7/wildfly/eap7-domain.conf

시스템 경로에 대한 자세한 내용은 시스템 경로를 참조하십시오.

Amazon EC2 의 JBoss EAP 하위 시스템 구성에 대한 자세한 내용은 클라우드 플랫폼에서 작업할 JBoss EAP 하위 시스템 구성을 참조하십시오.

참고
  • 복잡한 구성의 경우 JBoss EAP bin 디렉토리에서 domain.conf 파일을 /opt/rh/eap7/root/usr/share/wildfly/bin/ 로 사용하거나 관리 CLI를 사용하여 서버를 구성할 수 있습니다. 스크립트는 bin 디렉토리에서 찾을 수 있습니다. 그런 다음 구성을 다시 로드합니다.
  • 정기적으로 yum -y 업데이트를 실행하여 보안 수정 및 개선 사항을 적용해야 합니다.
  • RHEL 6에서 JBoss EAP를 시작하려면 다음 명령을 실행합니다.

    $ service eap7-domain start

    RHEL 7에서 JBoss EAP를 시작하려면 다음 명령을 실행합니다.

    $ systemctl start eap7-domain
  • RHEL 6에서 JBoss EAP를 중지하려면 다음 명령을 실행합니다.

    $ service eap7-domain stop

    RHEL 7에서 JBoss EAP를 중지하려면 다음 명령을 실행합니다.

    $ systemctl stop eap7-domain
    참고

    systemctl 명령은 RHEL 7에만 관련이 있습니다.

참고

JBoss EAP를 다른 IP 주소에 바인딩하려면 RHEL 7의 /etc/opt/rh/eap7/wildfly/eap7-domain.conf 파일에 다음 행을 추가합니다. 내부 IP 주소는 EC2에서 공용 IP 주소로 변환됩니다.

WILDFLY_BIND=$YOUR_PRIVATE_IP_ADDRESS

4.2. 호스트 컨트롤러로 제공할 하나 이상의 인스턴스를 시작합니다

이 주제에서는 프라이빗 AMI 또는 공용 마켓플레이스 목록을 통해 생성된 Red Hat AMI에서 클러스터되지 않은 호스트 컨트롤러 역할을 하기 위해 JBoss EAP 인스턴스를 하나 이상 시작하는 단계를 나열합니다.

비클러스터형 도메인 컨트롤러를 구성하고 시작합니다. 도메인 컨트롤러로 사용하기 위해 인스턴스 시작을 참조하십시오.

시스템 경로에 대한 자세한 내용은 시스템 경로를 참조하십시오.

Amazon EC2 의 JBoss EAP 하위 시스템 구성에 대한 자세한 내용은 클라우드 플랫폼에서 작업할 JBoss EAP 하위 시스템 구성을 참조하십시오.

도메인 컨트롤러 인스턴스의 경우

Amazon EC2에서 실행되는 관리형 도메인의 경우 정적 도메인 컨트롤러 검색 외에도 호스트 컨트롤러는 Amazon S3(Amazon Simple Storage) 시스템을 사용하여 도메인 컨트롤러를 동적으로 검색할 수 있습니다. 특히 호스트 컨트롤러와 도메인 컨트롤러는 Amazon S3 버킷에 액세스하는 데 필요한 정보를 사용하여 구성할 수 있습니다.

도메인 컨트롤러를 시작할 때 이 구성을 사용하여 버킷의 S3 파일에 연락처 정보를 씁니다. 호스트 컨트롤러가 도메인 컨트롤러에 접속하려고 할 때마다 S3 파일에서 도메인 컨트롤러의 연락처 정보를 가져옵니다.

예를 들어 Amazon EC2 인스턴스의 IP 주소를 중지하고 시작할 때 변경하는 것이 일반적입니다. 이 시나리오에서는 도메인 컨트롤러의 연락처 정보가 변경되면 호스트 컨트롤러를 재구성할 필요가 없습니다. 호스트 컨트롤러는 S3 파일에서 도메인 컨트롤러의 새 연락처 정보를 가져올 수 있습니다.

사용자 데이터용 샘플 스크립트에 대한 자세한 내용은 클러스터형 JBoss EAP 인스턴스의 예제 사용자 데이터를 참조하십시오.

수동 도메인 컨트롤러 검색 구성은 다음 속성을 사용하여 지정합니다.

  • access-key: Amazon AWS 사용자 계정 액세스 키입니다.
  • secret-access-key: Amazon AWS 사용자 계정 시크릿 액세스 키입니다.
  • 위치: 사용할 Amazon S3 버킷입니다.

    1. /opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/configs 에서 JBoss EAP 구성 디렉터리에 domain-ec2.xml 파일을 복사합니다.
    2. 적절한 서비스 구성 파일에서 다음 변수를 설정합니다.

      WILDFLY_SERVER_CONFIG=domain-ec2.xml
      WILDFLY_HOST_CONFIG=host-master.xml
    3. 도메인 -ec2.xml 파일에 S3 도메인 컨트롤러 검색 구성을 추가합니다.

      <local>
          <discovery-options>
              <discovery-option name="s3-discovery" module="org.jboss.as.host-controller" code="org.jboss.as.host.controller.discovery.S3Discovery">
                  <property name="access-key" value="S3_ACCESS_KEY"/>
                  <property name="secret-access-key" value="S3_SECRET_ACCESS_KEY"/>
                  <property name="location" value="S3_BUCKET_NAME"/>
              </discovery-option>
          </discovery-options>
      </local>

5장. 클러스터형 JBoss EAP 시작

5.1. Clustered JBoss EAP AMI를 시작합니다(mod_cluster 및 VPC 없이)

이 주제에서는 mod_cluster 및 VPC 없이 클러스터형 JBoss EAP AMI를 시작하는 단계를 설명합니다.

참고
  • 이미지와 함께 제공되는 예제 구성 스크립트를 사용할 수 있습니다.

시스템 경로에 대한 자세한 내용은 시스템 경로를 참조하십시오.

Amazon EC2 의 JBoss EAP 하위 시스템 구성에 대한 자세한 내용은 클라우드 플랫폼에서 작업할 JBoss EAP 하위 시스템 구성을 참조하십시오.

독립 실행형 서버 인스턴스에서 클러스터형 JBoss EAP AMI를 시작하려면 사전 구성된 S3_PING JGroups 스택을 포함하는 /opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/standalone-ec2-ha.xml 파일을 사용할 수 있습니다. 자세한 내용은 JGroups와의 Reliable 그룹 통신 문서의 S3_PING 을 참조하십시오. 이 standalone-ec2-ha.xml 프로필 파일은 /opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/ 에서 JBoss EAP 구성 디렉토리 /opt/rh/eap7/root/usr/share/wildfly/standalone/configuration/ 로 복사해야 합니다. 그런 다음 JBoss EAP 서비스 구성 파일에 다음 행을 추가해야 합니다.

WILDFLY_SERVER_CONFIG=standalone-ec2-ha.xml

undertow 하위 시스템의 각 독립 실행형 서버 인스턴스에 대해 고유한 instance -id 를 설정해야 합니다. instance-id의 값은 standalone- ec2-ha.xml 파일을 편집하거나 관리 CLI를 사용하여 수동으로 설정할 수 있습니다. 예를 들어 다음과 같이 관리 CLI를 사용하여 instance-id 를 설정할 수 있습니다.

/subsystem=undertow:write-attribute(name=instance-id,value={${jboss.jvmRoute}})

그런 다음 JAVA_OPTS 변수를 사용하여 standalone.conf에서 jboss. jvmRoute 값을 지정할 수 있습니다.

EC2 구성 파일의 jgroups 하위 시스템에는 클러스터 구성원을 검색하기 위해 일부 S3_PING 특정 속성이 필요합니다. 검색에 사용할 S3, 시크릿 액세스 키 및 S3 버킷에 대한 액세스 키를 지정해야 합니다. 이러한 속성은 Java 옵션으로 지정하거나 CLI를 사용하여 XML 파일에 직접 배치할 수 있습니다.

검색을 위해 S3 버킷을 생성해야 합니다. 자세한 내용은 Amazon Simple Storage Service 문서를 참조하십시오. 필요한 권한을 구성해야 할 수도 있습니다. JGroups 스택은 다른 노드와 통신하는 데 사용되는 IP 주소에 바인딩해야 합니다. 이 작업은 Java 옵션과 S3 Java 옵션을 /opt/rh/eap7/root/usr/share/wildfly/bin/standalone.conf 파일에 추가하여 수행할 수 있습니다. 예를 들어 개인 IP 주소가 10.10.10.10 인 경우 standalone. conf 파일에 다음 행을 추가합니다.

JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.private=10.10.10.10"

샘플 애플리케이션을 배포할 수 있습니다. /opt/rh/eap7/root/usr/share/java/eap7-jboss2-eap-samples/cluster-demo.war 는 JBoss EAP 서버가 클러스터를 생성했는지 확인하기 위해 /opt/rh/eap7/root/usr/share/wildfly/standalone/log/server.log 의 로그를 관찰할 수 있습니다.

도메인 컨트롤러 인스턴스의 경우
  1. /opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/configs 에서 JBoss EAP 구성 디렉터리에 domain-ec2.xml 파일을 복사합니다.
  2. 적절한 서비스 구성 파일에서 다음 변수를 설정합니다.

    WILDFLY_SERVER_CONFIG=domain-ec2.xml
    WILDFLY_HOST_CONFIG=host-master.xml
  3. S3 도메인 컨트롤러 검색 구성을 host-master.xml 파일에 추가합니다.

    <local>
        <discovery-options>
            <discovery-option name="s3-discovery" module="org.jboss.as.host-controller" code="org.jboss.as.host.controller.discovery.S3Discovery">
                <property name="access-key" value="S3_ACCESS_KEY"/>
                <property name="secret-access-key" value="S3_SECRET_ACCESS_KEY"/>
                <property name="location" value="S3_BUCKET_NAME"/>
            </discovery-option>
        </discovery-options>
    </local>
  4. 사용자를 구성하고 사용자의 시크릿 값을 호스트 컨트롤러 인스턴스에 추가합니다. 자세한 내용은 JBoss EAP 구성 가이드에서 관리형 도메인 생성을 참조하십시오.
호스트 컨트롤러 인스턴스의 경우
  1. 적절한 서비스 구성 파일에서 다음 변수를 설정합니다.

    WILDFLY_HOST_CONFIG=host-slave.xml
  2. S3 도메인 컨트롤러 검색 구성을 host-slave.xml 파일에 추가합니다.

    <remote security-realm="ManagementRealm">
        <discovery-options>
            <discovery-option name="s3-discovery" module="org.jboss.as.host-controller" code="org.jboss.as.host.controller.discovery.S3Discovery">
                <property name="access-key" value="S3_ACCESS_KEY"/>
                <property name="secret-access-key" value="S3_SECRET_ACCESS_KEY"/>
                <property name="location" value="S3_BUCKET_NAME"/>
            </discovery-option>
        </discovery-options>
    </remote>
    참고

    S3 도메인 컨트롤러 검색에 대한 자세한 내용은 호스트 컨트롤러 로 제공할 인스턴스 시작을 참조하십시오.

주의

24비트보다 작은 네트워크 마스크가 있는 서브넷에서 JBoss EAP 클러스터를 실행하거나 여러 서브넷에 걸쳐 있는 경우 각 클러스터 구성원에 대해 고유한 서버 피어 ID를 획득합니다.

중요

자동 확장 Amazon EC2 기능은 JBoss EAP 클러스터 노드에서 사용할 수 있습니다. 그러나 배포 전에 테스트되었는지 확인합니다. 특정 워크로드가 필요한 노드 수로 확장되고 성능이 사용하려는 인스턴스 유형에 대한 요구 사항을 충족하는지 확인해야 하며, 다른 인스턴스 유형에는 EC2 클라우드 리소스의 다른 공유가 수신되어야 합니다.

또한 인스턴스 로컬 및 현재 네트워크/스토리지/호스트 시스템/RDS 사용률은 클러스터 성능에 영향을 줄 수 있습니다. 예상되는 실제 수명 부하를 테스트하고 예기치 않은 상황을 고려하십시오.

주의

Amazon EC2 확장 작업 에서는 정상적으로 종료할 기회 없이 노드를 종료하고 일부 트랜잭션이 중단될 수 있으므로 다른 클러스터 노드와 로드 밸런서가 실패하는 데 시간이 필요합니다. 이는 애플리케이션 사용자의 환경에 영향을 줄 수 있습니다.

처리된 세션이 완료될 때까지 mod_cluster 관리 인터페이스에서 서버를 비활성화하거나 인스턴스 또는 Red Hat JBoss Operations Network에 대한 SSH 액세스를 사용하여 JBoss EAP 인스턴스를 정상적으로 종료하여 애플리케이션 클러스터를 수동으로 축소하는 것이 좋습니다.

축소 절차를 테스트해도 사용자의 환경에 부정적인 영향을 미치지 않습니다. 특정 워크로드, 로드 밸런서 및 설정에 추가 측정값이 필요할 수 있습니다.

5.2. Clustered JBoss EAP AMI 시작(mod_cluster 및 VPC 사용)

이 주제에서는 mod_cluster 프록시 역할을 할 Apache HTTP 서버 인스턴스를 시작하는 단계와 VPC(Virtual Private Cloud)에 대한 NAT 인스턴스를 나열합니다.

시스템 경로에 대한 자세한 내용은 시스템 경로를 참조하십시오.

Amazon EC2 의 JBoss EAP 하위 시스템 구성에 대한 자세한 내용은 클라우드 플랫폼에서 작업할 JBoss EAP 하위 시스템 구성을 참조하십시오.

참고
  • 이미지와 함께 제공되는 예제 구성 스크립트를 사용할 수 있습니다.

Amazon VPC(Amazon Virtual Private Cloud)는 프라이빗 네트워크에서 AWS 리소스 세트를 격리할 수 있는 AWS(Amazon Web Services)의 기능입니다. 이 사설 네트워크의 토폴로지 및 구성을 요구 사항에 맞게 사용자 지정할 수 있습니다.

Amazon VPC에 대한 자세한 내용은 Amazon Virtual Private Cloud 를 참조하십시오.

참고

VPC 내부에서 mod_cluster 로드 밸런서로 클러스터를 시작하면 JBoss EAP 서버에 액세스할 수 없습니다. mod_cluster 로드 밸런서는 인터넷에 연결된 유일한 엔드포인트가 될 수 있습니다.

도메인 컨트롤러 인스턴스 설정을 위해 도메인 컨트롤러로 제공하도록 인스턴스 시작을 참조하십시오.

호스트 컨트롤러 인스턴스를 설정하려면 하나 이상의 인스턴스 시작을 참조하십시오.

S3 도메인 컨트롤러 검색에 대한 자세한 내용은 호스트 컨트롤러로 제공하는 하나 이상의 인스턴스 시작을 참조하십시오.

참고

VPC 구성은 선택 사항입니다. 자세한 내용은 Amazon VPC 사용자 가이드에 있는 지원 플랫폼 감지 및 기본 VPC 섹션을 참조하십시오.

  1. jbcs-httpd24-mod_cluster-native 패키지 및 모든 종속 항목을 설치합니다. mod_cluster 구성 파일은 /opt/rh/jbcs-httpd24/root/etc/httpd/conf.d/mod_cluster.conf 에 설치됩니다.

Red Hat JBoss Core Services Apache HTTP Server 설치에 대한 자세한 내용은 Apache HTTP Server 설치 가이드를 참조하십시오.

  1. mod_cluster 에 대한 알림을 비활성화합니다. /opt/rh/jbcs-httpd24/root/etc/httpd/conf.d/mod_cluster.conf 구성 파일의 VirtualHost 에 다음을 추가합니다.

    ServerAdvertise Off
    EnableMCPMReceive
    # AdvertiseFrequency # comment out AdvertiseFrequency if present
  2. SELinux 에서 포트를 허용합니다. 필요한 경우 iptables 를 구성합니다. 포트는 semanage port -a -t http_port_t -p tcp $PORT_NR 명령을 사용하여 SELinux에서 허용할 수 있습니다.
  3. mod_cluster가 수신 대기하는 주소에서 mod_cluster 프록시를 찾도록 JBoss EAP를 구성합니다.

    참고

    /opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/standalone-ec2-ha.xml 예제 구성 파일이 제공됩니다. modcluster 하위 시스템에서 프록시 목록을 구성해야 합니다.

    다음 방법 중 하나를 사용하여 프록시 목록을 정의할 수 있습니다.

    • 적절한 호스트 및 포트를 사용하여 mod -cluster-proxy1이라는 아웃바운드- 소켓-바인 딩을 정의합니다.

      <outbound-socket-binding name="mod-cluster-proxy1">
          <remote-destination host="${jboss.modcluster.proxy1.host}" port="${jboss.modcluster.proxy1.port}"/>
      </outbound-socket-binding>
    • modcluster 하위 시스템에서 proxy 속성을 적절한 호스트 및 포트가 있는 mod-cluster-proxy1 로 설정합니다.

      /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=mod-cluster-proxy1:add(host={${jboss.modcluster.proxy1.host}}, port={${jboss.modcluster.proxy1.port}})

6장. 문제 해결

6.1. Amazon EC2 문제 해결 정보

EC2는 각 인스턴스에 대해 알람 상태를 제공하여 심각한 인스턴스 오작동을 나타내지만 이러한 알람이 없으면 인스턴스가 올바르게 시작되고 서비스가 제대로 실행되고 있음을 보장할 수 없습니다. 인스턴스 서비스 상태를 모니터링하는 데 사용자 지정 지표 기능과 함께 Amazon CloudMonitor를 사용할 수 있지만 엔터프라이즈 관리 솔루션을 사용하는 것이 좋습니다.

6.2. 진단 정보

JBoss Operations Network, Amazon CloudMonitor 또는 수동 검사로 인해 문제가 발견되는 경우 진단 정보의 일반적인 소스는 다음과 같습니다.

  • /var/log 에는 시스템 시작, JBoss EAP, httpd 및 대부분의 기타 서비스에서 수집된 모든 로그도 포함되어 있습니다.

JBoss EAP 로그 파일은 /opt/rh/eap7/root/usr/share/wildfly/ 에서 찾을 수 있습니다.

이러한 파일에 대한 액세스는 SSH 세션을 사용해서만 사용할 수 있습니다.

Amazon EC2 인스턴스를 사용하여 SSH 세션을 구성 및 설정하는 방법에 대한 자세한 내용은 Amazon EC2 Linux 인스턴스 시작하기 를 참조하십시오.

부록 A. 참고 자료

A.1. Red Hat Cloud Access 프로그램용 Amazon EC2 AMI

AMI는 Red Hat Enterprise Linux 이미지에 JBoss EAP + JDK의 기본 RPM 설치이며 Amazon EC2 예제 구성이 가능합니다. 고급 스크립팅을 더 이상 사용할 수 없지만 일반 bash 스크립트를 사용할 수 있습니다.

플랫폼/JDK 조합을 위한 AMI:
  • RHEL 6 + Open JDK 8 (1 이미지)
  • RHEL 7 + Open JDK 8 (1 이미지)
참고

두 플랫폼은 모두 64비트 아키텍처여야 합니다.

AMI 유지 관리

EC2에 z 릴리스(패치)를 적용하려면 yum update 를 정기적으로 실행해야 합니다. Red Hat은 Y 릴리스 (마이너 릴리스)에 대한 새로운 AMI를 제공합니다.

시나리오 1 (지원됨)
  1. EC2에 가입.
  2. Red Hat Cloud Access 신청하기.
  3. 사용 가능한 AMI 목록에서 Red Hat AMI를 선택합니다.
  4. (선택 사항) 사용자 스크립트 또는 ssh 를 사용하여 JBoss EAP 구성 사용자 지정.
  5. 유지 관리: z 릴리스의 yum update, y 릴리스를 위한 새로운 AMI.

A.2. 구성 파일 및 배포 예

다음 패키지는 RHEL 7 AMI 버전에 대한 배포 예제를 추가합니다.

$ rpm -ql eap7-jboss-ec2-eap-samples
/opt/rh/eap7/root/usr/share/java/eap7-jboss-ec2-eap-samples/cluster-demo.war
/opt/rh/eap7/root/usr/share/java/eap7-jboss-ec2-eap-samples/hello.war
/opt/rh/eap7/root/usr/share/java/eap7-jboss-ec2-eap-samples/jboss-as-helloworld-mdb-7.0.0.ER5-redhat-1.war

JBoss EAP 예제 구성 파일에는 EC2 간에 클러스터를 생성하는 데 사용할 수 있는 S3_PING 프로토콜에 설정된 JGroups 스택이 포함되어 있습니다. 예제 구성 파일의 정확한 위치는 시스템 경로를 참조하십시오.

두 구성 파일 모두 EC2에서 멀티캐스트가 비활성화되므로 프록시 mod_cluster 검색을 사용하기 위해 modcluster 하위 시스템이 포함되어 있습니다.

A.3. 시스템 경로

서비스 설정 파일:
  • RHEL 6: /etc/sysconfig/*
  • RHEL 7: /etc/opt/rh/eap7/wildfly/*
JBoss EAP 홈:
  • /opt/rh/eap7/root/usr/share/wildfly/
JBoss EAP 구성 위치:
독립 실행형 인스턴스
  • /opt/rh/eap7/root/usr/share/wildfly/standalone/configuration
  • /opt/rh/eap7/root/usr/share/wildfly/bin/standalone.conf
관리형 도메인
  • /opt/rh/eap7/root/usr/share/wildfly/bin/domain.conf
  • /opt/rh/eap7/root/usr/share/wildfly/domain/configuration
JBoss EAP 예제 구성 위치:
  • /opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/standalone-ec2-ha.xml
  • /opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/standalone-ec2-full-ha.xml

A.4. 스크립트를 사용하여 Amazon EC2에서 JBoss EAP 시작

다음 샘플 스크립트는 Amazon EC2에서 JBoss EAP 인스턴스를 시작할 때 공용 IP 주소에 바인드된 JBoss EAP를 시작하는 데 사용할 수 있습니다.

#!/bin/bash

# platform dependent variables
if [[ "`cat /etc/redhat-release`" = *"release 7"* ]]; then
    SERVICE_CONF_FILE=/etc/opt/rh/eap7/wildfly/eap7-standalone.conf
    START_COMMAND="systemctl start eap7-standalone"
else
    SERVICE_CONF_FILE=/etc/sysconfig/eap7-standalone
    START_COMMAND="service eap7-standalone start"
fi

# set up addresses
INTERNAL_IP_ADDRESS=`ip addr show | grep eth0 -A 2 | head -n 3 | tail -n 1 | awk '{ print $2 }' | sed "s-/24--g" | cut -d'/' -f1`
echo "JAVA_OPTS=\"$JAVA_OPTS -Djboss.bind.address=$INTERNAL_IP_ADDRESS -Djboss.bind.address.private=$INTERNAL_IP_ADDRESS -Djboss.bind.address.management=$INTERNAL_IP_ADDRESS\"" >> /opt/rh/eap7/root/usr/share/wildfly/bin/standalone.conf

# start EAP
$START_COMMAND

A.5. 클라우드 플랫폼에서 작업할 JBoss EAP 하위 시스템 구성

일부 JBoss EAP 하위 시스템은 Amazon EC2 및 Microsoft Azure와 같은 클라우드 플랫폼에서 제대로 작동하도록 구성해야 합니다. 이 작업은 일반적으로 JBoss EAP 서버가 클라우드 가상 시스템의 프라이빗 IP 주소에 바인딩되어 있기 때문에 필요합니다. 예를 들면 다음과 같습니다. 10.x.x.x - 클라우드 플랫폼 내에서만 볼 수 있습니다. 특정 하위 시스템에서 이 주소는 클라우드 외부에서 볼 수 있는 서버의 공용 IP 주소에 매핑되어야 합니다.

A.5.1. 웹 서비스

클라이언트가 Service.create(wsdlURL, serviceName)을 사용하여 웹 서비스를 요청하면 사용자가 서버 공용 IP 주소에 연결되지만 이후 웹 서비스 하위 시스템의 서버 구성 파일에 정의된 주소로 리디렉션됩니다. 기본적으로 이 주소는 ${jboss.bind.address:127.0.0.1} 입니다. 이는 클라우드 플랫폼에서 호출자가 서버의 개인 IP 주소로 리디렉션되며 요청을 확인할 수 없음을 의미합니다. 다음 명령을 사용하여 서버의 공용 IP 주소를 wsdl-host 요소에 구성해야 합니다.

/subsystem=webservices:write-attribute(name=wsdl-host,value=PUBLIC_IP_ADDRESS)

A.5.2. 메시징

클라우드 플랫폼에서 메시징을 사용하는 경우 클라이언트에서 사용하는 연결 팩토리에 서버의 공용 IP 주소를 가리키는 커넥터가 있어야 합니다.

이러한 이유로 전체 프로필을 실행하는 JBoss EAP 서버의 새 커넥터 및 소켓 바인딩을 생성해야 합니다.

  1. 참조된 http-public 소켓 바인딩은 socket-binding-group 내에 생성해야 합니다.

    /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=http-public:add(host=PUBLIC_IP_ADDRESS,port=${jboss.http.port:8080})
  2. messaging 하위 시스템에서 새 http-connector 요소를 생성합니다.

    /subsystem=messaging-activemq/server=default/http-connector=http-public-connector:add(endpoint=http-acceptor, socket-binding=http-public)
  3. 클라이언트에서 사용할 connection-factory 에서 커넥터 를 설정합니다. 예를 들어 기본 연결로 RemoteConnectionFactory 의 구성은 다음과 같습니다.

    /subsystem=messaging-activemq/server=default/connection-factory=RemoteConnectionFactory:write-attribute(name=connectors, value=["http-public-connector"]

A.5.3. 고가용성 구성 원격

클라우드 플랫폼에서 클러스터형 Jakarta Enterprise Beans와 함께 JBoss EAP HA 기능을 사용하는 경우 Jakarta Enterprise Beans 클라이언트가 클러스터 보기 업데이트를 수신할 수 있도록 리모팅 하위 시스템에 대한 일부 추가 구성이 필요합니다.

이는 원격 하위 시스템 소켓 바인딩 에 대한 클라이언트 매핑 을 구성하여 수행됩니다.

/socket-binding-group=standard-sockets/socket-binding=http:write-attribute(name=client-mappings,value=[{ "destination-address" => "PUBLIC_IP_ADDRESS", "destination-port" => "8080" }])

A.6. 클러스터형 JBoss EAP 인스턴스의 사용자 데이터 예

다음 예제에서는 다양한 서버 구성에 대해 구성된 사용자 데이터를 보여줍니다.

예제: RHEL6/7의 독립 실행형 모드 파일
#!/usr/bin/env bash

# This is a sample script for the user data field for EC2, which demonstrates how to launch a standalone instance using the ec2-ha profile
# This file is for RHEL 6/7, standalone mode only
### This script makes use of the following four Bash variables for clustering setup,
### be sure to add in your own values for these variables here when copy/pasting this
### script into the EC2 user data field

ACCESS_KEY_ID=<your AWS access key>
SECRET_ACCESS_KEY=<your AWS secret access key>
S3_PING_BUCKET=<your bucket name>
NODE_NAME=<your node name>

#### No further modifications should be needed below to run this example ####
# Set the location of JBoss EAP
JBOSS_HOME=/opt/rh/eap7/root/usr/share/wildfly

# Set the internal IP address of this EC2 instance which is mapped to a public address
INTERNAL_IP_ADDRESS=`ip addr show | grep eth0 -A 2 | head -n 3 | tail -n 1 | awk '{ print $2 }' | sed "s-/24--g" | cut -d'/' -f1`

# Set the location of the standalone.conf file and set the command used to start EAP in standalone mode
if [[ "`cat /etc/redhat-release`" = *"release 7"* ]]; then
    SERVICE_CONF_FILE=/etc/opt/rh/eap7/wildfly/eap7-standalone.conf
    START_COMMAND="systemctl start eap7-standalone"
else
    SERVICE_CONF_FILE=/etc/sysconfig/eap7-standalone
    START_COMMAND="service eap7-standalone start"
fi

# Configure JBoss EAP to use the ec2-ha profile
cp /opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/standalone-ec2-ha.xml $JBOSS_HOME/standalone/configuration/standalone-ec2-ha.xml
echo "WILDFLY_SERVER_CONFIG=standalone-ec2-ha.xml" >> $SERVICE_CONF_FILE
echo "WILDFLY_BIND=$INTERNAL_IP_ADDRESS" >> $SERVICE_CONF_FILE
echo "JAVA_OPTS=\"\$JAVA_OPTS -Djboss.jgroups.s3_ping.access_key='$ACCESS_KEY_ID' -Djboss.jgroups.s3_ping.secret_access_key='$SECRET_ACCESS_KEY' -Djboss.jgroups.s3_ping.bucket='$S3_PING_BUCKET' -Djboss.jvmRoute=$NODE_NAME\"" >> $JBOSS_HOME/bin/standalone.conf
echo "JAVA_OPTS=\"\$JAVA_OPTS -Djboss.bind.address=$INTERNAL_IP_ADDRESS -Djboss.bind.address.private=$INTERNAL_IP_ADDRESS\"" >> $JBOSS_HOME/bin/standalone.conf

# Deploy the sample application from the local filesystem
cp /opt/rh/eap7/root/usr/share/java/eap7-jboss-ec2-eap-samples/cluster-demo.war $JBOSS_HOME/standalone/deployments/

# Start JBoss EAP, note that RHEL 7 does not wait for JBoss EAP to start before returning from the service start. In some cases, there could be a delay of more than 90 seconds.

$START_COMMAND
예제: 클러스터형 도메인 인스턴스(도메인 컨트롤러)를 시작하는 파일
#!/usr/bin/env bash

# This is a sample script for the user data field for EC2, which demonstrates how to launch a domain controller with clustering enabled
# This file is for RHEL 6/7, domain controller, domain mode only
### This script makes use of the following Bash variables for clustering and domain
### controller discovery setup, be sure to add in your own values for these variables here
### when copy/pasting this script into the EC2 user data field

ACCESS_KEY_ID=<your access key id>
SECRET_ACCESS_KEY=<your secret access key>
S3_PING_BUCKET=<your s3 ping bucket>

#### No further modifications should be needed below to run this example ####
# Set the location of JBoss EAP
JBOSS_HOME=/opt/rh/eap7/root/usr/share/wildfly
CONF_FILE=/opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/domain-ec2.xml

# Set the internal IP address of this EC2 instance which is mapped to a public address

INTERNAL_IP_ADDRESS=`ip addr show | grep eth0 -A 2 | head -n 3 | tail -n 1 | awk '{ print $2 }' | sed "s-/24--g" | cut -d'/' -f1`



# Set the location of the domain.conf file and set the command used to start EAP in domain mode
if [[ "`cat /etc/redhat-release`" = *"release 7"* ]]; then
    SERVICE_CONF_FILE=/etc/opt/rh/eap7/wildfly/eap7-domain.conf
    START_COMMAND="systemctl start eap7-domain"
else
    SERVICE_CONF_FILE=/etc/sysconfig/eap7-domain
    START_COMMAND="service eap7-domain start"
fi

# Configure JBoss EAP to use the domain-ec2.xml and host-master.xml configuration files
cp ${CONF_FILE} $JBOSS_HOME/domain/configuration/domain-ec2.xml

echo "WILDFLY_SERVER_CONFIG=domain-ec2.xml" >> $SERVICE_CONF_FILE
echo "WILDFLY_HOST_CONFIG=host-master.xml" >> $SERVICE_CONF_FILE
echo "WILDFLY_BIND=$INTERNAL_IP_ADDRESS" >> $SERVICE_CONF_FILE
echo "JAVA_OPTS=\"\$JAVA_OPTS -Djboss.jgroups.s3_ping.access_key='$ACCESS_KEY_ID' -Djboss.jgroups.s3_ping.secret_access_key='$SECRET_ACCESS_KEY' -Djboss.jgroups.s3_ping.bucket='$S3_PING_BUCKET'\"" >> $JBOSS_HOME/bin/domain.conf

echo "JAVA_OPTS=\"\$JAVA_OPTS -Djboss.bind.address=$INTERNAL_IP_ADDRESS -Djboss.bind.address.private=$INTERNAL_IP_ADDRESS -Djboss.bind.address.management=$INTERNAL_IP_ADDRESS\"" >> $JBOSS_HOME/bin/domain.conf

echo 'HOST_CONTROLLER_JAVA_OPTS="$HOST_CONTROLLER_JAVA_OPTS $JAVA_OPTS"' >> $JBOSS_HOME/bin/domain.conf

# Add a management user with the following credentials:
# User name: admin
# Password: secret_Passw0rd
$JBOSS_HOME/bin/add-user.sh -u admin -p secret_Passw0rd -e -g Management

# Update the main-server-group in domain-ec2.xml to use the ec2-ha profile
$JBOSS_HOME/bin/jboss-cli.sh --commands="embed-host-controller --domain-config=domain-ec2.xml, /server-group=main-server-group:write-attribute(name=profile, value=ha)"

# Need to modify permissions since this script is executed as the root user
chgrp jboss $JBOSS_HOME/domain/configuration/domain_xml_history/
chgrp jboss $JBOSS_HOME/domain/configuration/host_xml_history/
chgrp jboss $JBOSS_HOME/domain/configuration/domain-ec2.xml
chgrp jboss $JBOSS_HOME/domain/log/audit.log
chgrp jboss $JBOSS_HOME/domain/log/host-controller.log
chown jboss $JBOSS_HOME/domain/configuration/domain_xml_history/
chown jboss $JBOSS_HOME/domain/configuration/host_xml_history/
chown jboss $JBOSS_HOME/domain/configuration/domain-ec2.xml
chown jboss $JBOSS_HOME/domain/log/audit.log
chown jboss $JBOSS_HOME/domain/log/host-controller.log

# Configure S3 domain controller discovery
yum install patch -y
cd $JBOSS_HOME/domain/configuration
echo "--- host-master.xml	2016-03-18 17:34:26.000000000 -0400
+++ host-master2.xml	2016-04-11 08:28:02.771000191 -0400
@@ -54,7 +54,15 @@
         </management-interfaces>
     </management>
     <domain-controller>
-        <local/>
+<local>
+    <discovery-options>
+        <discovery-option name=\"s3-discovery\" module=\"org.jboss.as.host-controller\" code=\"org.jboss.as.host.controller.discovery.S3Discovery\">
+            <property name=\"access-key\" value=\"$ACCESS_KEY_ID\"/>
+            <property name=\"secret-access-key\" value=\"$SECRET_ACCESS_KEY\"/>
+            <property name=\"location\" value=\"$S3_PING_BUCKET\"/>
+        </discovery-option>
+    </discovery-options>
+</local>
     </domain-controller>
     <interfaces>
         <interface name=\"management\">
" | patch host-master.xml

cd -

# Start JBoss EAP, do not forget that RHEL 7 does not wait for JBoss EAP to start before returning from the service start. In some cases, there could be a delay of more than 90 seconds.

$START_COMMAND
sleep 20
# Set up EC2 HA socket bindings for main server group
$JBOSS_HOME/bin/jboss-cli.sh -c --controller=$INTERNAL_IP_ADDRESS:9990 --timeout=120000 --command='/server-group=main-server-group:write-attribute(name=socket-binding-group,value=ha-sockets)'

# Deploy the sample application from the local filesystem to the main-server-group
$JBOSS_HOME/bin/jboss-cli.sh -c --controller=$INTERNAL_IP_ADDRESS:9990 --timeout=120000 --command='deploy /opt/rh/eap7/root/usr/share/java/eap7-jboss-ec2-eap-samples/cluster-demo.war --server-groups=main-server-group'
예제: 클러스터된 도메인 인스턴스(호스트 컨트롤러)를 시작하는 파일
#!/usr/bin/env bash

# This is a sample script for the user data field for EC2, which demonstrates how to launch a host controller with clustering enabled
# This file is for RHEL 6/7, host controller, domain mode only
### This script makes use of the following Bash variables for clustering and domain
### controller discovery setup, be sure to add in your own values for these variables here
### when copy/pasting this script into the EC2 user data field

ACCESS_KEY_ID=<your access key id>
SECRET_ACCESS_KEY=<your secret access key>
S3_PING_BUCKET=<your s3 ping bucket>

#### No further modifications should be needed below to run this example ####
# Set the location of EAP
JBOSS_HOME=/opt/rh/eap7/root/usr/share/wildfly

# Set the internal IP address of this EC2 instance which is mapped to a public address
INTERNAL_IP_ADDRESS=`ip addr show | grep eth0 -A 2 | head -n 3 | tail -n 1 | awk '{ print $2 }' | sed "s-/24--g" | cut -d'/' -f1`

# Set the location of the domain.conf file and set the command used to start EAP in domain mode
if [[ "`cat /etc/redhat-release`" = *"release 7"* ]]; then
    SERVICE_CONF_FILE=/etc/opt/rh/eap7/wildfly/eap7-domain.conf
    START_COMMAND="systemctl start eap7-domain"
else
    SERVICE_CONF_FILE=/etc/sysconfig/eap7-domain
    START_COMMAND="service eap7-domain start"
fi

# Configure variables needed by JBoss EAP
echo "WILDFLY_BIND=$INTERNAL_IP_ADDRESS" >> $SERVICE_CONF_FILE
echo "WILDFLY_HOST_CONFIG=host-slave.xml" >> $SERVICE_CONF_FILE
echo "JAVA_OPTS=\"\$JAVA_OPTS -Djboss.jgroups.s3_ping.access_key='$ACCESS_KEY_ID' -Djboss.jgroups.s3_ping.secret_access_key='$SECRET_ACCESS_KEY' -Djboss.jgroups.s3_ping.bucket='$S3_PING_BUCKET'\"" >> $JBOSS_HOME/bin/domain.conf
echo "JAVA_OPTS=\"\$JAVA_OPTS -Djboss.bind.address=$INTERNAL_IP_ADDRESS -Djboss.bind.address.private=$INTERNAL_IP_ADDRESS -Djboss.bind.address.management=$INTERNAL_IP_ADDRESS\"" >> $JBOSS_HOME/bin/domain.conf
echo 'HOST_CONTROLLER_JAVA_OPTS="$HOST_CONTROLLER_JAVA_OPTS $JAVA_OPTS"' >> $JBOSS_HOME/bin/domain.conf

# Configure S3 domain controller discovery
yum install patch -y
cd $JBOSS_HOME/domain/configuration

echo "--- host-slave.xml.orig	2016-06-07 09:55:27.183390617 +0200
+++ host-slave.xml	2016-06-07 09:56:52.540170784 +0200
@@ -57,7 +57,11 @@
     <domain-controller>
         <remote security-realm=\"ManagementRealm\">
             <discovery-options>
-                <static-discovery name=\"primary\" protocol=\"\${jboss.domain.master.protocol:remote}\" host=\"\${jboss.domain.master.address}\" port=\"\${jboss.domain.master.port:9990}\"/>
+                <discovery-option name=\"s3-discovery\" module=\"org.jboss.as.host-controller\" code=\"org.jboss.as.host.controller.discovery.S3Discovery\">
+                    <property name=\"access-key\" value=\"$ACCESS_KEY_ID\"/>
+                    <property name=\"secret-access-key\" value=\"$SECRET_ACCESS_KEY\"/>
+                    <property name=\"location\" value=\"$S3_PING_BUCKET\"/>
+                </discovery-option>
             </discovery-options>
         </remote>
     </domain-controller>
" | patch host-slave.xml

sed -i 's/<!--.*-->//g' host-slave.xml # remove nasty '!' signs which break bash
sed -i '/^[ ]*$/d' host-slave.xml # remove nasty lines with ' ' whitespaces which break the patch

EAP_HOST_NAME=`$JBOSS_HOME/bin/jboss-cli.sh --commands="embed-host-controller --host-config=host-slave.xml, :read-resource" | grep \"host\" | cut -d\" -f4`
$JBOSS_HOME/bin/jboss-cli.sh --commands="embed-host-controller --host-config=host-slave.xml, /host=$EAP_HOST_NAME/core-service=management/security-realm=ManagementRealm/server-identity=secret:write-attribute(name=value,value=c2VjcmV0X1Bhc3N3MHJk)"

sed -i 's/<host xmlns="urn:jboss:domain:8.0">/<host xmlns="urn:jboss:domain:8.0" name="admin">/' host-slave.xml
sed -i 's/other-server-group/main-server-group/' host-slave.xml

cd -

# Need to modify permissions since this script is executed as the root user
chgrp jboss $JBOSS_HOME/domain/configuration/domain_xml_history/
chgrp jboss $JBOSS_HOME/domain/configuration/host_xml_history/
chgrp jboss $JBOSS_HOME/domain/configuration/domain-ec2.xml
chgrp jboss $JBOSS_HOME/domain/log/audit.log
chgrp jboss $JBOSS_HOME/domain/log/host-controller.log
chown jboss $JBOSS_HOME/domain/configuration/domain_xml_history/
chown jboss $JBOSS_HOME/domain/configuration/host_xml_history/
chown jboss $JBOSS_HOME/domain/configuration/domain-ec2.xml
chown jboss $JBOSS_HOME/domain/log/audit.log
chown jboss $JBOSS_HOME/domain/log/host-controller.log

# Start JBoss EAP, do not forget that RHEL 7 does not wait for JBoss EAP to start before returning from the service start. In some cases, there could be a delay of more than 90 seconds.
$START_COMMAND





2024-02-08에 최종 업데이트된 문서

법적 공지

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동