웹사이트 검색

Ubuntu 16.04에 Ceph Storage Cluster를 설치하는 방법


Ceph는 오픈 소스 스토리지 플랫폼으로 고성능, 안정성 및 확장성을 제공합니다. 개체, 블록 및 파일 수준 스토리지에 대한 인터페이스를 제공하고 단일 장애 지점 없이 작동할 수 있는 무료 분산 스토리지 시스템입니다.

이 튜토리얼에서는 Ubuntu 16.04 서버에 Ceph 클러스터를 설치하고 빌드하는 방법을 안내합니다. Ceph 클러스터는 다음 구성 요소로 구성됩니다. -medrectangle-3-0;var ffid=1;var alS=1021%1000;var container=document.getElementById(slotId);container.style.width=100%;var ins=document.createElement(ins);ins. id=slotId+-asloaded;ins.className=adsbygoogle ezasloaded;ins.dataset.adClient=pid;ins.dataset.adChannel=cid;if(ffid==2){ins.dataset.fullWidthResponsive=true;}

  • Ceph OSD(ceph-osd) - 데이터 저장, 데이터 복제 및 복구를 처리합니다. Ceph 클러스터에는 2개 이상의 Ceph OSD 서버가 필요합니다. 이 설정에서는 3개의 Ubuntu 16.04 서버를 사용합니다.
  • Ceph Monitor(ceph-mon) - 클러스터 상태를 모니터링하고 OSD 맵 및 CRUSH 맵을 실행합니다. 여기서는 하나의 서버를 사용합니다.
  • Ceph Meta Data Server(ceph-mds) - Ceph를 파일 시스템으로 사용하려는 경우 필요합니다.

전제 조건

  • Ubuntu 16.04 서버가 설치된 6개의 서버 노드
  • 모든 노드에 대한 루트 권한

다음 호스트 이름/IP 설정을 사용합니다.

호스트 이름 IP 주소

ceph-admin 10.0.15.10
mon1 10.0.15.11
osd1 10.0.15.21
>osd2 10.0.15.22
osd3 10.0.15.23
클라이언트 10.0.15.15

1단계 - 모든 노드 구성

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

Ceph 사용자 만들기

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

useradd -m -s /bin/bash cephuser
passwd cephuser

새 사용자를 생성한 후 암호 없는 sudo 권한을 위해 cephuser를 구성해야 합니다. 이것은 cephuser가 암호를 먼저 입력하지 않고도 실행하고 sudo 권한을 얻을 수 있음을 의미합니다.

이를 달성하려면 아래 명령을 실행하십시오.

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를 통해 날짜와 시간을 설정합니다. 미국 풀 NTP 서버를 사용합니다. 그런 다음 부팅 시 실행되도록 NTP 서버를 시작하고 활성화합니다.

sudo apt-get install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntp
systemctl start ntp

Open-vm-tools 설치

VMware 내에서 모든 노드를 실행 중인 경우 이 가상화 유틸리티를 설치해야 합니다.

sudo apt-get install -y open-vm-tools

Python 설치 및 parted

이 자습서에서는 ceph-cluster를 빌드하기 위해 Python 패키지가 필요합니다. python 및 python-pip를 설치합니다.

sudo apt-get install -y python python-pip parted

호스트 파일 구성

vim 편집기를 사용하여 모든 노드에서 호스트 파일을 편집합니다.

vim /etc/hosts

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

10.0.15.10        ceph-admin
10.0.15.11        mon1
10.0.15.21        ceph-osd1
10.0.15.22        ceph-osd2
10.0.15.23        ceph-osd3
10.0.15.15        ceph-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 ceph-osd1
        Hostname ceph-osd1
        User cephuser

Host ceph-osd2
        Hostname ceph-osd2
        User cephuser

Host ceph-osd3
        Hostname ceph-osd3
        User cephuser

Host ceph-client
        Hostname ceph-client
        User cephuser

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

구성 파일의 권한을 644로 변경합니다.

chmod 644 ~/.ssh/config

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

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

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

이제 ceph-admin 노드에서 osd1 서버에 액세스하여 암호 없는 로그인이 작동하는지 테스트하십시오.

ssh ceph-osd1

3단계 - Ubuntu 방화벽 구성

보안상의 이유로 서버에서 방화벽을 켜야 합니다. 기본 Ubuntu 방화벽인 Ufw(복잡하지 않은 방화벽)를 사용하여 시스템을 보호하는 것이 좋습니다. 이 단계에서는 모든 노드에서 ufw를 활성화한 다음 ceph-admin, ceph-mon 및 ceph-osd에 필요한 포트를 엽니다.

ceph-admin 노드에 로그인하고 ufw 패키지를 설치합니다.

ssh 
sudo apt-get install -y ufw

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

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 2003/tcp
sudo ufw allow 4505:4506/tcp

부팅 시 시작되도록 ufw를 시작하고 활성화합니다.

sudo ufw enable

ceph-admin 노드에서 모니터 노드 mon1에 로그인하고 ufw를 설치합니다.

ssh mon1
sudo apt-get install -y ufw

ceph 모니터 노드의 포트를 열고 ufw를 시작합니다.

sudo ufw allow 22/tcp
sudo ufw allow 6789/tcp
sudo ufw enable

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

ceph-admin에서 각 ceph-osd 노드에 로그인하고 ufw를 설치합니다.

ssh ceph-osd1
sudo apt-get install -y ufw

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

sudo ufw allow 22/tcp
sudo ufw allow 6800:7300/tcp
sudo ufw enable

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

4단계 - Ceph OSD 노드 구성

이 자습서에는 3개의 OSD 노드가 있으며 각 노드에는 두 개의 하드 디스크 파티션이 있습니다.

  1. /dev/sda 루트 파티션용
  2. /dev/sdb는 빈 파티션입니다 - 20GB

우리는 ceph 디스크에 /dev/sdb를 사용할 것입니다. ceph-admin 노드에서 모든 OSD 노드에 로그인하고 XFS 파일 시스템으로 /dev/sdb 파티션을 포맷합니다.

ssh ceph-osd1
ssh ceph-osd2
ssh ceph-osd3

fdisk 명령으로 파티션 구성표를 확인하십시오.

sudo fdisk -l /dev/sdb

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

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

그런 다음 mkfs 명령을 사용하여 파티션을 XFS 형식으로 포맷합니다.

sudo mkfs.xfs -f /dev/sdb

이제 파티션을 확인하면 XFS /dev/sdb 파티션이 표시됩니다.

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

5단계 - Ceph 클러스터 구축

이 단계에서는 ceph-admin에서 모든 노드에 Ceph를 설치합니다. 시작하려면 ceph-admin 노드에 로그인하십시오.

ssh 
su - cephuser

ceph-admin 노드에 ceph-deploy 설치

첫 번째 단계에서 우리는 이미 시스템에 python 및 python-pip를 설치했습니다. 이제 pypi python 리포지토리에서 Ceph 배포 도구 ceph-deploy를 설치해야 합니다.

pip 명령을 사용하여 ceph-admin 노드에 ceph-deploy를 설치합니다.

sudo pip install ceph-deploy

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

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

새 클러스터 만들기

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

mkdir cluster
cd cluster/

다음으로 모니터 노드 mon1을 정의하여 ceph-deploy 명령으로 새 클러스터를 만듭니다.

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

파일을 저장하고 편집기를 종료합니다.

모든 노드에 Ceph 설치

이제 단일 명령으로 ceph-admin 노드의 모든 노드에 Ceph를 설치합니다.

ceph-deploy install ceph-admin ceph-osd1 ceph-osd2 ceph-osd3 mon1

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

이제 mon1 노드에 모니터 노드를 배포합니다.

ceph-deploy mon create-initial

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

ceph-deploy gatherkeys mon1

클러스터에 OSDS 추가

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

모든 osd 노드에서 사용 가능한 디스크 /dev/sdb를 확인하십시오.

ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3

이전에 생성한 XFS 형식의 /dev/sdb가 표시됩니다.

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

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

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

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

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

결과에서 ceph-osd1-3이 OSD를 사용할 준비가 된 것으로 표시되면 명령이 성공한 것입니다.

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

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

이제 OSDS 노드에서 sdb 디스크를 다시 확인할 수 있습니다.

ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3

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

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

또는 OSD 노드에서 직접 확인합니다.

ssh ceph-osd1
sudo fdisk -l /dev/sdb

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

ceph-deploy admin ceph-admin mon1 ceph-osd1 ceph-osd2 ceph-osd3

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

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

Ubuntu 16.04의 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 서버가 있으며 모두 작동하고 실행 중이며 45GB - 3x15GB Ceph Data OSD 파티션의 사용 가능한 디스크 공간이 있어야 합니다.

Ubuntu 16.04에서 새로운 Ceph 클러스터를 성공적으로 빌드합니다.

참조

  • http://docs.ceph.com/docs/jewel/