웹사이트 검색

두 개의 CentOS 7 서버에서 스토리지를 복제하도록 DRBD를 설정하는 방법


DRBD(Distributed Replicated Block Device의 약어)는 Linux용 분산되고 유연하며 다양한 복제 스토리지 솔루션입니다. 서버 간에 하드 디스크, 파티션, 논리 볼륨 등과 같은 블록 장치의 내용을 미러링합니다. 여기에는 두 개의 저장 장치에 데이터 복사본이 포함되므로 하나가 실패하면 다른 하나의 데이터를 사용할 수 있습니다.

서버 간에 디스크가 미러링되는 네트워크 RAID 1 구성과 비슷하다고 생각할 수 있습니다. 그러나 RAID 및 네트워크 RAID와는 매우 다른 방식으로 작동합니다.

원래 DRBD는 고가용성(HA) 컴퓨터 클러스터에서 주로 사용되었지만 버전 9부터는 클라우드 스토리지 솔루션 배포에도 사용할 수 있습니다.

이 기사에서는 CentOS에 DRBD를 설치하는 방법과 이를 사용하여 두 서버에 스토리지(파티션)를 복제하는 방법을 간략하게 설명합니다. 이것은 Linux에서 DRBD 사용을 시작하는 데 완벽한 기사입니다.

테스트 환경

이 문서에서는 이 설정에 두 개의 노드 클러스터를 사용합니다.

  • 노드1: 192.168.56.101 – tecmint.tecmint.lan
  • 노드2: 192.168.56.102 – server1.tecmint.lan

1단계: DRBD 패키지 설치

DRBD는 Linux 커널 모듈로 구현됩니다. 이는 가상 블록 장치용 드라이버를 정확하게 구성하므로 시스템의 I/O 스택 하단 근처에 바로 설정됩니다.

DRBDELRepo 또는 EPEL 저장소에서 설치할 수 있습니다. ELRepo 패키지 서명 키를 가져오는 것부터 시작하고 두 노드에 표시된 대로 저장소를 활성화해 보겠습니다.

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

그런 다음 다음을 실행하여 두 노드 모두에 DRBD 커널 모듈과 유틸리티를 설치할 수 있습니다.

yum install -y kmod-drbd84 drbd84-utils

SELinux를 활성화한 경우 SELinux 제어에서 DRBD 프로세스를 제외하도록 정책을 수정해야 합니다.

semanage permissive -a drbd_t

또한 시스템에 방화벽이 활성화되어 있는 경우(firewalld) 두 노드 간의 데이터 동기화를 허용하려면 방화벽에 DRBD 포트 7789를 추가해야 합니다.

첫 번째 노드에서 다음 명령을 실행합니다.

firewall-cmd --permanent --add-rich-rule='rule family="ipv4"  source address="192.168.56.102" port port="7789" protocol="tcp" accept'
firewall-cmd --reload

그런 다음 두 번째 노드에서 다음 명령을 실행합니다.

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.101" port port="7789" protocol="tcp" accept'
firewall-cmd --reload

2단계: 하위 수준 저장소 준비

이제 두 클러스터 노드에 DRBD를 설치했으므로 두 노드에 대략 동일한 크기의 저장 영역을 준비해야 합니다. 이는 하드 드라이브 파티션(또는 전체 물리적 하드 드라이브), 소프트웨어 RAID 장치, LVM 논리 볼륨 또는 시스템에 있는 기타 블록 장치 유형일 수 있습니다.

이 문서의 목적에 따라 dd 명령을 사용하여 2GB 크기의 더미 블록 장치를 생성합니다.

 
dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024

우리는 이것이 두 노드에 연결된 두 번째 블록 장치(/dev/sdb)의 사용되지 않은 파티션(/dev/sdb1)이라고 가정합니다.

3단계: DRBD 구성

DRBD의 주요 구성 파일은 /etc/drbd.conf에 있으며, 추가 구성 파일은 /etc/drbd.d 디렉터리에서 찾을 수 있습니다.

스토리지를 복제하려면 DRBD 구성의 전역 및 공통 섹션이 포함된 /etc/drbd.d/global_common.conf 파일에 필요한 구성을 추가해야 하며 에서 리소스를 정의할 수 있습니다. >.res 파일.

두 노드 모두에서 원본 파일을 백업한 다음 편집할 새 파일을 엽니다(원하는 텍스트 편집기 사용).

mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig
vim /etc/drbd.d/global_common.conf 

두 파일 모두에 다음 줄을 추가합니다.

global {
 usage-count  yes;
}
common {
 net {
  protocol C;
 }
}

파일을 저장한 다음 편집기를 닫습니다.

프로토콜 C 라인에 더 많은 조명을 간략하게 적용해 보겠습니다. DRBD는 다음과 같은 세 가지 고유한 복제 모드(즉, 세 가지 복제 동시성 수준)를 지원합니다.

  • 프로토콜 A: 비동기 복제 프로토콜. 장거리 복제 시나리오에서 가장 자주 사용됩니다.
  • 프로토콜 B: 메모리 동기 프로토콜이라고도 불리는 반동기 복제 프로토콜입니다.
  • 프로토콜 C: 단거리 네트워크의 노드에 일반적으로 사용됩니다. 이는 DRBD 설정에서 가장 일반적으로 사용되는 복제 프로토콜입니다.

중요: 복제 프로토콜 선택은 배포의 두 가지 요소인 보호지연 시간에 영향을 미칩니다. 이와 대조적으로 처리량은 선택한 복제 프로토콜과 거의 독립적입니다.

4단계: 리소스 추가

리소스는 특정 복제 데이터 세트의 모든 측면을 가리키는 집합적인 용어입니다. /etc/drbd.d/test.res라는 파일에 리소스를 정의하겠습니다.

두 노드 모두에서 파일에 다음 콘텐츠를 추가합니다. 콘텐츠의 변수를 환경에 맞는 실제 값으로 바꿔야 합니다.

호스트 이름을 기록해 두십시오. uname -n 명령을 실행하여 얻을 수 있는 네트워크 호스트 이름을 지정해야 합니다.

resource test {
        on tecmint.tecmint.lan {
 		device /dev/drbd0;
       		disk /dev/sdb1;
        		meta-disk internal;	
                	address 192.168.56.101:7789;
        }
        on server1.tecmint.lan  {
		device /dev/drbd0;
        		disk /dev/sdb1;
        		meta-disk internal;
                	address 192.168.56.102:7789;
        }
}
}

어디 :

  • 호스트 이름: on 섹션에는 동봉된 구성 명령문이 적용되는 호스트가 명시되어 있습니다.
  • test: 새 리소스의 이름입니다.
  • device /dev/drbd0: DRBD가 관리하는 새로운 가상 블록 장치를 지정합니다.
  • disk /dev/sdb1: DRBD 장치의 백업 장치인 블록 장치 파티션입니다.
  • meta-disk: DRBD가 메타데이터를 저장하는 위치를 정의합니다. 내부를 사용한다는 것은 DRBD가 메타데이터를 실제 생산 데이터와 동일한 물리적 하위 수준 장치에 저장한다는 의미입니다.
  • 주소: 해당 노드의 IP 주소와 포트 번호를 지정합니다.

또한 옵션이 두 호스트 모두에서 동일한 값을 갖는 경우 리소스 섹션에서 직접 지정할 수 있습니다.

예를 들어 위 구성은 다음과 같이 재구성될 수 있습니다.

resource test {
	device /dev/drbd0;
	disk /dev/sdb1;
        	meta-disk internal;	
        	on tecmint.tecmint.lan {
 		address 192.168.56.101:7789;
        	}
        	on server1.tecmint.lan  {
		address 192.168.56.102:7789;
        		}
}

5단계: 리소스 초기화 및 활성화

DRBD와 상호작용하기 위해 DRBD 리소스를 구성하고 관리하기 위해 커널 모듈과 통신하는 다음 관리 도구를 사용합니다.

  • drbdadm: DRBD의 고급 관리 도구입니다.
  • drbdsetup: DRBD 장치를 백업 블록 장치와 연결하고, DRBD 장치 쌍을 설정하여 백업 블록 장치를 미러링하고, 실행 중인 DRBD 장치의 구성을 검사하기 위한 하위 수준 관리 도구입니다.
  • Drbdmeta: 메타데이터 관리 도구입니다.

모든 초기 리소스 구성을 추가한 후에는 두 노드 모두에서 리소스를 가져와야 합니다.

drbdadm create-md test

다음으로, 백업 장치와 함께 리소스를 연결하는 리소스를 활성화한 다음 복제 매개변수를 설정하고 리소스를 피어에 연결해야 합니다.

drbdadm up test

이제 lsblk 명령을 실행하면 DRBD 장치/볼륨 drbd0이 백업 장치 /dev/sdb1과 연결되어 있음을 알 수 있습니다.

lsblk

리소스를 비활성화하려면 다음을 실행합니다.

drbdadm down test

리소스 상태를 확인하려면 다음 명령을 실행하세요(이 시점에서는 일관되지 않음/일관되지 않음 디스크 상태가 예상됨).

drbdadm status test
OR
drbdsetup status test --verbose --statistics 	#for  a more detailed status 

6단계: 초기 장치 동기화의 기본 리소스/소스 설정

이 단계에서는 이제 DRBD를 작동할 준비가 되었습니다. 이제 초기 장치 동기화의 소스로 어떤 노드를 사용해야 하는지 알려줘야 합니다.

초기 전체 동기화를 시작하려면 하나의 노드에서만 다음 명령을 실행하십시오.

drbdadm primary --force test
drbdadm status test

동기화가 완료되면 두 디스크의 상태는 UpToDate가 되어야 합니다.

7단계: DRBD 설정 테스트

마지막으로 DRBD 장치가 복제된 데이터 저장에 잘 작동하는지 테스트해야 합니다. 우리는 빈 디스크 볼륨을 사용했기 때문에 장치에 파일 시스템을 생성하고 이를 마운트하여 복제된 데이터 저장소에 사용할 수 있는지 테스트해야 한다는 점을 기억하십시오.

초기 전체 동기화를 시작한 노드(기본 역할의 리소스가 있음)에서 다음 명령을 사용하여 장치에 파일 시스템을 생성할 수 있습니다.

mkfs -t ext4 /dev/drbd0 

그런 다음 표시된 대로 마운트합니다(마운트 지점에 적절한 이름을 지정할 수 있습니다).

mkdir -p /mnt/DRDB_PRI/
mount /dev/drbd0 /mnt/DRDB_PRI/

이제 위 마운트 지점에서 일부 파일을 복사하거나 생성하고 ls 명령을 사용하여 긴 목록을 작성합니다.

cd /mnt/DRDB_PRI/
ls -l 

그런 다음 장치를 마운트 해제하고(마운트가 열려 있지 않은지 확인하고 오류를 방지하기 위해 마운트 해제한 후 디렉터리를 변경) 노드의 역할을 기본에서 < Strong>보조:

umount /mnt/DRDB_PRI/
cd
drbdadm secondary test

다른 노드(보조 역할의 리소스가 있음)에서 이를 기본으로 만든 다음 여기에 장치를 마운트하고 마운트 지점에 대한 긴 목록을 수행합니다. 설정이 제대로 작동하면 볼륨에 저장된 모든 파일이 다음 위치에 있어야 합니다.

drbdadm primary test
mkdir -p /mnt/DRDB_SEC/
mount /dev/drbd0 /mnt/DRDB_SEC/
cd /mnt/DRDB_SEC/
ls  -l 

자세한 내용은 사용자 공간 관리 도구의 매뉴얼 페이지를 참조하십시오.

man drbdadm
man drbdsetup
man drbdmeta
요약

DRBD는 매우 유연하고 다재다능하므로 거의 모든 애플리케이션에 HA를 추가하는 데 적합한 스토리지 복제 솔루션입니다. 이 글에서는 CentOS 7DRBD를 설치하는 방법과 이를 사용하여 스토리지를 복제하는 방법을 간략하게 설명했습니다. 아래 피드백 양식을 통해 여러분의 생각을 자유롭게 공유해 주세요.