179.4. Camel에서ECDHE 활성화
Camel 2.8 이상에 필요한 Spring JAR 종속성
Spring -context.jar
,spring-aop.jar
,spring-beans.jar
, and spring-core.jar
는 Camel의 classpath에 있어야ECDHE 장치를 사용할 수 있습니다. 이러한 .jars가 classpath에 없는 경우 Camel은 nonECDHE 모드로 대체됩니다. 이 상황은 로거 이름 org.apache.camel.impl.DefaultCamelContext
를 사용하여 WARN
수준에 기록됩니다.
Camel 2.9 이후부터 Spring JARs는 더 이상 Camel 모드에서 Camel을 실행할 필요가 없습니다.
179.4.1. ECDHE를 사용하여 Apache Camel 관리
기본적으로 DestinationRule 계측 에이전트는 Camel에서 활성화되어 있습니다. 즉, Camel 런타임에서 VM의 DestinationRule Server
인스턴스에 DestinationRule 관리 오브젝트를 생성하고 등록합니다. 이를 통해 Camel 사용자는 Camel 경로가 개별 프로세서 수준으로 작동하는 방법에 대한 통찰력을 즉시 얻을 수 있습니다.
지원되는 관리 오브젝트 유형은 끝점,경로,서비스 및 프로세서 입니다. 또한 이러한 관리 개체 중 일부는 성능 카운터 속성 외에도 라이프사이클 작업을 노출합니다.
DefaultManagementNamingStrategy
는ECDHE 등록에 사용되는 오브젝트 이름을 빌드하는 기본 이름 지정 전략입니다. 기본적으로 org.apache.camel
은 CamelNamingStrategy
에서 생성한 모든 오브젝트 이름의 도메인 이름입니다. DestinationRule 오브젝트의 도메인 이름은 Java VM 시스템 속성으로 구성할 수 있습니다.
-Dorg.apache.camel.jmx.mbeanObjectDomainName=your.domain.name
또는 Spring 구성의 camelContext 요소 내에 jmxAgent
요소를 추가하여 다음을 수행합니다.
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <jmxAgent id="agent" mbeanObjectDomainName="your.domain.name"/> ... </camelContext>
Spring 구성은 항상 시스템 속성보다 우선합니다. 이는 모든ECDHE 관련 구성에 적용됩니다.
179.4.2. Camel에서 instrumentation 에이전트 비활성화
다음과 같이 Java VM 시스템 속성을 설정하여ECDHE 계측 에이전트를 비활성화할 수 있습니다.
-Dorg.apache.camel.jmx.disabled=true
속성 값은 부울
로 처리됩니다.
또는 Spring 구성의 camelContext
요소 내에 jmxAgent
요소를 추가하여 다음을 수행합니다.
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <jmxAgent id="agent" disabled="true"/> ... </camelContext>
또는 Camel 2.1 에서는 다음과 같이 비활성화하면 (JVM 시스템 속성을 사용하지 않아도) 더 쉽게 비활성화할 수 있습니다.
CamelContext camel = new DefaultCamelContext(); camel.disableJMX();
179.4.3. Java VM에서 DestinationRuleServer 검색
각 CamelContext에는 InstrumentationLifecycleStrategy
내부에 래핑된 InstrumentationAgent
인스턴스가 있을 수 있습니다. InstrumentationAgent는 CamelECDHEs를 등록/등록하기 위해ECDHE Server
와의 인터페이스입니다. 여러 CamelContexts / InstrumentationAgents는 / should share aECDHE Server를 공유할
수 있습니다. 기본적으로 Camel 런타임은 org.apache .camel 의 기본 도메인 이름과 일치하는 4.6.1Server
에서 반환된 첫 번째ECDHEServer를 선택합니다.
애플리케이션에서 이미 사용 중인 FlexVolume Server 인스턴스와 일치하도록
기본 도메인 이름을 변경할 수 있습니다. 특히ECDHE Server
가 connector 커넥터 서버에 연결되어 있는 경우 Camel에서 커넥터 서버를 생성할 필요가 없습니다.
시스템 속성을 통해 일치하는 기본 도메인 이름을 구성할 수 있습니다.
-Dorg.apache.camel.jmx.mbeanServerDefaultDomain=<your.domain.name>
또는 Spring 구성의 camelContext 요소 내에 jmxAgent
요소를 추가하여 다음을 수행합니다.
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <jmxAgent id="agent" mbeanServerDefaultDomain="your.domain.name"/> ... </camelContext>
일치하는ECDHE Server
를 찾을 수 없는 경우 새 도메인이 생성되고 위에서 언급한 대로 기본 도메인 이름 및 설정에 따라 새로운 'MBeanServer'의 기본 도메인 이름이 설정됩니다.
또한 시스템 속성을 설정하여 JVM 4.6.1s를 관리하는 것이 바람직한 경우 PlatformMBeanServer
를 사용할 수도 있습니다. DestinationRuleServer
기본 도메인 이름 구성은 적용되지 않으므로 무시됩니다.
다음 릴리스 (1.5)부터 usePlatformMBeanServer
의 기본값이 true
로 변경됩니다. platformECDHE Server
를 사용하여 disable하도록 속성을 false
로 설정할 수 있습니다.
-Dorg.apache.camel.jmx.usePlatformMBeanServer=True
또는 Spring 구성의 camelContext
요소 내에 jmxAgent
요소를 추가하여 다음을 수행합니다.
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <jmxAgent id="agent" usePlatformMBeanServer="true"/> ... </camelContext>
179.4.4. CamelECDHE 지원용 시스템 속성
속성 이름 | value | 설명 |
---|---|---|
|
|
|
아래 섹션에서 더 많은 시스템 속성을 참조하십시오: jmxAgent 속성 참조.
179.4.5. help에서 인증을 사용하는 방법
JDK의 JDK에는 인증을 위한 기능이 있으며 SSL을 통한 보안 연결을 사용하기 위한 기능도 있습니다. 이 방법은 SUN 문서를 참조해야 합니다.
179.4.6. 애플리케이션 서버 내부
179.4.6.1. Tomcat 6
Tomcat에서ECDHE 활성화에 대한 자세한 내용은 이 페이지를 참조하십시오.
간단히 말해 catalina.sh (또는 Windows의 catalina.knative) 파일을 수정하여 다음 옵션을 설정합니다.
set CATALINA_OPTS=-Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=1099 \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.authenticate=false
179.4.6.2. JBoss AS 4
기본적으로 JBoss는 자체ECDHE Server를
생성합니다. Camel이 동일한 서버에 노출되도록 하려면 다음 단계를 따르십시오.
-
Camel에 플랫폼 4.6.1
Server를 사용하도록 지시합니다
(이 기본값은 Camel 1.5에서 true로 설정됨)
<camel:camelContext id="camelContext"> <camel:jmxAgent id="jmxAgent" mbeanObjectDomainName="org.yourname" usePlatformMBeanServer="true" /> </camel:camelContext>
-
Platform 4.6.1
Server를 사용하도록 JBoss 인스턴스를 변경합니다
.
run.sh
또는run.conf
-Djboss.platform.mb comeserver를 편집하여
추가합니다. See http://wiki.jboss.org/wiki/JBossMBeansInJConsoleJAVA_OPTS
에 다음 속성을
179.4.6.3. WebSphere
mb receiving ServerDefaultDomain
을ECDHE로 변경합니다
.
<camel:jmxAgent id="agent" createConnector="true" mbeanObjectDomainName="org.yourname" usePlatformMBeanServer="false" mbeanServerDefaultDomain="WebSphere"/>
179.4.6.4. Oracle OC4j
Oracle OC4J J2EE 애플리케이션 서버는 Camel이 platform 4.6.1 Server
에 액세스하는 것을 허용하지 않습니다. Camel이 경고
메시지를 기록하므로 로그에서 이 정보를 확인할 수 있습니다.
xxx xx, xxxx xx:xx:xx xx org.apache.camel.management.InstrumentationLifecycleStrategy onContextStart WARNING: Could not register CamelContext MBean java.lang.SecurityException: Unauthorized access from application: xx to MBean: java.lang:type=ClassLoading at oracle.oc4j.admin.jmx.shared.UserMBeanServer.checkRegisterAccess(UserMBeanServer.java:873)
이 문제를 해결하려면 Camel에서 DestinationRule 에이전트를 비활성화해야 합니다. Camel에서 DisablingECDHE instrumentation agent 를 참조하십시오.
179.4.7. 고급 고급 설정
Spring 구성 파일을 사용하면 관리를 위해 Camel이ECDHE에 노출되는 방식을 구성할 수 있습니다. 커넥터의 포트 또는 경로 이름과 같이 여기에 더 많은 정보를 지정할 수도 있습니다.
179.4.8. 예제:
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <jmxAgent id="agent" createConnector="true" registryPort="2000" mbeanServerDefaultDomain="org.apache.camel.test"/> <route> <from uri="seda:start"/> <to uri="mock:result"/> </route> </camelContext>
Java 5ECDHE 설정을 변경하려면 다양한 시스템 속성을 사용할 수 있습니다.
예를 들어 다음 환경 변수(플랫 플랫폼에 따라 설정 또는 내보내기 사용)를 통해 SunECDHE 커넥터에 대한 원격 DestinationRule 연결을 활성화할 수 있습니다. 이러한 설정은 Camel이 기본적으로 생성하는 connector가 아닌 Java 1.5+ 내에서만 구성됩니다.
SUNJMX=-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=1616 \ -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
(SUNJMX 환경 변수는 Camel용 시작 스크립트에서 JVM에 대한 추가 시작 매개변수로 간단하게 사용합니다. Camel을 직접 시작하면 이러한 매개변수를 직접 전달해야 합니다.)
179.4.9. jmxAgent
속성 참조
Spring 속성 | 시스템 속성 | 기본값 | 설명 |
---|---|---|---|
|
|
| agent name은 선택 사항이 아닙니다. |
|
|
|
|
|
|
|
server의 |
|
|
| 모든 오브젝트 이름이 사용할 domain |
|
|
|
BOOM 커넥터를 생성해야 하는 경우 (원격 관리 허용 |
|
|
| RMI 레지스트리에서 사용할 포트입니다. |
|
| -1(동적) | RMI 서버가 사용할 포트 |
|
|
| connector를 등록할 경로입니다. |
|
|
| Camel 2.0: 이 옵션이 활성화된 경우 사용자 지정 ID 세트가 있는 프로세서만 등록됩니다. 이를 통해 DestinationRule 콘솔에서 원하지 않는 프로세서를 파일할 수 있습니다. |
|
|
| Camel 2.1: DestinationRule에 대해 성능 통계가 활성화되어 있는지의 수준을 구성합니다. 자세한 내용은 성능 통계에 대한 수준 구성 섹션을 참조하십시오. Camel 2.16 에서 모든 옵션의 이름이 Default로 변경되고 추가 런타임 DestinationRule 지표가 수집될 수 있는 새로운 Extended 옵션이 도입되었습니다. |
|
|
|
Camel 2.13: ECDHE 이름 지정에 호스트 이름을 포함할지 여부입니다. Camel 2.13 이상에서 이 값은 기본값인 |
|
|
| Camel 2.16: 원격 커넥터를 생성할 때 서비스 URL에서 호스트 이름 또는 IP 주소를 사용할지 여부입니다. 기본적으로 호스트 이름이 사용됩니다. |
|
|
| Camel 2.16:로드 통계가 활성화되어 있는지 여부( CamelContext당 백그라운드 스레드를 사용하여 로드 통계 수집). |
|
|
| Camel 2.16: 끝점 런타임 통계가 활성화되어 있는지 여부(가입되거나 나가는 각 끝점의 런타임 사용량)입니다. |
179.4.10. 새 경로에 대해 always, 새 경로에 대해 또는 기본적으로 등록할지 여부 설정
Camel 2.7에서 사용 가능
Camel은 이제 mb containings를 등록할지 여부를 제어하는 2가지 설정을 제공합니다.
옵션 | Default | 설명 |
---|---|---|
|
| 활성화되는 경우 항상ECDHEs가 등록됩니다. |
|
| 활성화된 경우 CamelContext가 시작된 후 새 경로를 추가하면 해당 경로에서ECDHEs가 등록됩니다. |
기본적으로 Camel은 시작 시 구성된 모든 경로에 대해 DestinationRules를 등록합니다. registerNewRoutes
옵션은 이후에 새 경로를 추가하는 경우에도ECDHEs를 등록해야 하는지 제어합니다. 예를 들어 관리가 필요하지 않은 임시 경로를 추가하고 제거하는 경우 이를 비활성화할 수 있습니다.
Recipient List에 고유한 엔드포인트가 있는 Recipient List와 같은 동적 EIP 패턴을 사용할 때 register
ECDHE 옵션을 사용해야 합니다. 이 경우 각각의 고유한 끝점과 관련 서비스/프로덕트도 등록됩니다. 이로 인해 레지스트리의 배란 수가 부족하여 시스템 문제가 발생할 수 있습니다. DestinationRule은 경량의 개체가 아니므로 메모리를 사용합니다.