2. Clustering
우선 클러스터링에 대해 정의하면, 여러 대의 서버가 하나의 서버가 처리하는 것처럼 병렬 처리 된 서버들 간의 확립된 연결(Establishing Connectivity) 입니다.
더 간단히 요약하면, 군집화 혹은 서버 이중화로 정의하면 되겠습니다.
클러스터링은 장애시스템 조치(fail-over), 로드 밸런싱(부하 분산) 시스템에 병렬 처리 가능한 기술입니다.
- activeMQ에서는 클러스터링 기술을 적용하기 위해 Broker의 Connector, Persistence, Network of Broker, Master/Slave 특징을 먼저 살펴봐야 합니다.
(1) Connector
- activeMQ에는 Transport Connection과 Network Connection 2가지가 종류가 있다.
Transport Connection : 브로커와 클라이언트간 메시지 송수신을 위한 전송 커넥션입니다.
Network Connection: 브로커와 브로커간 서버 클러스터링을 구현하기 위해 필요한 커넥션입니다.
(2) Persistence
- 지속성은 Master Slave 특징과 관련있습니다.
- 브로커 대기열의 데이터의 지속적인 전송을 유지하기 위해 DB 및 file System에 데이터를 저장하고 공유합니다.
( 버전별 라이브러리 사용)
ActiveMQ 5.9 – Replicated LevelDB Store (Apaach Zookeeper)
ActiveMQ 5.8 – LevelDB Store
ActiveMQ 5.3 – KahaDB
ActiveMQ 4 - JDBC
(3) Network Of Broker
- 아래와 같은 2가지 방법으로 구현할 수 있습니다.
- networkConnector 요소 사용 //정적
String networkConnectorURIs[] = {
"static:(tcp://localhost:61616,tcp://localhost:61617)?maxReconnectDelay=5000&useExponentialBackOff=false" };
String transportConnectorURIs[] = { "tcp://localhost:61602" };
broker3.setBrokerName("Broker3");
broker3.setPersistent(true);
broker3.setUseJmx(true);
broker3.setPersistenceAdapter(persistenceAdapter);
broker3.setTransportConnectorURIs(transportConnectorURIs);
broker3.setNetworkConnectorURIs(networkConnectorURIs);
- Discovery를 사용하여 브로커를 탐지 //동적
List<TransportConnector> transportList = new ArrayList<>();
//
TransportConnector transport = new TransportConnector();
transport.setDiscoveryUri(new URI("multicast://default"));
transport.setUri(new URI("tcp://localhost:0"));
transportList.add(transport);
String networkConnectorURIs[] = {"multicast://default"};
broker3.setBrokerName("Broker3");
broker3.setPersistent(false);
broker3.setUseJmx(false);
broker3.setNetworkConnectorURIs(networkConnectorURIs);
broker3.setTransportConnectors(transportList);
(4) Master / Slave
MasterSlave : 메시지가 Slave 브로커에 복제되므로 마스터 시스템, 파일 시스템 또는 데이터 센터의 치명적인 하드웨어 오류가 발생해도 메시지 손실없이 즉시 Slave로 페일 오버가 수행됩니다.
- pure master/slave
- shared filesystem master/slave
- db matser/slave
'Cloud & NoSQL & Middleware > ActiveMQ' 카테고리의 다른 글
#activeMQ (6) - 서버 구현 및 메시지 송수신 테스트 (2) | 2018.03.03 |
---|---|
#activeMQ (4) - Broker (0) | 2018.03.02 |
#activeMQ (3) - ActiveMQ란? (0) | 2018.03.01 |
#activeMQ (2) - 용어 (0) | 2018.02.25 |
#activeMQ (1) - 버전 정보 (0) | 2018.02.24 |