Amazon Web Services에 JBoss EAP 배포
Amazon Web Services에서 Red Hat JBoss Enterprise Application Platform 사용 방법(고가용성 구성 포함).
초록
JBoss EAP 문서에 대한 피드백 제공 링크 복사링크가 클립보드에 복사되었습니다!
오류를 보고하거나 문서를 개선하기 위해 Red Hat Jira 계정에 로그인하여 문제를 제출하십시오. Red Hat Jira 계정이 없는 경우 계정을 생성하라는 메시지가 표시됩니다.
절차
- 티켓을 생성하려면 다음 링크를 클릭하십시오.
- 문서 URL, 섹션 번호 를 포함하고 문제를 설명하십시오.
- 요약 에 문제에 대한 간략한 설명을 입력합니다.
- 설명에서 문제 또는 개선 사항에 대한 자세한 설명을 제공합니다. 문서에서 문제가 발생한 위치에 URL을 포함합니다.
- 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는 계정 자격 증명으로 설치 및 구성됩니다.
절차
- URL에서 AWS 마켓플레이스로 이동하십시오. https://aws.amazon.com/marketplace.
- 검색 모음에서 "JBoss EAP"를 검색합니다. Red Hat Limited 및 Red Hat 을 선택하여 게시자로 결과를 필터링합니다.
시작할 이미지를 클릭합니다.
참고유럽 연합을 기반으로 하는 경우 게시자 "Red Hat Limited"에서 이미지를 선택합니다. 그렇지 않으면 게시자 "Red Hat"에서 이미지를 선택합니다.
소프트웨어 서브스크립션 페이지로 리디렉션됩니다.
- 서브스크립션 설정을 선택하고 Continue to Subscribe (서브스크립션 중 계속)를 클릭합니다.
사용 약관을 클릭하여 약관에 동의 하고 계속 구성을 클릭합니다.
구성 페이지로 리디렉션됩니다.
구성 옵션을 선택하고 Continue to Launch 를 클릭합니다.
소프트웨어 페이지를 실행하라는 지시가 표시됩니다.
- 시작 구성 세부 사항을 검토하고 시작을 클릭하여 인스턴스를 시작합니다.
2.2. AWS EC2 콘솔을 사용하여 프라이빗 AMI에서 JBoss EAP 인스턴스 시작 링크 복사링크가 클립보드에 복사되었습니다!
AWS EC2 콘솔을 사용하여 프라이빗 AMI에서 JBoss EAP 인스턴스를 시작할 수 있습니다.
AWS 명령줄 인터페이스를 사용하여 인스턴스를 시작할 수도 있습니다. AWS CLI 에 대한 자세한 내용은 AWS CLI를 참조하십시오.
사전 요구 사항
- 고객님은 Red Hat 서브스크립션을 보유하고 있습니다.
- AWS 계정이 있어야 합니다.
- Amazon Web Services CLI는 계정 자격 증명으로 설치 및 구성됩니다.
절차
- Amazon EC2 콘솔 을 엽니다.
- Amazon EC2 콘솔에서 AMI를 클릭합니다.
AMI (Amazon Machine Images) 패널에 있는 프라이빗 이미지에서
jbeapAMI 를 검색하고 AMI를 선택합니다.예를 들어
RHEL-7-JBEAP-7.4.0_HVM_GA-20210909-x86_64-0-Access2-GP2.- 인스턴스 유형을 선택합니다. 지원되는 Amazon EC2 인스턴스 유형에 대한 자세한 내용은 지원 Amazon EC2 인스턴스 유형을 참조하십시오.
- Configure Instance Details(인스턴스 세부 정보 구성) 섹션에서 인스턴스 설정을 구성합니다.
Advanced Details(고급 세부 정보 ) 섹션에서 사용자 데이터 상자에서 인스턴스 시작 시 샘플 스크립트를 붙여넣어 JBoss EAP를 실행할 수 있습니다. 샘플 스크립트에 대한 정보는 Launching JBoss EAP on Amazon EC2 Using Script 를 참조하십시오.
참고필요한 경우 스토리지를 지정하고, 인스턴스에 태그를 지정하고, 보안 그룹 세부 정보를 구성합니다.
- 검토 및 시작을 클릭합니다. 그러면 인스턴스 시작 검토 페이지로 바로 이동합니다.
- 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
시스템 경로에 대한 자세한 내용은 시스템 경로를 참조하십시오.
-
RHEL 6:
-
복잡한 구성의 경우 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 startRHEL 7에서 JBoss EAP를 시작하려면 다음 명령을 실행합니다.
$ systemctl start eap7-standaloneRHEL 6에서 JBoss EAP를 중지하려면 다음 명령을 실행합니다.
$ service eap7-standalone stopRHEL 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 관리형 도메인을 시작하는 단계를 설명합니다.
사전 요구 사항
- 적합한 Red Hat AMI. 자세한 내용은 지원 Red Hat AMI를 참조하십시오.
클러스터되지 않은 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
-
RHEL 6:
시스템 경로에 대한 자세한 내용은 시스템 경로를 참조하십시오.
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 startRHEL 7에서 JBoss EAP를 시작하려면 다음 명령을 실행합니다.
$ systemctl start eap7-domainRHEL 6에서 JBoss EAP를 중지하려면 다음 명령을 실행합니다.
$ service eap7-domain stopRHEL 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 버킷입니다.-
/opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/configs에서 JBoss EAP 구성 디렉터리에domain-ec2.xml파일을 복사합니다. 적절한 서비스 구성 파일에서 다음 변수를 설정합니다.
WILDFLY_SERVER_CONFIG=domain-ec2.xml WILDFLY_HOST_CONFIG=host-master.xml도메인
-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의 값은 파일을 편집하거나 관리 CLI를 사용하여 수동으로 설정할 수 있습니다. 예를 들어 다음과 같이 관리 CLI를 사용하여 standalone- ec2-ha.xmlinstance-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 의 로그를 관찰할 수 있습니다.
도메인 컨트롤러 인스턴스의 경우
-
/opt/rh/eap7/root/usr/share/wildfly/docs/examples/configs/configs에서 JBoss EAP 구성 디렉터리에domain-ec2.xml파일을 복사합니다. 적절한 서비스 구성 파일에서 다음 변수를 설정합니다.
WILDFLY_SERVER_CONFIG=domain-ec2.xml WILDFLY_HOST_CONFIG=host-master.xmlS3 도메인 컨트롤러 검색 구성을
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>- 사용자를 구성하고 사용자의 시크릿 값을 호스트 컨트롤러 인스턴스에 추가합니다. 자세한 내용은 JBoss EAP 구성 가이드에서 관리형 도메인 생성을 참조하십시오.
호스트 컨트롤러 인스턴스의 경우
적절한 서비스 구성 파일에서 다음 변수를 설정합니다.
WILDFLY_HOST_CONFIG=host-slave.xmlS3 도메인 컨트롤러 검색 구성을
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 도메인 컨트롤러 검색에 대한 자세한 내용은 호스트 컨트롤러로 제공하는 하나 이상의 인스턴스 시작을 참조하십시오.
5.2.1. VPC 및 mod_cluster를 사용하여 클러스터된 AMI를 시작하려면 다음을 수행합니다. 링크 복사링크가 클립보드에 복사되었습니다!
VPC 구성은 선택 사항입니다. 자세한 내용은 Amazon VPC 사용자 가이드에 있는 지원 플랫폼 감지 및 기본 VPC 섹션을 참조하십시오.
-
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 설치 가이드를 참조하십시오.
mod_cluster에 대한 알림을 비활성화합니다./opt/rh/jbcs-httpd24/root/etc/httpd/conf.d/mod_cluster.conf구성 파일의VirtualHost에 다음을 추가합니다.ServerAdvertise Off EnableMCPMReceive # AdvertiseFrequency # comment out AdvertiseFrequency if present-
SELinux에서 포트를 허용합니다. 필요한 경우iptables를 구성합니다. 포트는semanage port -a -t http_port_t -p tcp $PORT_NR명령을 사용하여 SELinux에서 허용할 수 있습니다. 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 (지원됨)
- EC2에 가입.
- Red Hat Cloud Access 신청하기.
- 사용 가능한 AMI 목록에서 Red Hat AMI를 선택합니다.
-
(선택 사항) 사용자 스크립트 또는
ssh를 사용하여 JBoss EAP 구성 사용자 지정. -
유지 관리: 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 서버의 새 커넥터 및 소켓 바인딩을 생성해야 합니다.
참조된
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})messaging하위 시스템에서 새http-connector요소를 생성합니다./subsystem=messaging-activemq/server=default/http-connector=http-public-connector:add(endpoint=http-acceptor, socket-binding=http-public)클라이언트에서 사용할
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에 최종 업데이트된 문서