Google Cloud에서 ClickHouse Cloud를 사용 중이라면 서비스가 이미 Google Cloud Storage를 사용하므로 이 페이지는 해당되지 않습니다. GCS에서 데이터를
SELECT하거나 INSERT하려면 gcs 테이블 함수를 참조하십시오.GCS 기반 MergeTree
디스크 생성
conf.d 아래의 파일에 있는 ClickHouse 구성에서 이를 선언해야 합니다. 아래는 GCS 디스크 선언 예시입니다. 이 구성에는 GCS “디스크”, 캐시, 그리고 GCS 디스크에 테이블(table)을 생성할 때 DDL 쿼리에서 지정할 정책을 설정하는 여러 섹션이 포함되어 있습니다. 각 섹션은 아래에서 설명합니다.
스토리지 구성 > disks > gcs
- 디스크 유형은 S3 API를 사용하므로
s3입니다. - GCS에서 제공하는 endpoint
- 서비스 계정 HMAC 키와 시크릿
- 로컬 디스크의 메타데이터 경로
스토리지 구성 > disks > 캐시
gcs에 10Gi 메모리 캐시를 활성화합니다.
스토리지 구성 > 정책 > gcs_main
gcs_main 정책을 지정해 데이터를 디스크 gcs에 저장할 수 있도록 합니다. 예를 들어 CREATE TABLE ... SETTINGS storage_policy='gcs_main'와 같습니다.
테이블 생성
복제 처리
ReplicatedMergeTree 테이블 엔진으로 구현할 수 있습니다. 자세한 내용은 GCS를 사용해 두 GCP 리전에서 단일 세그먼트를 복제하는 방법 가이드를 참조하십시오.
자세히 알아보기
Google Cloud Storage (GCS) 사용
배포 계획
- 2개의 GCP 리전에 각각 배포된 2개의 ClickHouse 서버 노드
- 두 ClickHouse 서버 노드와 동일한 리전에 배포된 2개의 GCS 버킷
- 3개의 ClickHouse Keeper 노드. 이 중 2개는 ClickHouse 서버 노드와 동일한 리전에 배포됩니다. 세 번째 노드는 첫 두 Keeper 노드 중 하나와 동일한 리전에 둘 수 있지만, 가용 영역은 달라야 합니다.
가상 머신 준비
* 이는 1 또는 2와 동일한 리전 내의 다른 가용 영역일 수 있습니다.
ClickHouse 배포
chnode1, chnode2로 사용합니다.
chnode1은 한 GCP 리전에, chnode2는 다른 리전에 배치합니다. 이 가이드에서는 Compute Engine VM과 GCS 버킷에 us-east1 및 us-east4를 사용합니다.
구성이 완료되기 전에는
clickhouse server를 시작하지 마십시오. 설치만 진행하십시오.ClickHouse Keeper 배포
keepernode1, keepernode2, keepernode3로 사용합니다. keepernode1은 chnode1과 동일한 리전에, keepernode2는 chnode2와 동일한 리전에 배포할 수 있습니다. keepernode3는 두 리전 중 어느 곳에든 배포할 수 있지만, 해당 리전의 ClickHouse 노드와는 서로 다른 가용 영역에 배포해야 합니다.
ClickHouse Keeper 노드에서 배포 단계를 수행할 때는 설치 지침을 참조하십시오.
버킷 두 개 만들기
us-east1과 us-east4에 각각 하나씩, 총 2개의 버킷을 만듭니다. 버킷은 단일 리전, Standard 스토리지 클래스, 비공개로 설정합니다. 메시지가 표시되면 public access prevention을 활성화하십시오. 폴더는 만들지 마십시오. ClickHouse가 스토리지에 쓸 때 자동으로 생성됩니다.
버킷과 HMAC 키를 만드는 단계별 안내가 필요하면 Create GCS buckets and an HMAC key를 펼쳐 따라 하십시오:
GCS 버킷 및 HMAC 키 생성
GCS 버킷 및 HMAC 키 생성
ch_bucket_us_east1
ch_bucket_us_east4
액세스 키 생성
서비스 계정 HMAC 키 및 시크릿 생성
Cloud Storage > 설정 > Interoperability를 열고 기존 Access key를 선택하거나 CREATE A KEY FOR A SERVICE ACCOUNT를 선택합니다. 이 가이드에서는 새 서비스 계정용 새 키를 생성하는 절차를 설명합니다.새 서비스 계정 추가
기존 서비스 계정이 없는 프로젝트라면 CREATE NEW ACCOUNT를 선택합니다.서비스 계정 생성은 3단계로 이루어집니다. 첫 번째 단계에서는 계정에 의미 있는 이름, ID 및 설명을 지정합니다.Interoperability 설정 대화상자에서는 IAM role인 Storage Object Admin 역할을 권장합니다. 두 번째 단계에서 해당 역할을 선택합니다.세 번째 단계는 선택 사항이며, 이 가이드에서는 사용하지 않습니다. 정책에 따라 사용자에게 이러한 권한을 부여할 수 있습니다.서비스 계정 HMAC 키가 표시됩니다. 이 정보는 ClickHouse 구성에서 사용되므로 저장해 두십시오.ClickHouse Keeper 구성
server_id 줄(아래에서 첫 번째로 강조 표시된 줄)을 제외하면 동일한 설정 파일을 사용합니다. ClickHouse Keeper 서버의 호스트명에 맞게 파일을 수정하고, 각 서버에서 server_id를 raft_configuration의 해당 server 항목과 일치하도록 설정하십시오. 이 예시에서는 server_id가 3으로 설정되어 있으므로 raft_configuration에서 일치하는 줄을 강조 표시했습니다.
- 파일에서 호스트명을 수정하고, 해당 호스트명이 ClickHouse 서버 노드와 Keeper 노드에서 모두 확인되는지 확인하세요
- 파일을 각 Keeper 서버의 지정된 위치로 복사하세요(
/etc/clickhouse-keeper/keeper_config.xml) - 각 머신에서
raft_configuration의 항목 번호를 기준으로server_id를 수정하세요
/etc/clickhouse-keeper/keeper_config.xml
ClickHouse 서버 구성
모범 사례이 가이드의 일부 단계에서는 설정 파일을
/etc/clickhouse-server/config.d/에 배치하도록 안내합니다. 이는 Linux 시스템에서 설정 재정의 파일의 기본 위치입니다. 이 파일을 해당 디렉터리에 넣으면 ClickHouse가 그 내용을 기본 구성과 머지합니다. 이러한 파일을 config.d 디렉터리에 배치하면 업그레이드 중 구성이 손실되는 것을 방지할 수 있습니다.네트워킹
/etc/clickhouse-server/config.d/network.xml
원격 ClickHouse Keeper 서버
- 호스트명을 Keeper 호스트에 맞게 수정하세요
/etc/clickhouse-server/config.d/use-keeper.xml
원격 ClickHouse 서버
remote_servers 항목에 replace="true" 태그를 추가합니다. 이렇게 하면 이 구성이 기본 구성과 머지될 때 remote_servers 섹션에 내용을 추가하지 않고 해당 섹션을 대체합니다.
- 파일에서 호스트명을 알맞게 수정하고, 해당 호스트명이 ClickHouse 서버 노드에서 이름 해석되는지 확인하세요
/etc/clickhouse-server/config.d/remote-servers.xml
레플리카 식별
replica_1로 지정하고, 다른 server에서는 replica_2로 지정해야 합니다. 이름은 변경할 수 있습니다. 예를 들어 한 레플리카가 South Carolina에 저장되고 다른 레플리카가 Northern Virginia에 저장되는 경우, 값은 carolina와 virginia로 지정할 수 있습니다. 각 머신에서 서로 다른 값만 사용하도록 하십시오.
/etc/clickhouse-server/config.d/macros.xml
GCS 스토리지
disks와 policies가 포함됩니다. 아래에서 구성하는 디스크의 이름은 gcs이고, type은 s3입니다. type이 s3인 이유는 ClickHouse가 GCS 버킷을 AWS S3 버킷처럼 액세스하기 때문입니다. 이 구성은 각 ClickHouse 서버 노드에 하나씩, 총 2개가 필요합니다.
아래 구성에서는 다음 치환값을 적용해야 합니다.
다음 치환값은 두 ClickHouse 서버 노드마다 서로 다릅니다.
REPLICA 1 BUCKET은 서버와 동일한 리전(Region)에 있는 버킷 이름으로 설정해야 합니다REPLICA 1 FOLDER는 한 서버에서는replica_1로, 다른 서버에서는replica_2로 변경해야 합니다
access_key_id는 앞서 생성한 HMAC Key로 설정해야 합니다secret_access_key는 앞서 생성한 HMAC Secret으로 설정해야 합니다
/etc/clickhouse-server/config.d/storage.xml
ClickHouse Keeper 시작
ClickHouse Keeper 상태 확인
netcat을 사용해 ClickHouse Keeper에 명령을 전송합니다. 예를 들어 mntr 명령은 ClickHouse Keeper 클러스터의 상태를 반환합니다. 각 Keeper 노드에서 이 명령을 실행하면 하나는 리더이고 나머지 두 개는 팔로워임을 확인할 수 있습니다:
ClickHouse 서버 시작
chnode1 및 chnode에서 다음을 실행하세요:
확인
디스크 구성을 확인하세요
system.disks에는 각 디스크에 대한 레코드가 있어야 합니다.
- default
- gcs
- cache
클러스터에서 생성한 테이블이 두 노드 모두에 생성되었는지 확인
데이터를 삽입할 수 있는지 확인
테이블에 gcs_main 스토리지 정책이 사용되는지 확인합니다.
Google Cloud 콘솔에서 확인
storage.xml 설정 파일에서 사용한 이름의 폴더가 각 버킷에 생성된 것을 확인할 수 있습니다. 폴더를 펼치면 데이터 파티션을 나타내는 여러 파일이 표시됩니다.