검색

7.2. 클러스터에서 암호화된 GFS2 파일 시스템 구성

download PDF

(RHEL 8.4 이상) 다음 절차에 따라 LUKS 암호화된 10.0.0.12 파일 시스템을 포함하는 Pacemaker 클러스터를 생성할 수 있습니다. 이 예에서는 논리 볼륨에 하나의 VMDK2 파일 시스템을 생성하고 파일 시스템을 암호화합니다. LUKS 암호화를 지원하는 crypt 리소스 에이전트를 사용하여 암호화된 GFS2 파일 시스템을 지원합니다.

이 절차에는 세 가지 부분이 있습니다.

  • Pacemaker 클러스터에서 공유 논리 볼륨 구성
  • 논리 볼륨 암호화 및 암호화 리소스 생성
  • 암호화된 논리 볼륨을 GFS2 파일 시스템으로 포맷하고 클러스터의 파일 시스템 리소스 생성

7.2.1. Pacemaker 클러스터에서 공유 논리 볼륨 구성

사전 요구 사항

  • 두 클러스터 노드에서 클러스터 소프트웨어를 설치하고 시작하고 기본 2-노드 클러스터를 생성합니다.
  • 클러스터의 펜싱을 구성합니다.

Pacemaker 클러스터를 생성하고 클러스터의 펜싱 구성에 대한 자세한 내용은 Pacemaker를 사용하여 Red Hat High-Availability 클러스터 생성을 참조하십시오.

절차

  1. 클러스터의 두 노드 모두에서 시스템 아키텍처에 해당하는 복구 스토리지용 리포지토리를 활성화합니다. 예를 들어 x86_64 시스템의 Resilient Storage 리포지토리를 활성화하려면 다음 subscription-manager 명령을 입력할 수 있습니다.

    # subscription-manager repos --enable=rhel-8-for-x86_64-resilientstorage-rpms

    복구 스토리지 리포지토리는 High Availability 리포지토리의 상위 세트입니다. 복구 스토리지 리포지토리를 활성화하는 경우 고가용성 리포지토리도 활성화할 필요가 없습니다.

  2. 클러스터의 두 노드 모두에서 lvm2-lockd,gfs2-utilsdlm 패키지를 설치합니다. 이러한 패키지를 지원하려면 AppStream 채널 및 Resilient Storage 채널에 가입해야 합니다.

    # yum install lvm2-lockd gfs2-utils dlm
  3. 클러스터의 두 노드 모두에서 /etc/lvm/ lvm.conf 파일의 use_lvm lockd 구성 옵션을 use_lvmlockd=1 로 설정합니다.

    ...
    use_lvmlockd = 1
    ...
  4. 글로벌 Pacemaker 매개 변수 no-quorum-policy를 halt설정합니다.

    참고

    기본적으로 no-quorum-policy 값은 stop 으로 설정되어 쿼럼이 손실되면 나머지 파티션의 모든 리소스가 즉시 중지됨을 나타냅니다. 일반적으로 이 기본값은 가장 안전하고 최적의 옵션이지만 대부분의 리소스와 달리 GFS2가 작동하려면 쿼럼이 필요합니다. 쿼럼이 GFS2 마운트를 사용하는 애플리케이션과 GFS2 마운트 자체를 모두 분실한 경우 올바르게 중지할 수 없습니다. 쿼럼 없이 이러한 리소스를 중지하려고 하면 실패하여 쿼럼이 손실될 때마다 전체 클러스터가 펜싱됩니다.

    이 상황을 해결하려면 GFS2를 사용 중인 경우 no-quorum-policy 를 wait로 설정합니다. 즉, 쿼럼을 분실하면 쿼럼을 다시 얻을 때까지 나머지 파티션이 아무 작업도 수행되지 않습니다.

    [root@z1 ~]# pcs property set no-quorum-policy=freeze
  5. dlm 리소스를 설정합니다. 이는 클러스터에서 GFS2 파일 시스템을 구성하는 데 필요한 종속 항목입니다. 이 예제에서는 locking 이라는 리소스 그룹의 일부로 dlm 리소스를 생성합니다.

    [root@z1 ~]# pcs resource create dlm --group locking ocf:pacemaker:controld op monitor interval=30s on-fail=fence
  6. 클러스터의 두 노드에서 리소스 그룹을 활성화할 수 있도록 잠금 리소스 그룹을 복제합니다.

    [root@z1 ~]# pcs resource clone locking interleave=true
  7. 그룹 잠금 의 일부로 lvmlockd 리소스를 설정합니다.

    [root@z1 ~]# pcs resource create lvmlockd --group locking ocf:heartbeat:lvmlockd op monitor interval=30s on-fail=fence
  8. 클러스터의 상태를 확인하여 잠금 리소스 그룹이 클러스터의 두 노드에서 모두 시작되었는지 확인합니다.

    [root@z1 ~]# pcs status --full
    Cluster name: my_cluster
    [...]
    
    Online: [ z1.example.com (1) z2.example.com (2) ]
    
    Full list of resources:
    
     smoke-apc      (stonith:fence_apc):    Started z1.example.com
     Clone Set: locking-clone [locking]
         Resource Group: locking:0
             dlm    (ocf::pacemaker:controld):      Started z1.example.com
             lvmlockd       (ocf::heartbeat:lvmlockd):      Started z1.example.com
         Resource Group: locking:1
             dlm    (ocf::pacemaker:controld):      Started z2.example.com
             lvmlockd       (ocf::heartbeat:lvmlockd):      Started z2.example.com
         Started: [ z1.example.com z2.example.com ]
  9. 클러스터의 한 노드에서 공유 볼륨 그룹을 생성합니다.

    참고

    LVM 볼륨 그룹에 iSCSI 대상과 같은 원격 블록 스토리지에 있는 하나 이상의 물리 볼륨이 포함된 경우 Pacemaker를 시작하기 전에 서비스를 시작하는 것이 좋습니다. Pacemaker 클러스터에서 사용하는 원격 물리 볼륨의 시작 순서를 구성하는 방법에 대한 자세한 내용은 Pacemaker에서 관리하지 않는 리소스 종속 항목의 시작 순서 구성을 참조하십시오.

    다음 명령은 /dev/sda 1에 공유 볼륨 그룹 shared_vg 1 을 생성합니다.

    [root@z1 ~]# vgcreate --shared shared_vg1 /dev/sda1
      Physical volume "/dev/sda1" successfully created.
      Volume group "shared_vg1" successfully created
      VG shared_vg1 starting dlm lockspace
      Starting locking.  Waiting until locks are ready...
  10. 클러스터의 두 번째 노드에서 다음을 수행합니다.

    1. (RHEL 8.5 이상) lvm.conf 파일에서 use_devicesfile = 1 을 설정하여 장치 파일을 사용하도록 설정한 경우 클러스터의 두 번째 노드의 장치 파일에 공유 장치를 추가합니다. 기본적으로 장치 파일 사용은 활성화되어 있지 않습니다.

      [root@z2 ~]# lvmdevices --adddev /dev/sda1
    2. 공유 볼륨 그룹의 잠금 관리자를 시작합니다.

      [root@z2 ~]# vgchange --lockstart shared_vg1
        VG shared_vg1 starting dlm lockspace
        Starting locking.  Waiting until locks are ready...
  11. 클러스터의 한 노드에서 공유 논리 볼륨을 생성합니다.

    [root@z1 ~]# lvcreate --activate sy -L5G -n shared_lv1 shared_vg1
      Logical volume "shared_lv1" created.
  12. 논리 볼륨의 LVM 활성화 리소스를 생성하여 모든 노드에서 논리 볼륨을 자동으로 활성화합니다.

    다음 명령은 shared_ vg1 볼륨 그룹에 shared _lv1 논리 볼륨에 대해 sharedlv1 이라는 LVM 활성화 리소스를 생성합니다. 또한 이 명령은 리소스를 포함하는 리소스 그룹 shared_vg1 을 만듭니다. 이 예제에서 리소스 그룹은 논리 볼륨을 포함하는 공유 볼륨 그룹과 동일한 이름을 갖습니다.

    [root@z1 ~]# pcs resource create sharedlv1 --group shared_vg1 ocf:heartbeat:LVM-activate lvname=shared_lv1 vgname=shared_vg1 activation_mode=shared vg_access_mode=lvmlockd
  13. 새 리소스 그룹을 복제합니다.

    [root@z1 ~]# pcs resource clone shared_vg1 interleave=true
  14. dlmlvmlockd 리소스를 포함하는 잠금 리소스 그룹이 먼저 시작되도록 순서 제한 조건을 구성합니다.

    [root@z1 ~]# pcs constraint order start locking-clone then shared_vg1-clone
    Adding locking-clone shared_vg1-clone (kind: Mandatory) (Options: first-action=start then-action=start)
  15. vg1 및 vg 2 리소스 그룹이 lock 리소스 그룹과 동일한 노드에서 시작되도록 공동 배치 제한 조건을 구성합니다 .

    [root@z1 ~]# pcs constraint colocation add shared_vg1-clone with locking-clone

검증

클러스터의 두 노드 모두에서 논리 볼륨이 활성 상태인지 확인합니다. 몇 초가 지연될 수 있습니다.

[root@z1 ~]# lvs
  LV         VG          Attr       LSize
  shared_lv1 shared_vg1  -wi-a----- 5.00g

[root@z2 ~]# lvs
  LV         VG          Attr       LSize
  shared_lv1 shared_vg1  -wi-a----- 5.00g

7.2.2. 논리 볼륨 암호화 및 암호화 리소스 생성

사전 요구 사항

  • Pacemaker 클러스터에 공유 논리 볼륨을 구성했습니다.

절차

  1. 클러스터의 한 노드에서 crypt 키를 포함할 새 파일을 생성하고 root로만 읽을 수 있도록 파일에 대한 권한을 설정합니다.

    [root@z1 ~]# touch /etc/crypt_keyfile
    [root@z1 ~]# chmod 600 /etc/crypt_keyfile
  2. crypt 키를 만듭니다.

    [root@z1 ~]# dd if=/dev/urandom bs=4K count=1 of=/etc/crypt_keyfile
    1+0 records in
    1+0 records out
    4096 bytes (4.1 kB, 4.0 KiB) copied, 0.000306202 s, 13.4 MB/s
    [root@z1 ~]# scp /etc/crypt_keyfile root@z2.example.com:/etc/
  3. 설정한 권한을 보존하기 위해 -p 매개 변수를 사용하여 crypt keyfile을 클러스터의 다른 노드에 배포합니다.

    [root@z1 ~]# scp -p /etc/crypt_keyfile root@z2.example.com:/etc/
  4. 암호화된 GFS2 파일 시스템을 구성할 LVM 볼륨에 암호화된 장치를 생성합니다.

    [root@z1 ~]# cryptsetup luksFormat /dev/shared_vg1/shared_lv1 --type luks2 --key-file=/etc/crypt_keyfile
    WARNING!
    ========
    This will overwrite data on /dev/shared_vg1/shared_lv1 irrevocably.
    
    Are you sure? (Type 'yes' in capital letters): YES
  5. shared_vg1 볼륨 그룹의 일부로 crypt 리소스를 생성합니다.

    [root@z1 ~]# pcs resource create crypt --group shared_vg1 ocf:heartbeat:crypt crypt_dev="luks_lv1" crypt_type=luks2 key_file=/etc/crypt_keyfile encrypted_dev="/dev/shared_vg1/shared_lv1"

검증

crypt 리소스에서 crypt 장치를 생성했는지 확인합니다. 이 예에서는 /dev/mapper/luks_lv1 입니다.

[root@z1 ~]# ls -l /dev/mapper/
...
lrwxrwxrwx 1 root root 7 Mar 4 09:52 luks_lv1 -> ../dm-3
...

7.2.3. VMDK2 파일 시스템으로 암호화된 논리 볼륨을 포맷하고 클러스터에 대한 파일 시스템 리소스를 생성합니다.

사전 요구 사항

  • 논리 볼륨을 암호화하고 암호화 리소스를 생성했습니다.

절차

  1. 클러스터의 한 노드에서 GFS2 파일 시스템으로 볼륨을 포맷합니다. 파일 시스템을 마운트하는 각 노드에 하나의 저널이 필요합니다. 클러스터의 각 노드에 충분한 저널을 생성해야 합니다. 잠금 테이블 이름의 형식은 ClusterName:FSName 입니다. 여기서 ClusterName 은 GFS2 파일 시스템이 생성되는 클러스터의 이름이고 FSName 은 클러스터 전체에서 모든 lock_dlm 파일 시스템에 대해 고유해야 하는 파일 시스템 이름입니다.

    [root@z1 ~]# mkfs.gfs2 -j3 -p lock_dlm -t my_cluster:gfs2-demo1 /dev/mapper/luks_lv1
    /dev/mapper/luks_lv1 is a symbolic link to /dev/dm-3
    This will destroy any data on /dev/dm-3
    Are you sure you want to proceed? [y/n] y
    Discarding device contents (may take a while on large devices): Done
    Adding journals: Done
    Building resource groups: Done
    Creating quota file: Done
    Writing superblock and syncing: Done
    Device:                    /dev/mapper/luks_lv1
    Block size:                4096
    Device size:               4.98 GB (1306624 blocks)
    Filesystem size:           4.98 GB (1306622 blocks)
    Journals:                  3
    Journal size:              16MB
    Resource groups:           23
    Locking protocol:          "lock_dlm"
    Lock table:                "my_cluster:gfs2-demo1"
    UUID:                      de263f7b-0f12-4d02-bbb2-56642fade293
  2. 파일 시스템 리소스를 생성하여 모든 노드에 GFS2 파일 시스템을 자동으로 마운트합니다.

    Pacemaker 클러스터 리소스로 관리되므로 파일 시스템을 /etc/fstab 파일에 추가하지 마십시오. 마운트 옵션은 options= 옵션을 사용하여 리소스 구성의 일부로 지정할 수 있습니다. 완전한 구성 옵션으로 pcs resource describe Filesystem 명령을 실행합니다.

    다음 명령은 파일 시스템 리소스를 생성합니다. 이 명령은 해당 파일 시스템의 논리 볼륨 리소스를 포함하는 리소스 그룹에 리소스를 추가합니다.

    [root@z1 ~]# pcs resource create sharedfs1 --group shared_vg1 ocf:heartbeat:Filesystem device="/dev/mapper/luks_lv1" directory="/mnt/gfs1" fstype="gfs2" options=noatime op monitor interval=10s on-fail=fence

검증

  1. GFS2 파일 시스템이 클러스터의 두 노드에 마운트되었는지 확인합니다.

    [root@z1 ~]# mount | grep gfs2
    /dev/mapper/luks_lv1 on /mnt/gfs1 type gfs2 (rw,noatime,seclabel)
    
    [root@z2 ~]# mount | grep gfs2
    /dev/mapper/luks_lv1 on /mnt/gfs1 type gfs2 (rw,noatime,seclabel)
  2. 클러스터 상태를 확인합니다.

    [root@z1 ~]# pcs status --full
    Cluster name: my_cluster
    [...]
    
    Full list of resources:
    
      smoke-apc      (stonith:fence_apc):    Started z1.example.com
      Clone Set: locking-clone [locking]
          Resource Group: locking:0
              dlm    (ocf::pacemaker:controld):      Started z2.example.com
              lvmlockd       (ocf::heartbeat:lvmlockd):      Started z2.example.com
          Resource Group: locking:1
              dlm    (ocf::pacemaker:controld):      Started z1.example.com
              lvmlockd       (ocf::heartbeat:lvmlockd):      Started z1.example.com
         Started: [ z1.example.com z2.example.com ]
      Clone Set: shared_vg1-clone [shared_vg1]
         Resource Group: shared_vg1:0
                 sharedlv1      (ocf::heartbeat:LVM-activate):  Started z2.example.com
                 crypt       (ocf::heartbeat:crypt) Started z2.example.com
                 sharedfs1      (ocf::heartbeat:Filesystem):    Started z2.example.com
        Resource Group: shared_vg1:1
                 sharedlv1      (ocf::heartbeat:LVM-activate):  Started z1.example.com
                 crypt      (ocf::heartbeat:crypt)  Started z1.example.com
                 sharedfs1      (ocf::heartbeat:Filesystem):    Started z1.example.com
              Started:  [z1.example.com z2.example.com ]
    ...
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.