스토리지 노드 설치와 구성

스토리지 노드 설치와 구성

이 섹션에서는 블록 스토리지 서비스를 위한 스토리지 노드를 설치와 구성하는 방법을 설명합니다. 이 구성에서는 간략하게 한 개의 스토리지 노드에 비어있는 로컬 블록 스토리지 장치를 가리키는 것으로 합니다. 이 안내에서는 /dev/sdb 를 사용하지만, 특정 환경에서는 다른 값으로 대체할 수 있습니다.

해당 서비스는 LVM 드라이버를 사용하는 장치 위에 논리 볼륨을 프로비저닝하고 iSCSI 전송을 통해 인스턴스에 제공합니다. 해당 안내에 약간의 수정을 거쳐 대상 환경에 스토리지 노드를 추가하여 수평적 스케일링을 할 수 있습니다.

선행조건

블록 스토리지 서비스를 스토리지 노드에 설치 구성하기 전에 스토리지 장치를 준비해야 합니다.

주석

해당 단계를 스토리지 노드에서 수행합니다.

  1. 지원 유틸리티 패키지을 설치합니다:

    • LVM 패키지를 설치합니다:

      # zypper install lvm2
      
    • (옵션) QCOW2와 VMDK와 같은 non-raw 이미지 유형을 사용하고자 하는 경우에는 QEMU 패키지를 설치합니다:

      # zypper install qemu
      

    주석

    몇몇 배포판은 디폴트로 LVM을 포함합니다.

  2. LVM 물리 볼륨 /dev/sdb 를 생성합니다:

    # pvcreate /dev/sdb
    Physical volume "/dev/sdb" successfully created
    
  3. LVM 볼륨 그룹 cinder-volumes 를 생성합니다:

    # vgcreate cinder-volumes /dev/sdb
    Volume group "cinder-volumes" successfully created
    

    블록 스토리지 서비스는 볼륨 그룹 내에 논리 볼륨을 생성합니다.

  4. 인스턴스에서만 블록 스토리지 볼륨에 접근할 수 있습니다. 그러나 OS에서 볼륨에 연결된 장치를 관리합니다. 디폴트로 LVM 볼륨 검색 도구는 볼륨이 포함된 블록 스토리지 장치에 대해 /dev 디렉토리를 검색합니다. 프로젝트에서 LVM을 볼륨으로 사용하는 경우엔 검색 도구는 해당 볼륨을 감지하고 캐싱을 하려고 시도하는데, 이는 OS와 프로젝트 볼륨에 다양한 문제를 일으킬 수 있습니다. LVM cinder-volume 볼륨 그룹을 포함하는 장치만 검색하도록 재구성해야 합니다. /etc/lvm/lvm.conf 파일을 편집하여 다음 작업을 완료합니다:

    • devices 섹션에서 /dev/sdb 장치를 허용하고 다른 장치들은 거부하는 필터를 추가합니다:

      devices {
      ...
      filter = [ "a/sdb/", "r/.*/"]
      

      필터 배열 내 각 항목은 accept 에 대한 a 또는 reject 에 대한 r 로 시작하고 장치 이름에 대한 정규 표현식을 포합합니다. 배열은 그 외 다른 장치를 거부하기 위해 r/.*/ 로 끝나야 합니다. vgs -vvvv 명령어를 사용하여 필터를 테스트할 수 있습니다.

      경고

      스토리지 노드에서 LVM을 운영체제 디스크로 사용하게되면 필터에 연결된 장치를 추가해야 합니다. 예를 들어 /dev/sda 장치에 운영체제를 포함하고 있는 경우:

      filter = [ "a/sda/", "a/sdb/", "r/.*/"]
      

      비슷하게 compute 노드에서 LVM을 운영체제 디스크로 사용하는 경우엔 해당 노드의 /etc/lvm/lvm.conf 파일 내 필터를 수정하여 운영체제 디스크만을 포함하도록 해야 합니다. 예를 들어 /dev/sda 장치에 운영체제를 포함하고 있는 경우:

      filter = [ "a/sda/", "r/.*/"]
      

구성요소 설치와 구성

  1. 패키지를 설치하십시오:

    # zypper install openstack-cinder-volume tgt python-PyMySQL
    
  1. /etc/cinder/cinder.conf 파일을 편집하여 다음 작업을 완료합니다:

    • [database] 섹션에서 데이터베이스 액세스를 구성합니다:

      [database]
      ...
      connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
      

      CINDER_DBPASS 를 블록 스토리지 데이터베이스 암호로 변경합니다.

    • [DEFAULT][oslo_messaging_rabbit] 섹션에서 RabbitMQ 메시지 큐 접근을 구성합니다:

      [DEFAULT]
      ...
      rpc_backend = rabbit
      
      [oslo_messaging_rabbit]
      ...
      rabbit_host = controller
      rabbit_userid = openstack
      rabbit_password = RABBIT_PASS
      

      RABBIT_PASSRabbitMQ 에서 openstack 계정에 대해 선택한 암호로 변경합니다.

    • [DEFAULT][keystone_authtoken] 섹션에서 Identity 서비스 접근을 구성합니다:

      [DEFAULT]
      ...
      auth_strategy = keystone
      
      [keystone_authtoken]
      ...
      auth_uri = http://controller:5000
      auth_url = http://controller:35357
      auth_plugin = password
      project_domain_id = default
      user_domain_id = default
      project_name = service
      username = cinder
      password = CINDER_PASS
      

      CINDER_PASS 를 Identity 서비스에서 cinder 사용자 암호로 변경합니다.

      주석

      [keystone_authtoken] 섹션 내 다른 옵션들은 주석 처리나 제거합니다.

    • [DEFAULT] 섹션에서 my_ip 옵션을 구성합니다:

      [DEFAULT]
      ...
      my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
      

      MANAGEMENT_INTERFACE_IP_ADDRESS 를 스토리지 노드 관리 네트워크 인터페이스에 대한 IP 주소로 변경합니다. example architecture 에서의 첫 노드는 보통 10.0.0.41 입니다.

    • [lvm] 섹션에서 LVM 드라이버와 함께 LVM 백엔드, cinder-volumes 볼륨 그룹, iSCSI 프로토콜, 적절한 iSCSI 서비스를 구성합니다:

      [lvm]
      ...
      volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
      volume_group = cinder-volumes
      iscsi_protocol = iscsi
      iscsi_helper = tgtadm
      
    • [DEFAULT] 섹션에 LVM 백엔드를 활성화합니다:

      [DEFAULT]
      ...
      enabled_backends = lvm
      

      주석

      백엔드 이름은 가상으로 되어 있습니다. 하나의 예로 이 가이드에서는 드라이버에 대한 이름을 백엔드 이름으로 사용합니다.

    • [DEFAULT] 섹션에서 이미지 서비스의 위치를 구성합니다:

      [DEFAULT]
      ...
      glance_host = controller
      
    • [oslo_concurrency] 섹션에서 lock 경로를 구성합니다:

      [oslo_concurrency]
      ...
      lock_path = /var/lib/cinder/tmp
      
    • (옵션) 트러블 슈팅을 지원하기 위해, [DEFAULT] 섹션에서 verbose 로깅을 활성화합니다:

      [DEFAULT]
      ...
      verbose = True
      

설치 마무리

  • 블록 스토리지 볼륨 서비스와 그와 관계된 서비스들을 시작하고 시스템 부팅시 자동적으로 시작하도록 설정합니다:

    # systemctl enable openstack-cinder-volume.service tgtd.service
    # systemctl start openstack-cinder-volume.service tgtd.service
    
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.