콘텐츠로 이동

Doris 배포

주의

OpenSearch와 Doris 중 하나만 선택하면 됩니다.

개요

구성 요소 개요

  • Doris Manager: Doris 클러스터의 배포, 업그레이드, 구성 변경 등을 담당합니다.
  • Doris FE: 주로 사용자 요청 수신, 쿼리 분석 및 계획, 메타데이터 관리, 노드 관리 관련 작업을 담당합니다.
  • Doris BE: 주로 데이터 저장, 쿼리 계획 실행을 담당합니다.
  • guance-insert: 행 프로토콜 형식의 데이터를 수신하여 로컬에 축적했다가(공간 사용량이 적어 일반적으로 tmpfs 사용) Doris BE에 일괄 기록합니다.
  • guance-select: DQL 쿼리를 SQL로 변환하며, 대부분의 쿼리는 Doris FE를 사용하고 일부 쿼리는 Doris BE Thrift 인터페이스를 사용합니다.
  • VictoriaMetrics: 샘플링 쿼리 등에 보조 정보를 제공하기 위해 인덱스 수준의 쓰기량 메트릭을 저장합니다.

서버 개요

일반적으로 다음 세 그룹의 머신을 사용하며, 소규모 클러스터는 혼합 배포도 가능합니다. 서버 OS는 Ubuntu가 가장 좋습니다.

  • doris-fe: CPU 메모리 1:2, 메타데이터 저장용 20GB 이상 데이터 디스크 1개, 첫 번째 머신에 Doris Manager를 배포하는 데 사용 가능
  • doris-be: CPU 메모리 1:8, 디스크 처리량 최대화를 목표로 디스크 구성(개수) 조정
  • guancedb-logs: CPU 메모리 1:2, 호스트 또는 컨테이너로 배포 가능; 첫 번째 머신에는 Doris 메타데이터 메트릭 저장을 위해 VictoriaMetrics를 배포할 데이터 디스크가 필요함
  • CPU는 AVX2 명령어 세트를 지원해야 함
  • 다른 머신에 의해 리소스를 선점당하지 않아야 함(CPU steal이 높지 않아야 함)

네트워크 개요

  • Doris Manager는 일반적으로 doris-fe-01 서버에 배포되며, 해당 머신은 모든 Doris 머신과 ssh 통신이 가능해야 하고 8004 포트의 웹 페이지에 접근할 수 있어야 합니다.
  • guancedb-logs 머신은 시스템 패키지 관리 도구(APT)를 통해 supervisor를 설치해야 합니다.
  • MySQL 프로토콜을 통해 FE 머신의 9030 포트에 접근해야 하며, 일반적으로 Doris Manager가 설치된 머신에 mysql-client를 설치합니다.
  • guancedb-logs 머신은 다음 포트에 접근해야 합니다: doris-fe 머신의 8030 및 9030 포트; doris-be 머신의 8040 및 9060 포트; guancedb-logs 첫 번째 머신의 8428 포트
  • 제공된 계정은 s3 스토리지 버킷에 대한 모든 권한을 가지고 있어야 합니다.

배포 개요

  • s3 스토리지 버킷은 한 번 구성하면 수정할 수 없습니다. 수정하려면 데이터를 비우고 Doris 클러스터를 다시 설치해야 합니다.
  • Doris는 호스트에 배포됩니다. 네트워크 유무와 관계없이 먼저 패키지를 지정된 위치에 배치해야 합니다.
  • 직접 구매한 디스크 하드웨어로 RAID를 구성할 경우 RAID 0이 아니어야 합니다.
카테고리 설명
호스트 배포 구성 요소 be + fe + manager + guancedb-logs
배포 전제 조건 1. root 비밀번호 제공 및 root ssh 비밀번호 없는 로그인 지원
2. CPU 아키텍처가 AVX2 명령어 세트 지원

배포 기본 구성 정보

카테고리 설명
호스트 배포 아래 호스트 배포 설명 참조
호스트 배포 설명

guancedb-logs 머신이 한 대만 있는 경우, Guance 서비스에서 사용하는 주소는 호스트 ip:8480/8481입니다.

guancedb-logs 머신이 여러 대 있는 경우:

a. ELB 기능을 제공하는 경우, ELB를 사용하여 여러 guancedb-logs의 8480/8481 포트를 수신 대기하고, 서비스에서 사용하는 주소는 ELB ip:8480/8481입니다.

b. ELB 기능을 제공하지 않는 경우, 비즈니스 클러스터에 service를 생성하는 방식으로, 서비스에서 사용하는 주소는 다음과 같습니다.

쓰기: internal-doris-insert.middleware:8480

읽기: internal-doris-select.middleware:8481

다음 yaml을 참조하여 service를 생성하십시오.

doris-service.yaml (클릭하여 펼치기)
---
apiVersion: v1
kind: Service
metadata: 
  name: internal-doris-insert
  namespace: middleware
spec:
  ports:
    - protocol: TCP
      port: 8480
      targetPort: 8480
---
apiVersion: v1
kind: Endpoints
metadata:
  # 여기 name은 Service의 이름과 동일해야 함
  name: internal-doris-insert
  namespace: middleware
subsets:
  # guancedb-logs 머신 수만큼 작성
  - addresses:
      - ip: 10.7.17.250
    ports:
      - port: 8480      
  - addresses:
      - ip: 10.7.17.251
    ports:
      - port: 8480

---
apiVersion: v1
kind: Service
metadata: 
  name: internal-doris-select
  namespace: middleware
spec:
  ports:
    - protocol: TCP
      port: 8481
      targetPort: 8481
---
apiVersion: v1
kind: Endpoints
metadata:
  # 여기 name은 Service의 이름과 동일해야 함
  name: internal-doris-select
  namespace: middleware
subsets:
  # guancedb-logs 머신 수만큼 작성
  - addresses:
      - ip: 10.7.17.250
    ports:
      - port: 8481      
  - addresses:
      - ip: 10.7.17.251
    ports:
      - port: 8481

Doris 배포

사전 준비

패키지 다운로드

설치 도구 패키지입니다. 설치 패키지는 fe-01 머신에 배치합니다.

https://static.guance.com/guancedb/guancedb-doris-deploy-latest.tar.gz

다운로드하여 압축을 풀면 SelectDB + manager 설치 패키지입니다. 설치 패키지는 fe-01 머신에 배치하며, 폴더 위치는 inventory/doris-manager.vars.yaml에 구성된 경로와 동일합니다.

https://static.guance.com/guancedb/selectdb-latest.tar.gz

다운로드하여 압축을 풀면 GuanceDB 설치 패키지입니다. 설치 패키지는 모든 guancedb-logs 머신에 배치하며, 파일 위치는 inventory/guancedb-logs-doris.vars.yaml에 구성된 경로와 동일합니다.

https://static.guance.com/guancedb/guancedb-cluster-linux-amd64-latest.tar.gz

다운로드하여 압축을 풀면 victoria-metrics + vmutils 설치 패키지입니다. 설치 패키지는 모든 guancedb-logs 머신에 배치하며, 파일 위치는 inventory/guancedb-logs-doris.vars.yaml에 구성된 경로와 동일합니다.

https://static.guance.com/guancedb/vmutils-latest.tar.gz

머신 간 비밀번호 없는 로그인 구성

점프 호스트(일반적으로 fe-01)에서 현재 사용자의 ~/.ssh에 공개 키가 이미 있는지 확인합니다. 공개 키가 생성된 적이 없다면 다음 명령을 실행하여 생성하고 다른 역할의 머신으로 원격 전송합니다.

ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub  root@192.168.xxx.xxx

배포 체크 포인트

be, fe 머신 구성이 동일한 사양인지 확인합니다.

be, fe 머신 간 네트워크 ping이 1ms를 초과하지 않는지 확인합니다.

서버에서 제공하는 데이터 디스크가 베어 디스크(파티션 포맷되지 않음)인지 확인합니다.

hosts 파일 준비

inventory 디렉토리에는 5개의 hosts 파일이 필요하며, 각각 다음과 같습니다.

  • doris-be.hosts.yaml
  • doris-fe.hosts.yaml
  • doris-manager.hosts.yaml
  • guancedb-logs-doris.hosts.yaml
  • guancedb-logs-doris-vm.hosts.yaml

각 host 파일 형식은 다음과 같습니다.

name 형식은 xxx-doirs-fe-01 또는 xxx-doris-be-01이어야 합니다.

clusters:
  - name: xxx
    hosts:
      - name: xxx-doris-be-01
        port: xxx
        host: xxx
        user: xxx
        vars:
          default_ipv4: xxx
      - name: xxx-doris-be-02
        port: xxx
        host: xxx
        user: xxx
        vars:
          default_ipv4: xxx

# name:          클러스터를 표시하며, poc 또는 prd를 입력 가능
# hosts.name:    서버 역할을 표시하며, xxx-doris-be-01 형식으로 작성, xxx는 poc 또는 prd 가능
# hosts.port:    ssh 포트, 일반적으로 22
# hosts.host:    ssh 대상 머신의 IP
# hosts.user:    ssh 대상 머신의 사용자, 일반적으로 root
# vars.default_ipv4: be-01의 IP 주소
설명

일반적으로 manager는 fe와 함께 배포되므로, doris-manager.hosts.yaml의 내용은 doris-fe.hosts.yaml과 동일합니다. doris-fe.hosts.yaml에 여러 대의 fe 호스트가 있는 경우 doris-manager.hosts.yaml에는 fe-01 한 대만 작성하면 됩니다.

guancedb-logs-doris-vm.hosts.yaml의 내용은 guancedb-logs-doris.hosts.yaml과 동일합니다. guancedb-logs-doris.hosts.yaml에 여러 대의 호스트가 있는 경우 guancedb-logs-doris-vm.hosts.yaml에는 한 대만 작성하면 됩니다.

변수 구성

inventory/doris-manager.vars.yaml 파일 수정

clusters:
  - name: xxx
    vars:
      # 머신의 Doris 설치 패키지 경로 입력; 예: /root/packages/xxx.tar.gz
      doris_local_path: 
      # 머신의 Doris Manager 설치 패키지 경로 입력; 예: /root/packages/xxx.tar.gz
      manager_local_path:

      # 콜드 스토리지를 사용하지 않으면 아래 부분은 입력하지 않아도 됨
      oss_endpoint:
      oss_bucket:
      # 입력하지 않아도 됨
      oss_region:
      # 클라우드 제공업체 객체 스토리지 사용 시 일반적으로 입력하지 않음; 자체 구축 객체 스토리지 사용 시, endpoint가 IP인 경우 'path'를 입력해야 함
      addressing_style:
inventory/doris.vars.yaml 파일 수정
clusters:
  - name: xxx
    vars:
      # 복제본 수 구성. 테스트 환경은 1로 설정 가능, 프로덕션 환경은 2 이상 권장
      replication_factor: 2
      # FE 머신 메모리 GB
      fe_host_mem_gb:
      # FE 머신 수
      fe_num:
      # BE 머신 수
      be_num:
      # BE 머신 코어 수
      be_host_core_num:
      # BE 데이터 디스크 개수
      be_data_disk_num:
      # BE 단일 데이터 디스크 크기 GB
      be_data_disk_gb:
      # BE cgroup cpu 경로, 아래 내용을 참조하여 v1 또는 v2 지원 여부 확인 후 해당 주소 입력
      be_cgroup_cpu_path: 
      # fe 자체 로그 보존 기간
      fe_log_retention: 3d
      # FE 및 BE 머신의 내부 네트워크 CIDR
      cidr: 
inventory/guancedb-logs-doris.vars.yaml 파일 수정
  - name: xxx
    vars:
      # 버전 번호는 더 이상 사용되지 않음, 비워 둠
      version: ""
      # 머신의 설치 패키지 디렉토리 입력; 예: /root/packages
      local_dir:
inventory/secrets.yaml 파일 수정
clusters:
  - name: xxx
    vars:
      # OS zyadmin 사용자 비밀번호, 보안 요구 사항을 충족하려면 강력한 비밀번호 사용 권장
      os_zyadmin_password:
      # OS doris 사용자 비밀번호, 보안 요구 사항을 충족하려면 강력한 비밀번호 사용 권장
      os_doris_password:
      # root 데이터베이스 사용자 비밀번호, 강력한 비밀번호 사용 권장
      doris_root_password:
      # user_read 데이터베이스 사용자 비밀번호, 강력한 비밀번호 사용 권장
      doris_user_read_password:
      # 객체 스토리지 access key, 콜드 스토리지를 사용하지 않으면 입력하지 않아도 됨
      oss_ak:
      # 객체 스토리지 secret key, 콜드 스토리지를 사용하지 않으면 입력하지 않아도 됨
      oss_sk:
      # 자체 관측 데이터 업로드에 사용됨, 배열이며 일반적으로 하나만 입력하면 됨, 입력하지 않아도 됨
      dataway_urls: []
      # 호스트 이름 설정 여부, 혼합 배포 시 false로 설정해야 함
      set_hostname: false

Python 종속 패키지 설치

pip3 install -r requirements.txt

Doris Manager 배포

머신 초기화, 완료 후 디스크 마운트 확인 필요

python3 deployer.py -l clusrer_name -i 'inventory/doris-?e.*.yaml' -p playbooks/doris/initialize-machine.yaml

배포 체크 포인트

서버 디스크 마운트가 올바른지 확인합니다.

서버 swap이 영구적으로 비활성화되었는지 확인합니다.

서버 vm.max_map_count 매개변수가 2000000으로 조정되었는지 확인합니다.

Datakit 구성을 업데이트하여 자체 관측 데이터 업로드에 사용

python3 deployer.py -l cluster_name -i 'inventory/doris-?e.*.yaml' -p playbooks/doris/update-datakit.yaml

Doris Manager 다운로드 및 시작

python3 deployer.py -l cluster_name -i 'inventory/doris-manager.*.yaml' -p playbooks/doris/initialize-manager.yaml

be 노드 cgroup 구성

서버가 cgroup v1 버전을 지원하는지 v2 버전을 지원하는지 확인해야 합니다.

 경로가 존재하면 현재 적용되는 것은 cgroup v1입니다.
ls /sys/fs/cgroup/cpu/

 경로가 존재하면 현재 적용되는 것은 cgroup v2입니다.
ls /sys/fs/cgroup/cgroup.controllers
# 서비스 파일 생성
sudo vi /etc/systemd/system/doris-cgroup-v1.service

# 파일 내용
[Unit]
Description=Create Doris CGroup V1
After=remote-fs.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/bash -c '\
    mkdir -p /sys/fs/cgroup/cpu/doris && \
    mkdir -p /sys/fs/cgroup/memory/doris && \
    chmod 770 /sys/fs/cgroup/cpu/doris && \
    chmod 770 /sys/fs/cgroup/memory/doris && \
    chown -R doris:doris /sys/fs/cgroup/cpu/doris && \
    chown -R doris:doris /sys/fs/cgroup/memory/doris'

[Install]
WantedBy=multi-user.target
# systemd 구성 다시 로드
sudo systemctl daemon-reload
# 부팅 시 서비스 활성화
sudo systemctl enable doris-cgroup-v1.service
# 서비스 시작
sudo systemctl start doris-cgroup-v1.service
# 서비스 상태 확인
sudo systemctl status doris-cgroup-v1.service
# 확인
ls -l /sys/fs/cgroup/cpu/doris
# 서비스 파일 생성
sudo vi /etc/systemd/system/doris-cgroup-v2.service

# 파일 내용
[Unit]
Description=Create Doris CGroup V2
After=remote-fs.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/bash -c '\
    mkdir -p /sys/fs/cgroup/doris && \
    chmod 770 /sys/fs/cgroup/doris && \
    chown -R doris:doris /sys/fs/cgroup/doris && \
    chmod a+w /sys/fs/cgroup/cgroup.procs'

[Install]
WantedBy=multi-user.target
# systemd 구성 다시 로드
sudo systemctl daemon-reload
# 부팅 시 서비스 활성화
sudo systemctl enable doris-cgroup-v2.service
# 서비스 시작
sudo systemctl start doris-cgroup-v2.service
# 서비스 상태 확인
sudo systemctl status doris-cgroup-v2.service

# 확인
ls -l /sys/fs/cgroup/doris
cat /sys/fs/cgroup/cgroup.subtree_control

Doris FE 및 BE 배포

Doris 클러스터 생성

접속 주소: http://doris-fe-01:8004

Doris Manager 관리자 계정 생성 서비스 구성

  • 모니터링 및 알림 서비스 비활성화
  • Doris 로컬 설치 패키지 경로: /data1/doris/manager/downloads/doris
  • Doris Manager 로컬 설치 패키지 경로: /data1/doris/manager/downloads/manager

Doris Manager 시작

새 클러스터 생성

  • 클러스터 이름: 고객 약어_test/prd 예: guance_prd
  • 데이터베이스 root 사용자 비밀번호: inventory/secrets.yaml의 doris_root_password 입력

노드 구성

  • 노드 사용자 이름: doris
  • 노드 비밀번호: inventory/secrets.yaml의 os_doris_password 입력

  • FE 설치 경로: /home/doris/
  • FE 메타데이터 저장 디렉토리: /data1/doris/meta

  • BE 설치 경로: /home/doris/
  • BE 데이터 저장 디렉토리: 각 데이터 디스크에 해당하는 입력란에 하나씩 입력, /data1/doris/data, /data2/doris/data 등

클러스터 배포

Doris 클러스터 구성

토큰화 구성 변경, 매개변수를 클러스터 이름으로 변경해야 함

python3 deployer.py -l cluster_name -i 'inventory/doris-be.*.yaml' -p playbooks/doris/update-be.yaml
doris-conf 디렉토리에서 Doris 구성을 렌더링하고, doris-conf 폴더 아래에 cluster_name-be.conf와 cluster_name-fe.conf가 생성되었는지 확인합니다.
python3 deployer.py -l cluster_name -i 'inventory/doris.vars.yaml' -p playbooks/doris/render-config.yaml

배포 체크 포인트

구성 파일의 storage_path가 올바르게 구성되었는지 확인합니다.

구성 파일의 priority_networks 구성이 올바른지 확인합니다.

BE 구성 수정: Doris Manager 클러스터 페이지 오른쪽 상단의 '…' 버튼 -> '매개변수 구성' -> BE 노드 전체 선택 -> 오른쪽 상단 '구성 편집' -> 방금 생성한 be.conf 붙여넣기 -> '확인……' 체크 -> '확인'

FE 구성 수정: Doris Manager 클러스터 페이지 오른쪽 상단의 '…' 버튼 -> '매개변수 구성' -> FE 노드 전체 선택 -> 오른쪽 상단 '구성 편집' -> 방금 생성한 fe.conf 붙여넣기 -> '확인……' 체크 -> '확인'

데이터베이스 구성 수정

python3 deployer.py -l cluster_name -i 'inventory/doris-manager.*.yaml' -p playbooks/doris/exec-init-sql.yaml

이 단계에서 s3 스토리지 버킷이 구성됩니다. 다음 방법으로 스토리지 버킷에 파일을 업로드할 수 있는지 확인할 수 있습니다.

fe 머신에서 root 사용자로 전환하여 클러스터에 로그인합니다.

mysql -uroot -h127.0.0.1 -P 9030
아래 sql을 실행한 후 s3 버킷의 default_resource 폴더에 result_ 접두사가 붙은 파일이 생성되었는지 확인합니다. 파일이 생성되지 않았다면 권한을 확인하십시오.
use information_schema;
SELECT * FROM files
INTO OUTFILE "s3://bucket_name/default_resource/result_"
FORMAT AS ORC
PROPERTIES(
    "s3.endpoint" = "https://xxx",
    "s3.access_key"= "your-ak",
    "s3.secret_key" = "your-sk"
);

배포 체크 포인트

s3 스토리지를 사용할 수 있고 구성 후 변경할 수 없는지 확인합니다.

s3 endpoint 주소는 내부 네트워크 주소여야 합니다.

guance-insert, guance-select 및 VictoriaMetrics 배포

머신 초기화

python3 deployer.py -l cluster_name -i 'inventory/guancedb-logs-doris.*.yaml' -p playbooks/guancedb/initialize-machine.yaml 
VictoriaMetrics 배포
 python3 deployer.py -l cluster_name -i 'inventory/guancedb-logs-doris-vm.*.yaml' -p playbooks/doris/init-victoria-metrics.yaml
guance-insert 및 guance-select 배포
python3 deployer.py -l cluster_name -i 'inventory/guancedb-logs-doris.*.yaml' -p playbooks/guancedb/update-config.yaml

클러스터 상태 확인

VictoriaMetrics 상태 확인, IP는 guance-select 배포 머신

guancedb-logs-doris-api-test -ip xxx -ip yyy -ip zzz
Doris 구성 요소 확인
#구성 요소 확인
supervisorctl

#로그 확인
/var/log/supervisor/guance-select-stderr.log 

문서 평가

이 페이지가 도움이 되었나요?