6.2. Cryostat를 사용하여 AMQ Broker 관리
JMX(Java Management Extensions)를 사용하여 브로커를 관리할 수 있습니다. 관리 API는 Cryostat 인터페이스를 사용하여 브로커에 의해 노출됩니다. 브로커는 도메인 org.apache.activemq
에 해당 리소스를 등록합니다.
예를 들어 exampleQueue
라는 큐를 관리하는 ObjectName
은 다음과 같습니다.
org.apache.activemq.artemis:broker="__BROKER_NAME__",component=addresses,address="exampleQueue",subcomponent=queues,routingtype="anycast",queue="exampleQueue"
Cryostat는 다음과 같습니다.
org.apache.activemq.artemis.api.management.QueueControl
Cryostat의 ObjectName
은 Helper 클래스 org.apache.activemq.artemis.api.core.management.ObjectNameBuilder
를 사용하여 빌드됩니다. jconsole을 사용하여 관리하려는 ObjectName
을 찾을 수도 있습니다.
Cryostat를 사용하여 브로커를 관리하는 것은 Cryostat를 사용하여 모든 Java 애플리케이션을 관리하는 것과 동일합니다. 이는 리플렉션 또는 proxy를 생성하여 수행할 수 있습니다.
6.2.1. Cryostat 관리 구성
브로커를 관리하기 위해 기본적으로 Cryostat가 활성화됩니다. broker.xml
구성 파일에서 jmx-management-enabled
속성을 설정하여 Cryostat 관리를 활성화하거나 비활성화할 수 있습니다.
프로세스
-
<
;broker_instance_dir> /etc/broker.xml
구성 파일을 엽니다. <
;jmx-management-enabled>를
설정합니다.<jmx-management-enabled>true</jmx-management-enabled>
Cryostat가 활성화된 경우
jconsole
을 사용하여 브로커를 로컬로 관리할 수 있습니다.참고보안상의 이유로 Cryostat에 대한 원격 연결은 기본적으로 활성화되어 있지 않습니다.
동일한 Cryostat
Server
에서 여러 브로커를 관리하려면 각 브로커에 대해 Cryostat 도메인을 구성합니다.기본적으로 브로커는 Cryostat 도메인
org.apache.activemq.artemis
를 사용합니다.<jmx-domain>my.org.apache.activemq</jmx-domain>
참고Windows 시스템에서 AMQ Broker를 사용하는 경우 시스템 속성을 Artemis 또는
artemis
.cmdinstall_dir> /bin
아래에 있습니다.
추가 리소스
- 원격 관리를 위해 브로커를 구성하는 방법에 대한 자세한 내용은 Oracle의 Java 관리 가이드를 참조하십시오.
6.2.2. Cryostat 관리 액세스 구성
기본적으로 브로커에 대한 원격 Cryostat 액세스는 보안상의 이유로 비활성화되어 있습니다. 그러나 AMQ Broker에는 Cryostat에 대한 원격 액세스를 허용하는 Cryostat 에이전트가 있습니다. broker management.xml
구성 파일에서 커넥터 요소를 구성하여 Cryostat 액세스를 활성화합니다.
'com.sun.management.jmxremote' JVM 시스템 속성을 사용하여 Cryostat 액세스를 활성화할 수도 있지만 해당 방법은 지원되지 않으며 안전하지 않습니다. JVM 시스템 속성이 브로커에서 RBAC를 바이패스할 수 있도록 수정 보안 위험을 최소화하려면 localhost에 대한 제한된 액세스를 고려하십시오.
원격 관리를 위해 브로커의 Cryostat 에이전트를 노출하는 것은 보안에 영향을 미칩니다.
다음 절차에 설명된 대로 구성을 보호하려면 다음을 수행합니다.
- 모든 연결에 SSL을 사용합니다.
- 에이전트를 노출하는 호스트 및 포트인 커넥터 호스트를 명시적으로 정의합니다.
- RMI(Remote Method Invocation) 레지스트리가 바인딩하는 포트를 명시적으로 정의합니다.
사전 요구 사항
- 작업 브로커 인스턴스
-
Java
jconsole
유틸리티
프로세스
-
<
;broker-instance-dir> /etc/management.xml
구성 파일을 엽니다. Cryostat 에이전트에 대한 커넥터를 정의합니다. connector-port 설정은 Cryostat 커넥터 서버의 jconsole 쿼리와 같은 클라이언트가 RMI 레지스트리를 설정합니다. 예를 들어 포트 1099에서 원격 액세스를 허용하려면 다음을 수행합니다.
<connector connector-port="1099"/>
jconsole
을 사용하여 Cryostat 에이전트에 대한 연결을 확인합니다.service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
아래에 설명된 대로 커넥터에서 추가 속성을 정의합니다.
- connector-host
-
에이전트를 노출하는 브로커 서버 호스트입니다. 원격 액세스를 방지하려면
connector-host
를127.0.0.1
(localhost)으로 설정합니다. - rmi-registry-port
- RMI 커넥터 서버가 바인딩하는 포트입니다. 설정되지 않은 경우 포트는 항상 임의입니다. 방화벽을 통해 터널링된 원격 Cryostat 연결 문제가 발생하지 않도록 이 속성을 설정합니다.
- jmx-realm
-
인증에 사용할 Cryostat 영역입니다. 기본값은 JAAS 구성과 일치하는
activemq
입니다. - object-name
-
원격 커넥터를 노출하는 오브젝트 이름입니다. 기본값은
connector:name=rmi
입니다. - 보안
-
커넥터가 SSL을 사용하여 보안되는지 여부를 지정합니다. 기본값은
false
입니다. 안전한 통신을 위해 값을true
로 설정합니다. - key-store-path
-
키 저장소의 위치입니다.
secured="true"
를 설정한 경우 필수 항목입니다. - key-store-password
-
키 저장소 암호입니다.
secured="true"
를 설정한 경우 필수 항목입니다. 암호를 암호화할 수 있습니다. - key-store-provider
-
키 저장소 공급자.
secured="true"
를 설정한 경우 필수 항목입니다. 기본값은JKS
입니다. - trust-store-path
-
신뢰 저장소의 위치입니다.
secured="true"
를 설정한 경우 필수 항목입니다. - trust-store-password
-
신뢰 저장소 암호입니다.
secured="true"
를 설정한 경우 필수 항목입니다. 암호를 암호화할 수 있습니다. - trust-store-provider
-
신뢰 저장소 공급자.
secured="true"
를 설정한 경우 필수 항목입니다. 기본값은JKS
입니다. - password-codec
- 사용할 암호 codec의 정규화된 클래스 이름입니다. 이 작동 방식에 대한 자세한 내용은 아래에 연결된 암호 마스킹 설명서를 참조하십시오.
참고RMI 레지스트리는 바인딩할 IP 주소를 선택합니다. 시스템에 여러 IP 주소/NIC가 있는 경우
artemis.profile
파일에 다음을 추가하여 사용할 IP 주소를 선택할 수 있습니다.-Djava.rmi.server.hostname=localhost
-
Java Platform 설명서에 설명된 대로
jdk.serialFilter
를 사용하여 끝점 직렬화에 적절한 값을 설정합니다.
추가 리소스
- 구성 파일의 암호화된 암호에 대한 자세한 내용은 구성 파일 의 암호 암호화를 참조하십시오.
6.2.3. CryostatServer 구성
브로커가 독립 실행형 모드로 실행되면 Java Virtual Machine의 Platform CryostatServer를
사용하여 해당 항목을 등록합니다. 기본적으로 Jolokia 는 REST를 사용하여 Cryostat 서버에 대한 액세스를 허용하도록 배포됩니다.
6.2.4. Jolokia를 사용하여 Cryostat 노출 방식
기본적으로 AMQ Broker는 웹 애플리케이션으로 배포된 Jolokia HTTP 에이전트와 함께 제공됩니다. Jolokia는 Cryostat를 노출하는 HTTP 브리지를 통해 원격 Cryostat입니다.
Jolokia를 사용하려면 사용자는 < broker_instance_dir> /etc/artemis.profile 구성 파일의
시스템 속성에 의해 정의된 역할에 속해야 합니다. 기본적으로 이 역할은 hawtio.
roleamq
입니다.
예 6.1. Jolokia를 사용하여 브로커의 버전 쿼리
이 예제에서는 Jolokia REST URL을 사용하여 브로커 버전을 찾습니다. Origin
플래그는 브로커 서버의 도메인 이름 또는 DNS 호스트 이름을 지정해야 합니다. 또한 Origin에 대해 지정하는 값은 CORS(Cross- Origin
Resource Sharing) 사양의 < allow-origin
> 항목에 해당해야 합니다.
$ curl http://admin:admin@localhost:8161/console/jolokia/read/org.apache.activemq.artemis:broker=\"0.0.0.0\"/Version -H "Origin: mydomain.com" {"request":{"mbean":"org.apache.activemq.artemis:broker=\"0.0.0.0\"","attribute":"Version","type":"read"},"value":"2.4.0.amq-710002-redhat-1","timestamp":1527105236,"status":200}
추가 리소스
- advantage-HTTP 브리지 사용에 대한 자세한 내용은 Jolokia 설명서 를 참조하십시오.
- 역할에 사용자를 할당하는 방법에 대한 자세한 내용은 사용자 추가를 참조하십시오.
- CORS(Cross-Origin Resource Sharing)를 지정하는 방법에 대한 자세한 내용은 link: Security 의 4.1.5 섹션을 참조하십시오.
6.2.5. Cryostat 관리 알림 구독
사용자 환경에서 Cryostat가 활성화된 경우 관리 알림을 구독할 수 있습니다.
프로세스
-
ObjectName org.apache.activemq.artemis:broker=" <broker-name> "
.
추가 리소스
- 관리 알림에 대한 자세한 내용은 6.5절. “관리 알림” 을 참조하십시오.