1장. 컨테이너에 Red Hat Ceph Storage 배포


이 장에서는 컨테이너에 Ansible 애플리케이션을 ceph-ansible 플레이북과 함께 사용하여 Red Hat Ceph Storage 3을 배포하는 방법을 설명합니다.

1.1. 사전 요구 사항

1.1.1. CDN 및 서브스크립션에 Red Hat Ceph Storage 노드 등록

각 RHCS(Red Hat Ceph Storage) 노드를 CDN(Content Delivery Network)에 등록하고 해당 서브스크립션을 연결하여 노드가 소프트웨어 리포지토리에 액세스할 수 있도록 합니다. 각 RHCS 노드는 전체 Red Hat Enterprise Linux 7 기본 콘텐츠와 추가 리포지토리 콘텐츠에 액세스할 수 있어야 합니다.

사전 요구 사항
  • 유효한 Red Hat 서브스크립션
  • RHCS 노드는 인터넷에 연결할 수 있어야 합니다.
  • 설치 중에 인터넷에 액세스할 수 없는 RHCS 노드의 경우 먼저 인터넷에 액세스할 수 있는 시스템에서 다음 단계를 수행해야 합니다.

    1. 로컬 Docker 레지스트리를 시작합니다.

      # docker run -d -p 5000:5000 --restart=always --name registry registry:2
      Copy to Clipboard Toggle word wrap
    2. Red Hat 고객 포털에서 Red Hat Ceph Storage 3.x 이미지를 가져옵니다.

      # docker pull registry.access.redhat.com/rhceph/rhceph-3-rhel7
      Copy to Clipboard Toggle word wrap
    3. 이미지에 태그를 지정하십시오.

       # docker tag registry.access.redhat.com/rhceph/rhceph-3-rhel7 <local-host-fqdn>:5000/cephimageinlocalreg
      Copy to Clipboard Toggle word wrap

      <local-host-fqdn> 을 로컬 호스트 FQDN으로 바꿉니다.

    4. 시작한 로컬 Docker 레지스트리에 이미지를 푸시합니다.

      # docker push <local-host-fqdn>:5000/cephimageinlocalreg
      Copy to Clipboard Toggle word wrap

      <local-host-fqdn> 을 로컬 호스트 FQDN으로 바꿉니다.

절차

스토리지 클러스터의 모든 노드에서 root 사용자로 다음 단계를 수행합니다.

  1. 노드를 등록합니다. 메시지가 표시되면 Red Hat Customer Portal 인증 정보를 입력합니다.

    # subscription-manager register
    Copy to Clipboard Toggle word wrap
  2. CDN에서 최신 서브스크립션 데이터를 가져옵니다.

    # subscription-manager refresh
    Copy to Clipboard Toggle word wrap
  3. Red Hat Ceph Storage에서 사용 가능한 모든 서브스크립션을 나열합니다.

    # subscription-manager list --available --all --matches="*Ceph*"
    Copy to Clipboard Toggle word wrap

    적절한 서브스크립션을 식별하고 해당 풀 ID를 검색합니다.

  4. 서브스크립션을 연결합니다.

    # subscription-manager attach --pool=$POOL_ID
    Copy to Clipboard Toggle word wrap
    replace
    • 이전 단계에서 식별한 풀 ID가 있는 $POOL_ID 입니다.
  5. 기본 소프트웨어 리포지토리를 비활성화합니다. 그런 다음 Red Hat Enterprise Linux 7 Server, Red Hat Enterprise Linux 7 Server Extras 및 RHCS 리포지토리를 활성화합니다.

    # subscription-manager repos --disable=*
    # subscription-manager repos --enable=rhel-7-server-rpms
    # subscription-manager repos --enable=rhel-7-server-extras-rpms
    # subscription-manager repos --enable=rhel-7-server-rhceph-3-mon-els-rpms
    # subscription-manager repos --enable=rhel-7-server-rhceph-3-osd-els-rpms
    # subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
    Copy to Clipboard Toggle word wrap
  6. 최신 패키지를 수신하도록 시스템을 업데이트합니다.

    # yum update
    Copy to Clipboard Toggle word wrap
추가 리소스

1.1.2. sudo 액세스를 사용하여 Ansible 사용자 생성

Ansible은 모든 RHCS(Red Hat Ceph Storage) 노드에 root 권한이 있는 사용자로 로그인하고 암호를 요청하지 않고 구성 파일을 생성할 수 있어야 합니다. Ansible을 사용하여 Red Hat Ceph Storage 클러스터를 배포하고 구성할 때 스토리지 클러스터의 모든 노드에서 암호가 없는 루트 액세스 권한을 가진 Ansible 사용자를 생성해야 합니다.

사전 요구 사항

  • 스토리지 클러스터의 모든 노드에 root 또는 sudo 액세스 권한이 있어야 합니다.

절차

  1. Ceph 노드에 root 사용자로 로그인합니다.

    ssh root@$HOST_NAME
    Copy to Clipboard Toggle word wrap
    replace
    • $HOST_NAME - Ceph 노드의 호스트 이름이 사용됩니다.

    예제

    # ssh root@mon01
    Copy to Clipboard Toggle word wrap

    메시지가 표시되면 루트 암호를 입력합니다.

  2. 새 Ansible 사용자를 생성합니다.

    adduser $USER_NAME
    Copy to Clipboard Toggle word wrap
    replace
    • $USER_NAME - Ansible 사용자의 새 사용자 이름을 지정합니다.

    예제

    # adduser admin
    Copy to Clipboard Toggle word wrap

    중요

    ceph 를 사용자 이름으로 사용하지 마십시오. ceph 사용자 이름은 Ceph 데몬용으로 예약되어 있습니다. 클러스터 전체의 균일한 사용자 이름은 사용 편의성을 향상시킬 수 있지만 침입자가 일반적으로 무차별 공격에 사용하기 때문에 명확한 사용자 이름을 사용하지 마십시오.

  3. 이 사용자에 대한 새 암호를 설정합니다.

    # passwd $USER_NAME
    Copy to Clipboard Toggle word wrap
    replace
    • $USER_NAME - Ansible 사용자의 새 사용자 이름을 지정합니다.

    예제

    # passwd admin
    Copy to Clipboard Toggle word wrap

    메시지가 표시되면 새 암호를 두 번 입력합니다.

  4. 새로 생성된 사용자에 대해 sudo 액세스를 설정합니다.

    cat << EOF >/etc/sudoers.d/$USER_NAME
    $USER_NAME ALL = (root) NOPASSWD:ALL
    EOF
    Copy to Clipboard Toggle word wrap
    replace
    • $USER_NAME - Ansible 사용자의 새 사용자 이름을 지정합니다.

    예제

    # cat << EOF >/etc/sudoers.d/admin
    admin ALL = (root) NOPASSWD:ALL
    EOF
    Copy to Clipboard Toggle word wrap

  5. 올바른 파일 권한을 새 파일에 할당합니다.

    chmod 0440 /etc/sudoers.d/$USER_NAME
    Copy to Clipboard Toggle word wrap
    replace
    • $USER_NAME - Ansible 사용자의 새 사용자 이름을 지정합니다.

    예제

    # chmod 0440 /etc/sudoers.d/admin
    Copy to Clipboard Toggle word wrap

추가 리소스

1.1.3. Ansible에 대해 암호 없는 SSH 활성화

Ansible 관리 노드에서 SSH 키 쌍을 생성하고, 스토리지 클러스터의 각 노드에 공개 키를 배포하여 Ansible이 암호를 확인하지 않고 노드에 액세스할 수 있도록 합니다.

사전 요구 사항
절차

Ansible 관리 노드 및 Ansible 사용자로 다음 단계를 수행합니다.

  1. SSH 키 쌍을 생성하고 기본 파일 이름을 수락하고 암호를 비워 둡니다.

    [user@admin ~]$ ssh-keygen
    Copy to Clipboard Toggle word wrap
  2. 스토리지 클러스터의 모든 노드에 공개 키를 복사합니다.

    ssh-copy-id $USER_NAME@$HOST_NAME
    Copy to Clipboard Toggle word wrap
    replace
    • $USER_NAME - Ansible 사용자의 새 사용자 이름을 지정합니다.
    • $HOST_NAME - Ceph 노드의 호스트 이름이 사용됩니다.

    예제

    [user@admin ~]$ ssh-copy-id admin@ceph-mon01
    Copy to Clipboard Toggle word wrap

  3. ~/.ssh/config 파일을 만들고 편집합니다.

    중요

    ~/.ssh/config 파일을 생성하고 편집하여 ansible-playbook 명령을 실행할 때마다 -u $USER_NAME 옵션을 지정할 필요가 없습니다.

    1. SSH 구성 파일을 생성합니다.

      [user@admin ~]$ touch ~/.ssh/config
      Copy to Clipboard Toggle word wrap
    2. 편집할 구성 파일을 엽니다. 스토리지 클러스터의 각 노드에 대한 HostnameUser 옵션을 설정합니다.

      Host node1
         Hostname $HOST_NAME
         User $USER_NAME
      Host node2
         Hostname $HOST_NAME
         User $USER_NAME
      ...
      Copy to Clipboard Toggle word wrap
      replace
      • $HOST_NAME - Ceph 노드의 호스트 이름이 사용됩니다.
      • $USER_NAME - Ansible 사용자의 새 사용자 이름을 지정합니다.

      예제

      Host node1
         Hostname monitor
         User admin
      Host node2
         Hostname osd
         User admin
      Host node3
         Hostname gateway
         User admin
      Copy to Clipboard Toggle word wrap

  4. ~/.ssh/config 파일에 대해 올바른 파일 권한을 설정합니다.

    [admin@admin ~]$ chmod 600 ~/.ssh/config
    Copy to Clipboard Toggle word wrap
추가 리소스
  • ssh_config(5) 매뉴얼 페이지
  • Red Hat Enterprise Linux 7용 시스템 관리자 가이드의 OpenSSH

1.1.4. Red Hat Ceph Storage 방화벽 설정

RHCS(Red Hat Ceph Storage)는 firewalld 서비스를 사용합니다.

Monitor 데몬은 Ceph 스토리지 클러스터 내 통신에 포트 6789 를 사용합니다.

각 Ceph OSD 노드에서 OSD 데몬은 6800-7300 범위의 여러 포트를 사용합니다.

  • 하나는 클라이언트와 통신하고 공용 네트워크를 통해 모니터링합니다.
  • 사용 가능한 경우 클러스터 네트워크를 통해 다른 OSD로 데이터를 전송하는 방법
  • 사용 가능한 경우 클러스터 네트워크에서 하트비트 패킷을 교환하는 방법

Ceph Manager(ceph-mgr) 데몬은 6800-7300 범위의 포트를 사용합니다. 동일한 노드에서 Ceph Monitor를 사용하여 ceph-mgr 데몬을 공동 배치하는 것이 좋습니다.

Ceph Metadata Server 노드(ceph-mds)는 6800-7300 범위의 포트를 사용합니다.

Ceph Object Gateway 노드는 기본적으로 포트 8080 을 사용하도록 Ansible에서 구성합니다. 그러나 기본 포트(예: 포트 80 )를 변경할 수 있습니다.

SSL/TLS 서비스를 사용하려면 포트 443 을 엽니다.

사전 요구 사항

  • 네트워크 하드웨어가 연결되어 있습니다.

절차

root 사용자로 다음 명령을 실행합니다.

  1. 모든 RHCS 노드에서 firewalld 서비스를 시작합니다. 부팅 시 실행되도록 활성화하고 실행 중인지 확인합니다.

    # systemctl enable firewalld
    # systemctl start firewalld
    # systemctl status firewalld
    Copy to Clipboard Toggle word wrap
  2. 모든 모니터 노드에서 공용 네트워크에서 포트 6789 를 엽니다.

    [root@monitor ~]# firewall-cmd --zone=public --add-port=6789/tcp
    [root@monitor ~]# firewall-cmd --zone=public --add-port=6789/tcp --permanent
    Copy to Clipboard Toggle word wrap

    소스 주소를 기반으로 액세스를 제한하려면 다음을 수행합니다.

    firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
    source address="IP_address/netmask_prefix" port protocol="tcp" \
    port="6789" accept"
    Copy to Clipboard Toggle word wrap
    firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
    source address="IP_address/netmask_prefix" port protocol="tcp" \
    port="6789" accept" --permanent
    Copy to Clipboard Toggle word wrap
    replace
    • Monitor 노드의 네트워크 주소가 있는 ip _address 입니다.
    • CIDR 표기법으로 넷마스크가 있는 넷마스크 _prefix.

    예제

    [root@monitor ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
    source address="192.168.0.11/24" port protocol="tcp" \
    port="6789" accept"
    Copy to Clipboard Toggle word wrap

    [root@monitor ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
    source address="192.168.0.11/24" port protocol="tcp" \
    port="6789" accept" --permanent
    Copy to Clipboard Toggle word wrap
  3. 모든 OSD 노드에서 공용 네트워크에서 포트 6800-7300 을 엽니다.

    [root@osd ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp
    [root@osd ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
    Copy to Clipboard Toggle word wrap

    별도의 클러스터 네트워크가 있는 경우 해당 영역에서 명령을 반복합니다.

  4. 모든 Ceph Manager(ceph-mgr) 노드(일반적으로 Monitor와 동일한 노드)에서 공용 네트워크에서 포트 6800-7300 을 엽니다.

    [root@monitor ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp
    [root@monitor ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
    Copy to Clipboard Toggle word wrap

    별도의 클러스터 네트워크가 있는 경우 해당 영역에서 명령을 반복합니다.

  5. 모든 Ceph 메타데이터 서버(ceph-mds) 노드에서 공용 네트워크에서 포트 6800 을 엽니다.

    [root@monitor ~]# firewall-cmd --zone=public --add-port=6800/tcp
    [root@monitor ~]# firewall-cmd --zone=public --add-port=6800/tcp --permanent
    Copy to Clipboard Toggle word wrap

    별도의 클러스터 네트워크가 있는 경우 해당 영역에서 명령을 반복합니다.

  6. 모든 Ceph Object Gateway 노드에서 공용 네트워크에서 관련 포트 또는 포트를 엽니다.

    1. 기본 Ansible 구성된 8080 포트를 엽니다.

      [root@gateway ~]# firewall-cmd --zone=public --add-port=8080/tcp
      [root@gateway ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
      Copy to Clipboard Toggle word wrap

      소스 주소를 기반으로 액세스를 제한하려면 다음을 수행합니다.

      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_address/netmask_prefix" port protocol="tcp" \
      port="8080" accept"
      Copy to Clipboard Toggle word wrap
      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_address/netmask_prefix" port protocol="tcp" \
      port="8080" accept" --permanent
      Copy to Clipboard Toggle word wrap
      replace
      • 오브젝트 게이트웨이 노드의 네트워크 주소가 있는 ip _address.
      • CIDR 표기법으로 넷마스크가 있는 넷마스크 _prefix.

      예제

      [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="192.168.0.31/24" port protocol="tcp" \
      port="8080" accept"
      Copy to Clipboard Toggle word wrap

      [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="192.168.0.31/24" port protocol="tcp" \
      port="8080" accept" --permanent
      Copy to Clipboard Toggle word wrap
    2. 선택 사항: Ansible을 사용하여 Ceph Object Gateway를 설치하고 Ansible에서 8080 에서 사용하도록 Ceph Object Gateway를 구성하는 기본 포트를 변경된 경우 포트 80 으로 이 포트를 엽니다.

      [root@gateway ~]# firewall-cmd --zone=public --add-port=80/tcp
      [root@gateway ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
      Copy to Clipboard Toggle word wrap

      소스 주소를 기반으로 액세스를 제한하려면 다음 명령을 실행합니다.

      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_address/netmask_prefix" port protocol="tcp" \
      port="80" accept"
      Copy to Clipboard Toggle word wrap
      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_address/netmask_prefix" port protocol="tcp" \
      port="80" accept" --permanent
      Copy to Clipboard Toggle word wrap
      replace
      • 오브젝트 게이트웨이 노드의 네트워크 주소가 있는 ip _address.
      • CIDR 표기법으로 넷마스크가 있는 넷마스크 _prefix.

      예제

      [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="192.168.0.31/24" port protocol="tcp" \
      port="80" accept"
      Copy to Clipboard Toggle word wrap

      [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="192.168.0.31/24" port protocol="tcp" \
      port="80" accept" --permanent
      Copy to Clipboard Toggle word wrap
    3. 선택 사항: SSL/TLS를 사용하려면 포트 443 을 엽니다.

      [root@gateway ~]# firewall-cmd --zone=public --add-port=443/tcp
      [root@gateway ~]# firewall-cmd --zone=public --add-port=443/tcp --permanent
      Copy to Clipboard Toggle word wrap

      소스 주소를 기반으로 액세스를 제한하려면 다음 명령을 실행합니다.

      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_address/netmask_prefix" port protocol="tcp" \
      port="443" accept"
      Copy to Clipboard Toggle word wrap
      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_address/netmask_prefix" port protocol="tcp" \
      port="443" accept" --permanent
      Copy to Clipboard Toggle word wrap
      replace
      • 오브젝트 게이트웨이 노드의 네트워크 주소가 있는 ip _address.
      • CIDR 표기법으로 넷마스크가 있는 넷마스크 _prefix.

      예제

      [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="192.168.0.31/24" port protocol="tcp" \
      port="443" accept"
      [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="192.168.0.31/24" port protocol="tcp" \
      port="443" accept" --permanent
      Copy to Clipboard Toggle word wrap

추가 리소스

1.1.5. HTTP 프록시 사용

Ceph 노드가 HTTP/HTTPS 프록시 뒤에 있는 경우 레지스트리의 이미지에 액세스하도록 docker를 구성해야 합니다. HTTP/HTTPS 프록시를 사용하여 Docker에 대한 액세스 권한을 구성하려면 다음 절차를 수행하십시오.

사전 요구 사항
  • 실행 중인 HTTP/HTTPS 프록시
절차
  1. root 로서 docker 서비스에 대한 systemd 디렉터리를 생성합니다.

    # mkdir /etc/systemd/system/docker.service.d/
    Copy to Clipboard Toggle word wrap
  2. 루트 로서 HTTP/HTTPS 구성 파일을 만듭니다.

    1. HTTP의 경우 /etc/systemd/system/docker.service.d/http-proxy.conf 파일을 생성하고 파일에 다음 행을 추가합니다.

      [Service]
      Environment="HTTP_PROXY=http://proxy.example.com:80/"
      Copy to Clipboard Toggle word wrap
    2. HTTPS의 경우 /etc/systemd/system/docker.service.d/https-proxy.conf 파일을 생성하고 파일에 다음 행을 추가합니다.

      [Service]
      Environment="HTTPS_PROXY=https://proxy.example.com:443/"
      Copy to Clipboard Toggle word wrap
  3. root 로서 ceph-ansible 플레이북을 실행하기 전에 HTTP/HTTPS 구성 파일을 스토리지 클러스터의 모든 Ceph 노드에 복사합니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat