클러스터에 Cassandra 노드를 추가할 때는 다음 두 가지 핵심 사항을 고려해야 합니다.
- 스트리밍을 최소화하고 균형 잡힌 링을 유지하기 위해 Cassandra 링의 기존 노드 위치는 변경되어서는 안 됩니다.
- 모든 데이터 센터의 노드 수는 일관되게 유지되어야 합니다.
첫 번째 목표를 달성하려면 새 노드를 추가할 때마다 Cassandra 클러스터의 노드 수를 두 배로 늘리는 것이 중요합니다.
예를 들어 두 데이터 센터에 분산된 표준 12노드 클러스터 설치 토폴로지로 시작하면 총 6개의 Cassandra 노드(각 데이터 센터에 3개)가 됩니다. 이 클러스터를 확장하려면 각 데이터 센터에 노드 3개를 추가하여 총 노드 수를 12개 (각 데이터 센터에 6개)로 늘려야 합니다. 추가 확장이 필요한 경우 각 데이터 센터에 노드를 6개 추가하여 총 노드 수를 24개 (각 데이터 센터에 12개)로 늘려야 합니다.
이 문서에서는 기존 Edge for Private Cloud 설치에 Cassandra 노드 3개를 새로 추가하는 방법을 설명합니다. 동일한 단계에 따라 노드를 추가할 수 있습니다. 클러스터를 확장할 때는 항상 노드 수를 두 배로 늘려야 합니다.
Cassandra 노드의 시스템 요구사항 목록은 설치 요구사항 섹션을 참고하세요.
기존 Edge 구성
프로덕션 시스템에 지원되는 모든 Edge 토폴로지는 Cassandra 노드 3개를 사용하도록 지정합니다. 세 개의 노드는 아래와 같이 구성 파일의 CASS_HOSTS
속성에 지정됩니다.
IP1=10.10.0.1 IP2=10.10.0.2 IP3=10.10.0.3 HOSTIP=$(hostname -i) ADMIN_EMAIL=opdk@google.com APIGEE_ADMINPW=Secret123 LICENSE_FILE=/tmp/license.txt MSIP=$IP1 USE_LDAP_REMOTE_HOST=n LDAP_TYPE=1 APIGEE_LDAPPW=secret MP_POD=gateway REGION=dc-1 ZK_HOSTS="$IP1 $IP2 $IP3" ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3" # Must use IP addresses for CASS_HOSTS, not DNS names. CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1" SKIP_SMTP=n SMTPHOST=smtp.example.com SMTPUSER=smtp@example.com SMTPPASSWORD=smtppwd
REGION
속성은 리전 이름을 'dc-1'로 지정합니다. 새 Cassandra 노드를 추가할 때 이 정보가 필요합니다.
구성 파일을 수정하여 새 Cassandra 노드 3개 추가
이 예시에서 새 Cassandra 노드 3개는 다음 IP 주소에 있습니다.
- 10.10.0.14
- 10.10.0.15
- 10.10.0.16
먼저 Edge 구성 파일을 업데이트하여 새 노드를 추가해야 합니다.
IP1=10.10.0.1 IP2=10.10.0.2 IP3=10.10.0.3 # Add the new node IP addresses. IP14=10.10.0.14 IP15=10.10.0.15 IP16=10.10.0.16 HOSTIP=$(hostname -i) ADMIN_EMAIL=opdk@google.com ... # Update CASS_HOSTS to add each new node after an existing nodes. # Must use IP addresses for CASS_HOSTS, not DNS names. CASS_HOSTS="$IP1:1,1 $IP14:1,1 $IP2:1,1 $IP15:1,1 $IP3:1,1 $IP16:1,1"
이렇게 하면 기존 노드가 초기 토큰 설정을 유지하고 각 새 노드의 초기 토큰이 기존 노드의 토큰 값 사이에 있게 됩니다.
Edge 구성
구성 파일을 수정한 후 다음을 실행해야 합니다.
- 기존 Cassandra 노드 재구성
- 새 노드에 Cassandra 설치
- 관리 서버 재구성
기존 Cassandra 노드 재구성
기존 Cassandra 노드에서 다음을 실행합니다.
- '-p c' 프로필과 새 구성 파일을 사용하여 setup.sh를 다시 실행합니다.
/opt/apigee/apigee-setup/bin/setup.sh -p c -f updatedConfigFile
새 노드에 Cassandra 설치
아래 절차에 따라 새 노드에 Cassandra를 설치합니다.
각 새 Cassandra 노드에서 다음을 실행합니다.
- 세 노드에 Cassandra를 설치합니다.
- Edge apigee-setup 유틸리티 설치에 설명된 대로 첫 번째 노드에
apigee-setup
를 설치합니다. - 업데이트된 구성 파일을 사용하여 첫 번째 노드에 Cassandra를 설치합니다.
/opt/apigee/apigee-setup/bin/setup.sh -p c -f updatedConfigFile
- 나머지 새 Cassandra 노드에 대해 이 두 단계를 반복합니다.
- Edge apigee-setup 유틸리티 설치에 설명된 대로 첫 번째 노드에
- 새 Cassandra 노드 3개를 다시 빌드하고 노드를 추가하는 데이터 센터 (
dc-1
,dc-2
등)를 리전 이름으로 지정합니다. 이 예에서는dc-1
입니다.- 첫 번째 노드에서 다음을 실행합니다.
/opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h nodeIP rebuild dc-1
여기서 nodeIP는 Cassandra 노드의 IP 주소입니다.
Cassandra에 JMX 인증을 사용 설정한 경우에만 사용자 이름과 비밀번호를 전달하면 됩니다.
- 나머지 새 Cassandra 노드에서 이 단계를 반복합니다.
- 첫 번째 노드에서 다음을 실행합니다.
관리 서버 재구성
관리 서버 노드
- setup.sh를 다시 실행하여 새로 추가된 Cassandra 노드의 관리 서버를 업데이트합니다.
/opt/apigee/apigee-setup/bin/setup.sh -p ms -f updatedConfigFile
모든 라우터 및 메시지 프로세서 다시 시작
- 모든 라우터:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- 모든 메시지 프로세서:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
기존 Cassandra 노드의 여유 디스크 공간
새 노드를 추가한 후 기존 노드에서 nodetool cleanup
명령어를 사용하여 디스크 공간을 확보할 수 있습니다. 이 명령어는 더 이상 기존 Cassandra 노드에서 소유하지 않는 구성 토큰을 삭제합니다.
새 노드를 추가한 후 기존 Cassandra 노드의 디스크 공간을 확보하려면 다음 명령어를 실행합니다.
/opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassandraIP cleanup
Cassandra에 JMX 인증을 사용 설정한 경우에만 사용자 이름과 비밀번호를 전달하면 됩니다.
다시 빌드 확인
다음 명령어를 사용하여 다시 빌드가 성공했는지 확인합니다.
nodetool [-u username -pw password] -h nodeIP netstats
이 명령어는 Cassandra가 새 클라이언트 요청을 수락할 수 있도록 하는 네이티브 전송 (또는 바이너리 프로토콜)이 실행 중인지 여부를 나타냅니다.
nodetool [-u username -pw password] -h nodeIP statusbinary
이 명령어는 네이티브 전송 (또는 바이너리 프로토콜)이 실행 중인지 여부를 나타냅니다.
nodetool [-u username -pw password] -h nodeIP describecluster
이 명령어는 새 노드가 이전 노드와 동일한 스키마 버전을 사용하고 있는지 보여줍니다.
nodetool
사용에 관한 자세한 내용은 nodetool 사용 문서를 참고하세요.