CEPH 운영 설치 배포(luminous)

11712 단어 Ceph
오리지널 설명: 본고는 블로거 오리지널입니다. 전재 출처를 밝히세요!
이 문서는 주로ceph의 구축 과정을 소개한다.

집단 계획


서버 계획 및 구성은 다음과 같습니다.
hostname
public ip
cluster ip
노드 설명
ch-osd-1
172.16.30.73
172.16.31.73
osd 노드
ch-osd-2
172.16.30.72
172.16.31.72
osd 노드
ch-osd-3
172.16.30.75
172.16.31.75
osd 노드
ch-osd-4
172.16.30.77
172.16.31.77
osd 노드
ch-mon-1
172.16.30.78
172.16.31.78
mon+rgw+manger 노드
ch-mon-2
172.16.30.79
172.16.31.79
mon+rgw 노드
ch-mon-3
172.16.30.80
172.16.31.80
mon+rgw 노드
- 운영체제: centos release 7.2 - CPU: OSD 노드는 Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz* 48, MON 노드는 Intel(R) Xeon(R) CPU E5-2650 @ 2.00GHz* 32; -메모리 크기: OSD는 256GB입니다.MON은 64GB - 데이터 하드디스크 구성(시스템 디스크 제외): OSD는 1.2TB SAS*3 및 480G SSD*1입니다. 그 중에서 SSD는 필요하지 않습니다. 여기에는 주로journal을 저장하고 MON은 단독으로 배치하면 데이터 디스크를 필요로 하지 않습니다. - 네트워크 설정: 퍼블릭 네트워크와cluster는 모두 만메가 광섬유입니다. - 서버당 1, 2개의 디스크를 RAID1로 합니다.나머지 디스크는 RAID0 -ch-mon-1 노드를 관리 노드로 하고ceph-deploy -Ceph 버전을 배치합니다. 현재 최신 버전 v12.1.2-ceph-deploy 버전: 1.5.38 - 여기는 루트 사용자를 사용하여 설치합니다. 루트 사용자가 아니라면 루트 권한을 가져야 합니다.

환경 준비


기초 환경 검사

  • 네트워크 연결 정상(방법략)
  • ntp 서비스 정상(방법략)
  • 클러스터 서버 시간, 시간대 일치 (방법략)
  • 방화벽 정책, 포트 67896800: 7300
  • SELINUX를 Permissive로 설정하거나 비활성화
  • 디스크 어레이 검사
  • 우선 메모리 노드에 Megacli를 설치하고 RPM 패키지를 다운로드해야 한다. 예를 들어 MegaCli-8.07.14-1.noarch.rpm, 설치 명령은 다음과 같습니다.
    rpm -ivh MegaCli-8.07.14-1.noarch.rpm
    

    디스크 어레이 검사 도구인 Megacli를 사용하여 필요한 구성 정책을 충족하는지 확인합니다.
    /opt/MegaRAID/MegaCli64 -LDGetProp -Cache -LALL -aALL
    

    일반적으로 운영 체제를 설치하기 전에 각 하드 드라이브에 대해 디스크 어레이를 설정할 수 있으며, 공급업체마다 장치 디스크 어레이 구성이 약간 다르기 때문에 여기에는 상세한 설명이 없습니다.디스크 어레이가 없으면 디스크 어레이를 하고 MegaCli를 사용하여 디스크를 일상적으로 관리해야 합니다.
    OSD 데이터 디스크를 RAID0으로 만들고 읽기, 쓰기, 캐시 정책을 설정합니다. 그 중에서 읽기 정책은 Read-Ahead입니다.쓰기 정책은 WriteBack이며 쓰기 캐시는 바로 반환됩니다.디스크 캐시 디스크 캐치를 disable로 설정합니다.입출력 정책은 Direct 요청이 시스템 Cache에 캐시되지 않습니다.디스크 번호가 10인 물리적 디스크에 RAID0 구성
    /opt/MegaRAID/MegaCli64 -cfgldadd -r0 [32:10] WB RA RA -a0
    

    혹은
    /opt/MegaRAID/MegaCli64 -LDSetProp 10 WB -a0
    /opt/MegaRAID/MegaCli64 -LDSetProp 10 RA -a0
    /opt/MegaRAID/MegaCli64 -LDSetProp 10 RA -a0
    

    SSD는 로그 디스크를 RAID0으로 만들고 읽기 정책은 Normal이며 미리 읽기가 적용되지 않으며 쓰기 정책은 Write Through로 디스크에 직접 쓰기입니다.SSD에 전원 끄기 보호가 있으면 디스크 캐시 디스크 캐시가 Enable로 설정됩니다.입출력 정책은 Direct 요청이 Cache에 캐시되지 않습니다.
    /opt/MegaRAID/MegaCli64 -cfgldadd -r0 [32:13] WT NORA Direct -a0
    

    Megacli의 상세한 사용은 참고 문서 1 등 다른 자료를 참고할 수 있다

    기본 환경 구성


    yum 소스 구성
    여기에 yum 설치를 사용합니다. 저는 이미 CEPH 2진 RPM 패키지를 YUM 렌즈에 업로드했습니다. 그래서 CEPH가 사용할 수 있는 YUM 소스를 먼저 설정합니다. CEPH 자체와 EPEL 소스를 포함합니다. 아래와 같습니다.
    [root@node-5 env-check-init]# cat /etc/yum.repos.d/CentOS.repo 
    ...
    [CENTOS7-epel]
    name=CENTOS7 epel resource
    baseurl=http://yum17.int.sfdc.com.cn/epel7Server/$basearch
    enabled=1
    gpgcheck=0
    gpgkey=http://yum17.int.sfdc.com.cn/epel7/$basearch/RPM-GPG-KEY-EPEL-7
    
    [CENTOS7-ceph]
    name=CENTOS7 ceph resource
    baseurl=http://yum17.int.sfdc.com.cn/ceph/el7/$basearch
    enabled=1
    gpgcheck=0
    gpgkey=http://yum17.int.sfdc.com.cn/ceph/el7/$basearch/RPM-GPG-KEY-EPEL-7
    

    힌트: 만약에 자신의 YUM 원본이 없다면 국내 개원 렌즈, 예를 들어 청화 렌즈, 중과대 렌즈, 아리 렌즈 등을 사용할 수 있고 Ceph 공식 문서에서 제시한 설정을 사용할 수 있습니다.
    SSH 상호 신뢰
    관리 노드와 다른 집단 노드를 위해 ssh 상호신뢰를 구축하여 관리 노드가 다른 각 노드에 검증하지 않고 로그인할 수 있도록 해야 한다
    관리 노드에서 ssh keys를 생성합니다. 명령은 다음과 같습니다.
    ssh-keygen
    

    관리 노드의 ssh 키를 다른 노드로 복사합니다.
    ssh-copy-id [email protected]
    

    클러스터 배포


    패키지 설치


    관리 노드에ceph-deploy 설치
    yum install ceph-deploy -y
    

    각 노드에서 명령을 실행하는 Ceph 설치
    yum install ceph -y
    

    설치가 끝난 후 다음 명령을 사용하여 버전을 볼 수 있습니다
    [root@ch-mon-1 ~]# ceph -v
    ceph version 12.1.2 (b661348f156f148d764b998b65b90451f096cb27) luminous (rc)
    

    동시에/etc 디렉터리에ceph 디렉터리가 추가된 것을 볼 수 있습니다./etc/ceph 디렉터리 진입
    cd /etc/ceph
    

    클러스터 생성


    클러스터 초기화
    모니터 노드 3개 준비
    ceph-deploy new ch-mon-1 ch-mon-2 ch-mon-3
    

    실행이 끝난 후에 이 디렉터리에서 다음과 같은 파일을 볼 수 있습니다
    [root@ch-mon-1 ceph]# pwd
    /etc/ceph
    [root@ch-mon-1 ceph]# ll
    -rw-r--r-- 1 root root   805 Aug  3 13:44 ceph.conf
    -rw-r--r-- 1 root root 33736 Aug  3 13:45 ceph-deploy-ceph.log
    -rw------- 1 root root    73 Aug  3 13:43 ceph.mon.keyring
    

    클러스터 네트워크 구성과 같은 클러스터 구성을 계획하려면 다음과 같이 하십시오.
    기본 구성
    [root@ch-mon-1 ceph]# cat ceph.conf 
    [global]
    fsid = 31fc3bef-d912-4d12-aa1e-130d3270d5db
    mon_initial_members = ch-mon-1, ch-mon-2, ch-mon-3
    mon_host = 172.16.30.78,172.16.30.79,172.16.30.80
    auth_cluster_required = cephx
    auth_service_required = cephx
    auth_client_required = cephx
    

    수정 후
    [root@ch-mon-1 ceph]# cat ceph.conf 
    [global]
    fsid = 31fc3bef-d912-4d12-aa1e-130d3270d5db
    mon_initial_members = ch-mon-1, ch-mon-2, ch-mon-3
    mon_host = 172.16.30.78,172.16.30.79,172.16.30.80
    auth_cluster_required = cephx
    auth_service_required = cephx
    auth_client_required = cephx
    
    public_network = 172.16.30.0/24
    cluster_network = 172.16.31.0/24
    osd_pool_default_size = 3
    osd_pool_default_min_size = 1
    osd_pool_default_pg_num = 8
    osd_pool_default_pgp_num = 8
    osd_crush_chooseleaf_type = 1
    
    [mon]
    mon_clock_drift_allowed = 0.5
    
    [osd]
    osd_mkfs_type = xfs
    osd_mkfs_options_xfs = -f
    filestore_max_sync_interval = 5
    filestore_min_sync_interval = 0.1
    filestore_fd_cache_size = 655350
    filestore_omap_header_cache_size = 655350
    filestore_fd_cache_random = true
    osd op threads = 8
    osd disk threads = 4
    filestore op threads = 8
    max_open_files = 655350
    

    모니터 초기화
    초기 모니터를 배치하고 키를 획득합니다
    ceph-deploy mon create-initial
    

    이 단계를 마치면 현재 디렉터리에 다음과 같은 키링이 있습니다.
    [root@ch-mon-1 ceph]# ll
    -rw------- 1 root root    71 Aug  3 13:45 ceph.bootstrap-mds.keyring
    -rw------- 1 root root    71 Aug  3 13:45 ceph.bootstrap-mgr.keyring
    -rw------- 1 root root    71 Aug  3 13:45 ceph.bootstrap-osd.keyring
    -rw------- 1 root root    71 Aug  3 13:45 ceph.bootstrap-rgw.keyring
    -rw------- 1 root root    63 Aug  3 13:45 ceph.client.admin.keyring
    

    노드에서ceph 명령줄을 사용하려면ceph를 사용해야 합니다.client.admin.keyring은 필요한 노드의/etc/ceph 디렉터리에 놓입니다.만약 여기에 모든 노드에서 명령행을 사용하기를 원한다면, 아래의 명령을 통해ceph를 사용할 수 있습니다.client.admin.keyring을 각 노드로 복사하면cp 명령도 사용할 수 있습니다.
    ceph-deploy admin ch-mon-2 ch-mon-3 ch-osd-1 ch-osd-2 ch-osd-3 ch-osd-4
    

    L 버전의 Ceph에 관리자 데몬이 추가되었습니다. 다음 명령은 관리자 수호 프로세스를 배치합니다.
    ceph-deploy mgr create ch-mon-1
    

    OSDs 추가
    저희가 사용하는 버전 백엔드 저장소는 기본적으로bluestore를 사용합니다.
    OSDs 추가
    ceph-deploy osd create ch-osd-1:/dev/sdb ch-osd-1:/dev/sdc ch-osd-1:/dev/sdd ch-osd-2:/dev/sdb ch-osd-2:/dev/sdc ch-osd-2:/dev/sdd ch-osd-3:/dev/sdb ch-osd-3:/dev/sdc ch-osd-3:/dev/sdd ch-osd-4:/dev/sdb ch-osd-4:/dev/sdc ch-osd-4:/dev/sdd
    

    알림: 초기 버전에서 OSD 추가는prepare와activate 두 단계로 나뉘었습니다. 자세한 내용은 없습니다.
    명령 실행이 끝나면 그룹 상태를 볼 수 있습니다
    [root@ch-mon-1 ~]# ceph -s
      cluster:
        id:     31fc3bef-d912-4d12-aa1e-130d3270d5db
        health: HEALTH_OK
    
      services:
        mon: 3 daemons, quorum ch-mon-1,ch-mon-2,ch-mon-3
        mgr: ch-mon-1(active)
        osd: 12 osds: 12 up, 12 in
    
      data:
        pools:   0 pools, 0 pgs
        objects: 0 objects, 0 bytes
        usage:   12742 MB used, 13386 GB / 13398 GB avail
        pgs:
    

    OSDs 보기
    [root@ch-osd-1 ~]# ceph osd tree
    ID CLASS WEIGHT   TYPE NAME         STATUS REWEIGHT PRI-AFF 
    -1       13.08472 root default                              
    -3        3.27118     host ch-osd-1                         
     0   hdd  1.09039         osd.0         up  1.00000 1.00000 
     1   hdd  1.09039         osd.1         up  1.00000 1.00000 
     2   hdd  1.09039         osd.2         up  1.00000 1.00000 
    -5        3.27118     host ch-osd-2                         
     3   hdd  1.09039         osd.3         up  1.00000 1.00000 
     4   hdd  1.09039         osd.4         up  1.00000 1.00000 
     5   hdd  1.09039         osd.5         up  1.00000 1.00000 
    -7        3.27118     host ch-osd-3                         
     6   hdd  1.09039         osd.6         up  1.00000 1.00000 
     7   hdd  1.09039         osd.7         up  1.00000 1.00000 
     8   hdd  1.09039         osd.8         up  1.00000 1.00000 
    -9        3.27118     host ch-osd-4                         
     9   hdd  1.09039         osd.9         up  1.00000 1.00000 
    10   hdd  1.09039         osd.10        up  1.00000 1.00000 
    11   hdd  1.09039         osd.11        up  1.00000 1.00000 
    

    이로써 전체 집단은 건설이 끝났다.
    현재 최신 버전인 Ceph에 대한 배치를 통해 알 수 있듯이 이전 버전, 예를 들어 생산에 대량으로 사용되는 Hammer 버전보다 배치가 간단하다. 물론 여기는 설정 최적화가 많지 않다.

    상용 운송


    모니터링 모듈 켜기


    프로필/etc/ceph/ceph.conf에 추가
    [mgr]
    mgr modules = dashboard
    

    혹은
    ceph mgr module enable dashboard
    

    대시보드의 IP와 포트를 설정합니다
    ceph config-key put mgr/dashboard/server_addr 172.16.30.78
    ceph config-key put mgr/dashboard/server_port 7000
    

    mgr 서비스 재시작
    [root@ch-osd-1 ~]# systemctl restart ceph-mgr@ch-mon-1
    

    모니터 추가 / 제거


    모니터 추가
    모니터 삭제
    먼저 삭제할 모니터 데몬을 중지합니다. 명령은 다음과 같습니다.
    service ceph -a stop mon.{mon-id}
    #for example
    service ceph -a stop mon.ch-mon-1
    

    그리고 모니터를 그룹에서 삭제합니다.
    ceph mon remove {mon-id}
    #for example
    ceph mon remove ch-mon-1
    

    마지막으로ceph를 삭제합니다.conf의 이 모니터 설정
    더 상세한 사용 방법은 공식 문서를 보십시오

    OSDs 추가 / 제거


    OSD 추가
    OSD 삭제
    OSD를 삭제하기 전에 OSD는 보통 up과 in의 상태입니다. 먼저 삭제할 OSD를 그룹에서 꺼내서 그룹이rebalancing을 할 수 있도록 하고 데이터를 다른 OSD로 복사해야 합니다.관리 노드에서 OSD 클러스터 아웃 명령을 실행하려면 다음과 같이 하십시오.
    ceph osd out {osd-num}
    #for example
    ceph osd out 2
    

    일단 OSD가 집단에서 차출된 후, 집단은 삭제할 OSD의 PGs를 옮겨서 리밸런싱을 진행할 수 있으며, 우리는 아래의 명령을 통해 전체 과정을 관찰할 수 있다
    ceph -w
    

    주의: 소수의 서버만 있는 작은 그룹에서, 예를 들어 우리가 테스트한 그룹에서, 아웃 작업을 하면 일부 PGs가 시종일관active+remapped 상태에 있을 수 있습니다. 이때 osd를 in으로 되돌려 초기 상태ceph osd in {osd-num}로 돌아가야 합니다. 그리고 아웃 OSD가 아니라 OSD권을 0으로 다시 설정해야 합니다.ceph osd crush reweight osd.{osd-num} 0 이후 데이터 마이그레이션 상태를 관찰합니다.out과 권중치 0의 차이점은 첫 번째 상황에서 OSD의 권중은 바뀌지 않고 후자통의 권중은 업데이트된다는 것이다.
    OSD를 그룹에서 내보낸 후에도 OSD는 up 상태이고 out 상태일 수 있습니다. 설정에서 OSD를 삭제하기 전에 이 OSD 서비스를 중지하고 OSD 노드에 로그인하고 명령을 실행하여 관련 OSD 서비스를 중지해야 합니다.
    ssh {osd-host}
    sudo systemctl stop ceph-osd@{osd-num}
    #for example
    ssh ch-osd-1
    systemctl stop ceph-osd@2
    

    혹은
    kill -9 {pid}
    

    이전 릴리즈에서 다음 명령을 사용합니다.
    service ceph stop osd.2
    

    마지막으로 OSD를 클러스터의 CRUSH MAP에서 제거하고 권한을 삭제하며 OSD MAP에서 OSD를 제거하고 관리 노드에서 명령을 수행해야 합니다.
    #remove osd from crush map
    ceph osd crush remove {name}
    #remove the osd authentication key
    ceph auth del osd.{osd-num}
    #remove the osd
    ceph osd rm {osd-num}
    #for example
    ceph osd crush remove osd.2
    ceph auth del osd.2
    ceph osd rm 2
    

    하면, 만약, 만약...conf 파일에 이 OSD의 설정이 있습니다. 관련 설정을 삭제해야 합니다.
    더 상세한 사용 방법은 공식 문서를 보십시오

    푸시 구성


    우리는 더 이상 모든 서버에서ceph를 수정할 필요가 없다.ff 파일의 설정 정보는 관리 노드에서 한 부를 수정한 다음에 더 좋은 노드로 보내면 됩니다. 예를 들어ch-mon-1에서/etc/ceph/ceph를 수정했습니다.conf 내용, 동시에ch-mon-2,ch-mon-3에서 효력이 발생합니다
    ceph-deploy --overwrite-conf config push ch-mon-2 ch-mon-3
    

    좋은 웹페이지 즐겨찾기