웹사이트 검색

CentOS 7에서 Ceph 분산 스토리지 클러스터를 구축하는 방법


이 페이지에서

  1. 1단계 - 모든 노드 구성
    1. Ceph 사용자 만들기
    2. NTP 설치 및 구성
    3. Open-vm-tools 설치
    4. SELinux 비활성화\n
    5. 호스트 파일 구성\n

    1. ceph-admin 노드에 ceph-deploy 설치
    2. 새 클러스터 구성 만들기
    3. 모든 노드에 Ceph 설치
    4. 클러스터에 OSDS 추가

    Ceph는 널리 사용되는 오픈 소스 스토리지 플랫폼입니다. 고성능, 안정성 및 확장성을 제공합니다. Ceph 무료 분산 스토리지 시스템은 개체, 블록 및 파일 수준 스토리지를 위한 인터페이스를 제공합니다. Ceph는 단일 장애 지점 없이 분산 스토리지 시스템을 제공하도록 구축되었습니다.

    이 튜토리얼에서는 CentOS 7에 Ceph 클러스터를 설치하고 구축하는 방법을 안내합니다. Ceph 클러스터에는 다음과 같은 Ceph 구성 요소가 필요합니다.

    • Ceph OSD(ceph-osd) - 데이터 저장소, 데이터 복제 및 복구를 처리합니다. Ceph 클러스터에는 2개 이상의 Ceph OSD 서버가 필요합니다. 여기서는 3개의 CentOS 7 OSD 서버를 사용하겠습니다.\n
    • Ceph Monitor(ceph-mon) - 클러스터 상태, OSD 맵 및 CRUSH 맵을 모니터링합니다. 하나의 서버를 사용하겠습니다.\n
    • Ceph 메타 데이터 서버(ceph-mds) - Ceph를 파일 시스템으로 사용하는 데 필요합니다.\n

    전제 조건

    • CentOS 7이 설치된 6개의 서버 노드.
    • 모든 노드에 대한 루트 권한.\n

    이 튜토리얼의 서버는 다음 호스트 이름과 IP 주소를 사용합니다.

    Hostname IP 주소


    mon1 10.0.15.11
    OSD1 10.0.15.21
    OSD2 10.0.15.22
    OSD3 10.0.15.23
    클라이언트 10.0.15.15

    모든 OSD 노드에는 루트(/) 파티션 1개와 나중에 Ceph 데이터 저장소로 사용되는 빈 파티션 2개의 파티션이 필요합니다.

    1단계 - 모든 노드 구성

    이 단계에서는 6개의 노드를 모두 구성하여 Ceph Cluster 설치를 준비합니다. 모든 노드에서 아래의 모든 명령을 따르고 실행해야 합니다. 그리고 ssh-server가 모든 노드에 설치되어 있는지 확인하십시오.

    Ceph 사용자 생성

    모든 노드에서 cephuser라는 새 사용자를 만듭니다.

    useradd -d /home/cephuser -m cephuser
    passwd cephuser

    새 사용자를 생성한 후 cephuser에 대해 sudo를 구성해야 합니다. 그는 루트로 명령을 실행할 수 있어야 하고 암호 없이 루트 권한을 얻을 수 있어야 합니다.

    아래 명령을 실행하여 사용자를 위한 sudoers 파일을 생성하고 sed로 /etc/sudoers 파일을 편집합니다.

    echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
    chmod 0440 /etc/sudoers.d/cephuser
    sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers

    NTP 설치 및 구성

    모든 노드에서 날짜와 시간을 동기화하려면 NTP를 설치하십시오. ntpdate 명령을 실행하여 NTP 프로토콜을 통해 날짜와 시간을 설정하면 us pool NTP 서버를 사용합니다. 그런 다음 부팅 시 실행되도록 NTP 서버를 시작하고 활성화합니다.

    yum install -y ntp ntpdate ntp-doc
    ntpdate 0.us.pool.ntp.org
    hwclock --systohc
    systemctl enable ntpd.service
    systemctl start ntpd.service

    Open-vm-tools 설치

    VMware 내에서 모든 노드를 실행 중인 경우 이 가상화 유틸리티를 설치해야 합니다. 그렇지 않으면 이 단계를 건너뜁니다.

    yum install -y open-vm-tools

    SELinux 비활성화

    sed 스트림 편집기로 SELinux 구성 파일을 편집하여 모든 노드에서 SELinux를 비활성화합니다.

    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

    호스트 파일 구성

    vim 편집기를 사용하여 모든 노드에서 /etc/hosts 파일을 편집하고 모든 클러스터 노드의 IP 주소 및 호스트 이름이 있는 줄을 추가합니다.

    vim /etc/hosts

    아래 구성을 붙여넣습니다.

    10.0.15.10        ceph-admin
    10.0.15.11        mon1
    10.0.15.21        osd1
    10.0.15.22        osd2
    10.0.15.23        osd3
    10.0.15.15        client

    파일을 저장하고 vim을 종료합니다.

    이제 호스트 이름으로 서버 간에 ping을 시도하여 네트워크 연결을 테스트할 수 있습니다. 예:

    ping -c 5 mon1

    2단계 - SSH 서버 구성

    이 단계에서는 ceph-admin 노드를 구성합니다. 관리 노드는 모니터 노드 및 osd 노드를 구성하는 데 사용됩니다. ceph-admin 노드에 로그인하고 cephuser가 됩니다.

    ssh 
    su - cephuser

    관리 노드는 모든 클러스터 노드를 설치하고 구성하는 데 사용되므로 ceph-admin 노드의 사용자는 암호 없이 모든 노드에 연결할 수 있는 권한이 있어야 합니다. ceph-admin 노드에서 cephuser에 대한 암호 없는 SSH 액세스를 구성해야 합니다.

    cephuser용 ssh 키를 생성합니다.

    ssh-keygen

    암호를 비워 두십시오.

    그런 다음 ssh 구성을 위한 구성 파일을 만듭니다.

    vim ~/.ssh/config

    아래에 구성 붙여넣기:

    Host ceph-admin
            Hostname ceph-admin
            User cephuser

    Host mon1
            Hostname mon1
            User cephuser

    Host osd1
            Hostname osd1
            User cephuser

    Host osd2
            Hostname osd2
            User cephuser

    Host osd3
            Hostname osd3
            User cephuser

    Host client
            Hostname client
            User cephuser

    파일을 저장합니다.

    구성 파일의 권한을 변경하십시오.

    chmod 644 ~/.ssh/config

    이제 ssh-copy-id 명령을 사용하여 모든 노드에 SSH 키를 추가합니다.

    ssh-keyscan osd1 osd2 osd3 mon1 client >> ~/.ssh/known_hosts
    ssh-copy-id osd1
    ssh-copy-id osd2
    ssh-copy-id osd3
    ssh-copy-id mon1
    ssh-copy-id client

    요청 시 cephuser 비밀번호를 입력하십시오.

    완료되면 ceph-admin 노드에서 osd1 서버에 액세스해 보십시오.

    ssh osd1

    3단계 - 방화벽 구성

    Firewalld를 사용하여 시스템을 보호합니다. 이 단계에서는 모든 노드에서 Firewald를 활성화한 다음 ceph-admon, ceph-mon 및 ceph-osd에 필요한 포트를 엽니다.

    ceph-admin 노드에 로그인하고 firewalld를 시작합니다.

    ssh 
    systemctl start firewalld
    systemctl enable firewalld

    포트 80, 2003 및 4505-4506을 연 다음 방화벽을 다시 로드합니다.

    sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
    sudo firewall-cmd --zone=public --add-port=2003/tcp --permanent
    sudo firewall-cmd --zone=public --add-port=4505-4506/tcp --permanent
    sudo firewall-cmd --reload

    ceph-admin 노드에서 모니터 노드 mon1에 로그인하고 firewalld를 시작합니다.

    ssh mon1
    sudo systemctl start firewalld
    sudo systemctl enable firewalld

    Ceph 모니터 노드에서 새 포트를 열고 방화벽을 다시 로드합니다.

    sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent
    sudo firewall-cmd --reload

    마지막으로 각 osd 노드(osd1, osd2 및 os3)에서 포트 6800-7300을 엽니다.

    ceph-admin 노드에서 각 osd 노드에 로그인합니다.

    ssh osd1
    sudo systemctl start firewalld
    sudo systemctl enable firewalld

    포트를 열고 방화벽을 다시 로드합니다.

    sudo firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
    sudo firewall-cmd --reload

    방화벽 구성이 완료되었습니다.

    4단계 - Ceph OSD 노드 구성

    이 가이드에는 3개의 OSD 노드가 있고 각 노드에는 2개의 파티션이 있습니다.

    1. /dev/sda 루트 파티션용.
    2. /dev/sdb는 빈 파티션입니다. 제 경우에는 30GB입니다.

    Ceph 디스크에 /dev/sdb를 사용합니다. ceph-admin 노드에서 모든 OSD 노드에 로그인하고 /dev/sdb 파티션을 XFS로 포맷합니다.

    ssh osd1
    ssh osd2
    ssh osd3

    fdisk 명령어로 파티션을 확인합니다.

    sudo fdisk -l /dev/sdb

    parted 명령을 사용하여 XFS 파일 시스템 및 GPT 파티션 테이블로 /dev/sdb 파티션을 포맷합니다.

    sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
    sudo mkfs.xfs /dev/sdb -f

    이제 파티션을 확인하면 xfs /dev/sdb 파티션이 생깁니다.

    sudo blkid -o value -s TYPE /dev/sdb

    5단계 - Ceph 클러스터 구축

    이 단계에서는 ceph-admin 노드의 모든 노드에 Ceph를 설치합니다.

    ceph-admin 노드에 로그인합니다.

    ssh 
    su - cephuser

    ceph-admin 노드에 ceph-deploy 설치

    Ceph 리포지토리를 추가하고 yum 명령을 사용하여 Ceph 배포 도구 ceph-deploy를 설치합니다.

    sudo rpm -Uhv http://download.ceph.com/rpm-jewel/el7/noarch/ceph-release-1-1.el7.noarch.rpm
    sudo yum update -y && sudo yum install ceph-deploy -y

    모든 노드가 업데이트되었는지 확인하십시오.

    ceph-deploy 도구가 설치된 후 ceph 클러스터 구성을 위한 새 디렉터리를 만듭니다.

    새 클러스터 구성 만들기

    새 클러스터 디렉터리를 만듭니다.

    mkdir cluster
    cd cluster/

    그런 다음 ceph-deploy 명령으로 새 클러스터 구성을 생성하고 모니터 노드를 mon1로 정의합니다.

    ceph-deploy new mon1

    이 명령은 클러스터 디렉터리에 Ceph 클러스터 구성 파일 ceph.conf를 생성합니다.

    vim으로 ceph.conf 파일을 편집합니다.

    vim ceph.conf

    [global] 블록에서 아래 구성을 붙여넣습니다.

    # Your network address
    public network = 10.0.15.0/24
    osd pool default size = 2

    파일을 저장하고 vim을 종료합니다.

    모든 노드에 Ceph 설치

    이제 ceph-admin 노드에서 다른 모든 노드에 Ceph를 설치합니다. 이 작업은 단일 명령으로 수행할 수 있습니다.

    ceph-deploy install ceph-admin mon1 osd1 osd2 osd3

    이 명령은 모든 노드(mon1, osd1-3 및 ceph-admin)에 Ceph를 자동으로 설치합니다. 설치에는 다소 시간이 걸립니다.

    이제 mon1 노드에 ceph-mon을 배포합니다.

    ceph-deploy mon create-initial

    이 명령은 모니터 키를 생성하고 ceph 명령으로 키를 확인하고 가져옵니다.

    ceph-deploy gatherkeys mon1

    클러스터에 OSDS 추가

    Ceph가 모든 노드에 설치되면 OSD 데몬을 클러스터에 추가할 수 있습니다. OSD 데몬은 디스크 /dev/sdb에 데이터 및 저널 파티션을 생성합니다.

    모든 OSD 노드에서 /dev/sdb 파티션을 사용할 수 있는지 확인하세요.

    ceph-deploy disk list osd1 osd2 osd3

    XFS 형식의 /dev/sdb 디스크가 표시됩니다.

    다음으로 zap 옵션을 사용하여 모든 노드에서 /dev/sdb 파티션 테이블을 삭제합니다.

    ceph-deploy disk zap osd1:/dev/sdb osd2:/dev/sdb osd3:/dev/sdb

    이 명령은 Ceph OSD 노드의 /dev/sdb에 있는 모든 데이터를 삭제합니다.

    이제 모든 OSDS 노드를 준비하십시오. 결과에 오류가 없는지 확인하십시오.

    ceph-deploy osd prepare osd1:/dev/sdb osd2:/dev/sdb osd3:/dev/sdb

    osd1-3이 OSD 사용 결과에 대해 준비되었다고 표시되면 배포가 성공한 것입니다.

    아래 명령으로 OSD를 활성화합니다.

    ceph-deploy osd activate osd1:/dev/sdb1 osd2:/dev/sdb1 osd3:/dev/sdb1

    계속하기 전에 출력에서 오류를 확인하십시오. 이제 list 명령을 사용하여 OSD 노드에서 sdb 디스크를 확인할 수 있습니다.

    ceph-deploy disk list osd1 osd2 osd3

    그 결과 /dev/sdb에는 이제 두 개의 파티션이 있습니다.

    1. /dev/sdb1 - Ceph 데이터
    2. /dev/sdb2 - Ceph 저널

    또는 fdisk를 사용하여 OSD 노드에서 직접 확인할 수 있습니다.

    ssh osd1
    sudo fdisk -l /dev/sdb

    그런 다음 연결된 모든 노드에 관리 키를 배포합니다.

    ceph-deploy admin ceph-admin mon1 osd1 osd2 osd3

    모든 노드에서 아래 명령을 실행하여 키 파일의 권한을 변경하십시오.

    sudo chmod 644 /etc/ceph/ceph.client.admin.keyring

    CentOS 7의 Ceph 클러스터가 생성되었습니다.

    6단계 - Ceph 설정 테스트

    4단계에서 새 Ceph 클러스터를 설치 및 생성한 다음 클러스터에 OSDS 노드를 추가했습니다. 이제 클러스터를 테스트하고 클러스터 설정에 오류가 없는지 확인할 수 있습니다.

    ceph-admin 노드에서 ceph 모니터 서버 mon1에 로그인합니다.

    ssh mon1

    아래 명령어를 실행하여 클러스터 상태를 확인하세요.

    sudo ceph health

    이제 클러스터 상태를 확인하십시오.

    sudo ceph -s

    그러면 아래와 같은 결과가 표시됩니다.

    Ceph 상태가 양호하고 IP 주소가 10.0.15.11인 모니터 노드 mon1이 있는지 확인하십시오. 3개의 OSD 서버가 있어야 하고 모두 실행 중이어야 하며 약 75GB - 3x25GB Ceph Data 파티션의 사용 가능한 디스크가 있어야 합니다.

    축하합니다. 새 Ceph 클러스터를 성공적으로 구축했습니다.

    Ceph 튜토리얼의 다음 부분에서는 Ceph를 블록 장치로 사용하거나 파일 시스템으로 마운트하는 방법을 보여드리겠습니다.

    참조

    • https://access.redhat.com/documentation/en/red-hat-ceph-storage/