2016-10-21 2 views
0

저는 activemq-replicatedLevelDB에서 새로운 기능을 사용하고 있으므로 제한적인 이해로 잘못 생각할 수도 있습니다.activemq-replicatedLevelDB를 구성하여 인스턴스를 구성하여 마스터/슬레이브의 특정 포트에 연결하는 방법

zookeeper를 사용하여 3 개의 activemq 인스턴스를 설정하고,이 인스턴스는 AWS의 마스터 인 activemq 인스턴스를 결정합니다. 사육사가 사설 서브넷에 배치되고 activemq가 공용 서브넷에 배치되므로 사육사와 activemq 통신에 문제가 없습니다.

질문/문제 : 보안을 위해

I 포트 이들의 ActiveMQ 인스턴스가 서로 통신해야하는 ActiveMQ를의 intances를 구성 할 수있는 내가 찾을 수 없습니다.

문제점 : 이러한 activemq 인스턴스가 열려있는 사용 가능한 포트를 제한해야합니다. 그리고 단순히 모든 액세스 포트 제한 아래 공공 서브넷에서

예를 오는

  • 포트 (22)는 SSH 액세스를 위해 열려 있어야
  • 사육사 클라이언트 포트 (2181)가 오는 만 액세스 할 수 있도록 열려 있어야합니다 허용 할 수 없습니다 내가 다시 보안 그룹을 사용하고

이들의 ActiveMQ 인스턴스에서 는

  • 포트 8161는 특정 소스에서 액세스 할 수 있어야합니다 이러한 액세스는 AWS에서 엄격합니다. 나는 activemq가 다른 activemq 인스턴스가 살아 있다는 것을 알 수있는 공용 서브넷을 통해 접근 가능한 모든 포트를 허용하고, 마스터/슬레이브를 선출 할 수 있었다. 포트 45818은 처음부터 모든 설정 후에 동일한 포트가 아닙니다. 그래서 나는 이것이 무작위라고 생각한다. 내가 그 포트 설정을 제거하면

    Promoted to master 
    Using the pure java LevelDB implementation. 
    Master started: tcp://**.*.*.**:45818 
    

    (모든 액세스를 허용), 나는 아래의 스택 트레이스

    Not enough cluster members have reported their update positions yet. 
    org.apache.activemq.leveldb.replicated.MasterElector 
    

    스택 트레이스에 대한 이해 위 옳다면

    있어 아래

    샘플 로그, 현재 activemq가 다른 activemq 인스턴스의 존재를 알지 못한다는 것을 알립니다. 그래서 다른 activemq 인스턴스를 검사 할 때이 activemq의 포트를 어떻게 구성하여 액세스를 제한/허용 할 수 있는지 알 필요가있었습니다.

    다음은 사육사 주소를 가리키는 my activemq의 구성입니다. 다른 구성은 기본값에 있습니다.

    의 ActiveMQ 버전 : 5.13.4

    <persistenceAdapter> 
         <replicatedLevelDB directory="activemq-data" 
          replicas="3" 
          bind="tcp://0.0.0.0:0" 
          zkAddress="testzookeeperip1:2181,testzookeeperip2:2181,testzookeeperip3:2181" 
          hostname="testhostnameofactivemqinstance" 
         /> 
        </persistenceAdapter> 
    

    은 부족한 정보, 나는 최대한 빨리이 문제가 업데이 트됩니다합니다. 덕분에

  • 답변

    0

    이것은 자격이있는 대답보다 다소 힌트이지만 의견을 내기에는 너무 큽니다.

    bind="tcp:0.0.0.0:0"으로 동적 포트를 구성했습니다. 이 구성 설정에서 고정 포트를 사용하지 않았지만 구성 문서에서 설정을 할 수 있다고 말합니다.

    바인드 포트는 마스터와의 복제 프로토콜에 사용되므로 분명히 차단할 수는 없지만 zk 머신 만이 통신 할 수 있도록 허용해야합니다.

    브로드 캐스터 간의 트래픽을 분석하지는 않았지만 복제 된 LevelDB를 이해하면 ZK는 브로커가 아닌 활성 마스터를 결정합니다. 따라서 해당 포트의 브로커 간에는 통신이 없어야합니다.

    외부 브로커 주소는 구성 파일의 <broker> 섹션에있는 transportConnectors 요소에 구성되어 있지만, 이미 적용한 것으로 보입니다.

    고정 포트에 바인딩을 구성하고 필요할 경우 클러스터 파트너와의 통신을 허용하는 것이 좋습니다. 클라이언트는 전송 포트에만 액세스 할 수 있습니다. ZK와의 통신을 허용해야합니다.

    +0

    굉장합니다. 바인드 작업시 특정 포트 추가 감사. 또한, 나는 나의 질문이 중복되는 것을 알았다. 나는 이것을 찾기 위해 정확한 용어를 모른다. http://stackoverflow.com/questions/36007711/how-to-use-firewall-with-activemq/36018414 –

    관련 문제