Cassandra 랙 지원 추가

이 섹션에서는 프라이빗 클라우드용 Apigee Edge의 Cassandra를 랙 인식으로 만들어 Cassandra의 확장 작업에 대한 일반적인 안내를 제공합니다.

Cassandra 링 랙 인식이 중요한 이유에 대한 자세한 내용은 다음 리소스를 참조하세요.

랙이란 무엇인가요?

Cassandra 랙은 링 내에 있는 Cassandra 노드의 논리적 그룹입니다. Cassandra는 복제본이 여러 논리적 그룹에 분산되도록 랙을 사용합니다. 따라서 작업이 하나의 노드가 아닌 여러 노드로 전송되며, 각 노드는 별도의 랙에 있으므로 내결함성과 가용성이 향상됩니다.

이 섹션의 예시에서는 프로덕션 토폴로지에서 Apigee가 지원하는 랙 수인 Cassandra 랙 3개를 사용합니다.

프라이빗 클라우드용 Apigee Edge에서 Cassandra를 기본 설치하면 단일 논리 랙이 가정되고 데이터 센터의 모든 노드가 그 안에 배치됩니다. 이 구성은 설치 및 관리가 간단하지만 이러한 노드 중 하나에서 작업이 실패하면 오류가 발생할 수 있습니다.

다음 이미지는 Cassandra 링의 기본 구성을 보여줍니다.

노드 3개가 있는 랙 1개
(그림 1) 기본 구성: 단일 랙의 모든 노드

보다 강력한 구성에서는 각 노드가 별도의 랙에 할당되고 작업은 각 랙의 복제본에서도 실행됩니다.

다음 이미지는 노드 3개로 구성된 링을 보여줍니다. 이 이미지는 작업이 링 전체에 복제되는 순서 (시계 방향)를 보여주며, 동일한 랙에 두 개의 노드가 없다는 사실을 강조합니다.

랙 3개, 각 랙에 노드 1개
(그림 2) 랙 인식 구성: 노드 3개, 각 랙에 1개

이 구성에서는 작업이 노드로 전송되지만 다른 랙에 있는 해당 노드의 복제본으로도 전송됩니다 (시계 방향).

랙 인식 추가 (노드 3개)

프라이빗 클라우드용 Apigee Edge의 모든 프로덕션 설치 토폴로지에는 최소 3개의 Cassandra 노드가 있으며, 이 섹션에서는 이를 'IP1', 'IP2', 'IP3'이라고 합니다. 기본적으로 이러한 각 노드는 동일한 랙인 'ra-1'에 있습니다.

이 섹션에서는 모든 작업이 링 내의 별도 논리적 그룹에 있는 복제본 노드로 전송되도록 Cassandra 노드를 별도의 랙에 할당하는 방법을 설명합니다.

설치 중에 Cassandra 노드를 다른 랙에 할당하려면 다음 안내를 따르세요.

  1. 설치 프로그램을 실행하기 전에 Cassandra 노드에 로그인하고 수정을 위해 다음 자동 구성 파일을 엽니다.
    /opt/silent.conf

    파일이 없으면 파일을 만들고 'apigee' 사용자를 소유자로 지정해야 합니다.

  2. 다음 문법을 사용하는 공백으로 구분된 IP 주소 목록 (DNS 또는 호스트 이름 항목 아님)인 CASS_HOSTS 속성을 수정합니다.
    CASS_HOSTS="IP_address:data_center_number,rack_number [...]"

    기본값은 다음 예시와 같이 각 노드가 랙 1 및 데이터 센터 1에 할당된 3노드 Cassandra 링입니다.

    CASS_HOSTS="IP1:1,1 IP2:1,1 IP3:1,1"
  3. 다음 예시와 같이 노드 2가 랙 2에 할당되고 노드 3이 랙 3에 할당되도록 랙 할당을 변경합니다.
    CASS_HOSTS="IP1:1,1 IP2:1,2 IP3:1,3"

    랙 할당을 변경하면 Cassandra가 두 개의 추가 논리 그룹 (랙)을 만들도록 지시하고, 이 그룹은 첫 번째 노드에서 수신한 모든 작업을 수신하는 복제본을 제공합니다.

    CASS_HOSTS 구성 속성 사용에 대한 자세한 내용은 Edge 구성 파일 참조를 확인하세요.

  4. 변경사항을 구성 파일에 저장하고 다음 명령어를 실행하여 업데이트된 구성으로 Cassandra를 설치합니다.
    /opt/apigee/apigee-setup/bin/setup.sh -p c -f path/to/silent/config

    예를 들면 다음과 같습니다.

    /opt/apigee/apigee-setup/bin/setup.sh -p c -f /opt/silent.conf
  5. CASS_HOSTS 속성에 노드가 할당된 순서대로 링의 각 Cassandra 노드에 대해 이 절차를 반복합니다. 이 경우 다음 순서로 Cassandra를 설치해야 합니다.
    1. 노드 1 (IP1)
    2. 노드 2 (IP2)
    3. 노드 3 (IP3)

설치 후 Cassandra 구성을 확인해야 합니다.

Cassandra 구성 확인

랙 인식 Cassandra 구성을 설치한 후 다음 예시와 같이 nodetool status 명령어를 사용하여 노드가 다른 랙에 할당되었는지 확인할 수 있습니다.

/opt/apigee/apigee-cassandra/bin/nodetool status

(Cassandra 노드 중 하나에서 이 명령어를 실행합니다.)

결과는 다음과 비슷하게 표시됩니다. 여기서 랙 열은 각 노드의 서로 다른 랙 ID를 보여줍니다.

Datacenter: dc-1
========================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address         Load       Tokens  Owns    Host ID                             Rack
UN  IP1   737 MB  256     ?     554d4498-e683-4a53-b0a5-e37a9731bc5c     ra-1
UN  IP2   744 MB  256     ?     cf8b7abf-5c5c-4361-9c2f-59e988d52da3     ra-2
UN  IP3   723 MB  256     ?     48e0384d-738f-4589-aa3a-08dc5bd5a736     ra-3

Cassandra에 JMX 인증을 사용 설정한 경우 사용자 이름과 비밀번호를 nodetool에 전달해야 합니다. 자세한 내용은 nodetool을 사용하여 클러스터 노드 관리를 참조하세요.

6노드 링 설치

추가 중복성을 위해 Cassandra 링을 노드 6개로 확장할 수 있습니다. 이 경우 3개의 랙 각각에 노드 2개를 할당합니다. 이 구성에는 노드 4 (IP4), 노드 5 (IP5), 노드 6 (IP6) 등 추가 노드 3개가 필요합니다.

다음 이미지는 링에서 작업이 복제되는 순서(시계 방향)를 보여주며, 복제 중에 인접한 두 노드가 동일한 랙에 있지 않다는 사실을 강조합니다.

랙 3개, 각 랙에 노드 2개
(그림 3) 6노드 Cassandra 링: 3개의 랙 각각에 2개의 노드

이 구성에서는 각 노드에 복제본이 두 개 더 있습니다. 다른 두 랙에 각각 하나씩 있습니다. 예를 들어 랙 1의 노드 1에는 랙 2와 랙 3에 복제본이 있습니다. 노드 1로 전송된 작업은 시계 방향으로 다른 랙의 복제본으로도 전송됩니다.

3노드 Cassandra 링을 6노드 Cassandra 링으로 확장하려면 다음과 같은 방법으로 무인 구성 파일에서 노드를 구성합니다.

CASS_HOSTS="IP1:1,1 IP4:1,3 IP2:1,2 IP5:1,1 IP3:1,3 IP6:1,2"

3노드 링과 마찬가지로 CASS_HOSTS 속성에 노드가 표시되는 순서대로 Cassandra를 설치해야 합니다.

  1. 노드 1 (IP1)
  2. 노드 4 (IP4)*
  3. 노드 2 (IP2)
  4. 노드 5 (IP5)
  5. 노드 3 (IP3)
  6. 노드 6 (IP6)

* 네 번째 노드 (Cassandra 설치 순서의 두 번째 머신)에서 설정 유틸리티를 실행하기 전에 무음 구성 파일을 변경합니다.

노드 12개로 확장

내결함성과 가용성을 더욱 높이려면 링의 Cassandra 노드 수를 6개에서 12개로 늘리면 됩니다. 이 구성에는 추가 노드 6개 (IP7~IP12)가 필요합니다.

다음 이미지는 링에서 작업이 복제되는 순서(시계 방향)를 보여주며, 복제 중에 인접한 두 노드가 동일한 랙에 있지 않다는 사실을 강조합니다.

랙 3개, 각 랙에 노드 4개
(그림 4) 12노드 Cassandra 링: 3개의 랙 각각에 4개의 노드

12노드 링을 설치하는 절차는 3노드 또는 6노드 링을 설치하는 것과 유사합니다. CASS_HOSTS를 지정된 값으로 설정하고 지정된 순서로 설치 프로그램을 실행합니다.

12노드 Cassandra 링으로 확장하려면 자동 구성 파일에서 다음과 같은 방법으로 노드를 구성합니다.

CASS_HOSTS="IP1:1,1 IP7:1,2 IP4:1,3 IP8:1,1 IP2:1,2 IP9:1,3 IP5:1,1 IP10:1,2 IP3:1,3 IP11:1,1 IP6:1,2 IP12:1,3"

3노드 및 6노드 링과 마찬가지로 구성 파일에 노드가 표시되는 순서대로 노드에서 설치 프로그램을 실행해야 합니다.

  1. 노드 1 (IP1)
  2. 노드 7 (IP7)*
  3. 노드 4 (IP4)
  4. 노드 8 (IP8)
  5. 노드 2 (IP2)
  6. 노드 9 (IP9)
  7. 노드 5 (IP5)
  8. 노드 10 (IP10)
  9. 노드 3 (IP3)
  10. 노드 11 (IP11)
  11. 노드 6 (IP6)
  12. 노드 12 (IP12)

* 7번째 노드 (Cassandra 설치 순서의 두 번째 머신)에 프라이빗 클라우드용 Apigee Edge를 설치하기 전에 이러한 변경사항을 적용해야 합니다.