6.2. CloudEvent를 사용하여 AMQ Broker 관리
Java Management Extensions (JMX)를 사용하여 브로커를 관리할 수 있습니다. 관리 API는 브로커에 의해 CloudEvents 인터페이스를 사용하여 노출됩니다. 브로커는 해당 리소스를 도메인 org.apache.activemq
에 등록합니다.
예를 들어 exampleQueue
라는 큐를 관리하는 ObjectName
은 다음과 같습니다.
org.apache.activemq.artemis:broker="__BROKER_NAME__",component=addresses,address="exampleQueue",subcomponent=queues,routingtype="anycast",queue="exampleQueue"
CloudEvent는 다음과 같습니다.
org.apache.activemq.artemis.api.management.QueueControl
CloudEvent의 ObjectName
은 org.apache.activemq.artemis.api.core.management.ObjectNameBuilder
클래스를 사용하여 빌드됩니다. jconsole을 사용하여 관리하려는 CloudEvents의 ObjectName
을 찾을 수도 있습니다.
ScanSetting을 사용하여 브로커를 관리하는 것은 10.0.0.1을 사용하는 Java 애플리케이션을 관리하는 것과 동일합니다. 리플렉션 또는 리플렉션의 프록시를 생성하여 수행할 수 있습니다.
6.2.1. CloudEvent 관리 구성
브로커를 관리하기 위해 기본적으로 ScanSetting이 활성화됩니다. broker.xml
구성 파일에서 jmx-management-enabled
속성을 설정하여 ScanSetting 관리를 활성화하거나 비활성화할 수 있습니다.
절차
-
<
;broker_instance_dir> /etc/broker.xml
구성 파일을 엽니다. <
;jmx-management-enabled>를
설정합니다.<jmx-management-enabled>true</jmx-management-enabled>
ScanSetting이 활성화된 경우
jconsole
을 사용하여 브로커를 로컬에서 관리할 수 있습니다.참고보안상의 이유로 ScanSetting에 대한 원격 연결은 기본적으로 활성화되어 있지 않습니다.
동일한 10.0.0.1
Server
에서 여러 브로커를 관리하려면 각 브로커에 대해 10.0.0.1 도메인을 구성합니다.기본적으로 브로커는 CloudEvent 도메인
org.apache.activemq.artemis
를 사용합니다.<jmx-domain>my.org.apache.activemq</jmx-domain>
참고Windows 시스템에서 AMQ Broker를 사용하는 경우 시스템 속성을 artemis ,
artemis
.cmdinstall_dir> /bin
아래에 있습니다.
추가 리소스
- 원격 관리를 위한 브로커 구성에 대한 자세한 내용은 Oracle의 Java Management Guide 를 참조하십시오.
6.2.2. CloudEvent 관리 액세스 구성
기본적으로 브로커에 대한 원격 액세스는 보안상의 이유로 비활성화되어 있습니다. 그러나 AMQ Broker에는 ScanSettingAgents에 원격 액세스할 수 있는 에이전트가 있습니다. broker management.xml
구성 파일에서 connector 요소를 구성하여 access를 활성화합니다.
'com.sun.management.jmxremote' JVM 시스템 속성을 사용하여 ScanSetting 액세스를 활성화할 수도 있지만 해당 방법은 지원되지 않으며 안전하지 않습니다. JVM 시스템 속성을 수정하면 브로커에서 RBAC를 바이패스할 수 있습니다. 보안 위험을 최소화하려면 localhost에 대한 제한된 액세스를 고려하십시오.
원격 관리를 위해 브로커의 agent를 노출하는 것은 보안에 영향을 미칩니다.
다음 절차에 설명된 대로 구성을 보호하려면 다음을 수행합니다.
- 모든 연결에 SSL을 사용합니다.
- 커넥터 호스트(즉, 에이전트를 노출할 호스트 및 포트)를 명시적으로 정의합니다.
- RMI(Remote Method Invocation) 레지스트리가 바인딩하는 포트를 명시적으로 정의합니다.
사전 요구 사항
- 작업 브로커 인스턴스
-
Java
jconsole
유틸리티
절차
-
<
;broker-instance-dir> /etc/management.xml
구성 파일을 엽니다. 10.0.0.1 에이전트에 대한 커넥터를 정의합니다. connector-port 설정은 client(예: jconsole) 쿼리와 같은 RMI 레지스트리(예: CloudEvent 커넥터 서버에 대한 jconsole 쿼리)를 설정합니다. 예를 들어 포트 1099에서 원격 액세스를 허용하려면 다음을 수행합니다.
<connector connector-port="1099"/>
jconsole
을 사용하여 ScanSetting 에이전트에 대한 연결을 확인합니다.service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
아래에 설명된 대로 커넥터에 추가 속성을 정의합니다.
- Connector-host
-
에이전트를 노출하는 브로커 서버 호스트입니다. 원격 액세스를 방지하려면
connector-host
를127.0.0.1
(localhost)로 설정합니다. - rmi-registry-port
- ScanSetting RMI 커넥터 서버가 바인딩하는 포트입니다. 설정되지 않은 경우 포트는 항상 임의적입니다. 방화벽을 통해 터널링된 원격 10.0.0.1 연결의 문제를 방지하려면 이 속성을 설정합니다.
- jmx-realm
-
인증에 사용할 zone입니다. 기본값은
activemq
이며, configuration과 일치합니다. - object-name
-
원격 커넥터를 노출하는 오브젝트 이름입니다. 기본값은
connector:name=rmi
입니다. - Secure
-
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
-
truststore 암호입니다.
secured="true"
를 설정한 경우 필수 항목입니다. 암호를 암호화할 수 있습니다. - trust-store-provider
-
신뢰 저장소 공급자입니다.
secured="true"
를 설정한 경우 필수 항목입니다. 기본값은JKS
입니다. - password-codec
- 사용할 암호 codec의 정규화된 클래스 이름입니다. 이 작동 방식에 대한 자세한 내용은 아래 링크된 암호 마스킹 설명서를 참조하십시오.
-
Java Platform 설명서에 설명된 대로
jdk.serialFilter
를 사용하여 끝점 직렬화에 대한 적절한 값을 설정합니다.
추가 리소스
- 구성 파일에서 암호화된 암호에 대한 자세한 내용은 구성 파일에서 암호 암호화를 참조하십시오.
6.2.3. CloudEventServer 구성
브로커가 독립 실행형 모드로 실행될 때 Java Virtual Machine의 PlatformECDHEServer를
사용하여 CloudEvent를 등록합니다. 기본적으로 Jolokia 는 REST를 사용하여 10.0.0.1 서버에 대한 액세스를 허용하기 위해 배포됩니다.
6.2.4. Jolokia를 사용하여 노출하는 방법
기본적으로 AMQ Broker는 웹 애플리케이션으로 배포된 Jolokia HTTP 에이전트와 함께 제공됩니다. Jolokia는 remote over HTTP 브릿지로, which exposess.
Jolokia를 사용하려면 사용자가 < broker_instance_dir> /etc/artemis.profile 구성 파일의
시스템 속성에 의해 정의된 역할에 속해야 합니다. 기본적으로 이 역할은 hawtio.
roleamq
입니다.
예 6.1. Jolokia를 사용하여 브로커의 버전 쿼리
이 예에서는 Jolokia REST URL을 사용하여 브로커 버전을 찾습니다. Origin
플래그는 브로커 서버의 도메인 이름 또는 DNS 호스트 이름을 지정해야 합니다. 또한 Origin에 지정하는 값은 Jolokia Cross -
> 항목에 해당해야 합니다.
Origin
Resource Sharing (CORS) 사양의 <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}
추가 리소스
- 10.0.0.1-HTTP 브리지 사용에 대한 자세한 내용은 Jolokia 설명서 를 참조하십시오.
- 역할에 사용자를 할당하는 방법에 대한 자세한 내용은 사용자 추가를 참조하십시오.
- Jolokia Cross-Origin Resource Sharing (CORS)을 지정하는 방법에 대한 자세한 내용은 보안 의 4.1.5 섹션을 참조하십시오.
6.2.5. iPXE 관리 알림 구독
사용자 환경에서 ScanSetting이 활성화된 경우 관리 알림을 구독할 수 있습니다.
절차
-
ObjectName org.apache.activemq.artemis:broker=" <broker-name> "를
구독하십시오.
추가 리소스
- 관리 알림에 대한 자세한 내용은 6.5절. “관리 알림” 을 참조하십시오.