3.2. 오브젝트 스토리지 서비스 관리

다음 절차에서는 오브젝트 스토리지 서비스를 사용자 지정하는 방법을 설명합니다.

3.2.1. fast-post 구성

기본적으로 오브젝트 스토리지 서비스는 메타데이터의 일부가 변경될 때마다 오브젝트 전체를 복사합니다. fast-post 기능을 사용하여 이 문제를 방지할 수 있습니다. fast-post 기능은 여러 대형 오브젝트의 콘텐츠 유형을 변경할 때 시간을 절약합니다.

fast-post 기능을 활성화하려면 다음을 수행하여 Object Storage 프록시 서비스에서 object_post_as_copy 옵션을 비활성화합니다.

  1. swift_params.yaml 편집 :

    cat > swift_params.yaml << EOF
    parameter_defaults:
        ExtraConfig:
          swift::proxy::copy::object_post_as_copy: False
    EOF
  2. 오버클라우드를 배포하거나 업데이트할 때 매개변수 파일을 포함합니다.

    openstack overcloud deploy [... previous args ...] -e swift_params.yaml

3.2.2. 대기 중인 암호화 활성화

기본적으로 오브젝트 스토리지에 업로드된 오브젝트는 암호화되지 않은 상태로 유지됩니다. 이로 인해 파일 시스템에서 직접 개체에 액세스할 수 있습니다. 디스크가 삭제되기 전에 적절히 지워지지 않은 경우 보안 위험이 발생할 수 있습니다.

OpenStack Key Manager(barbican)를 사용하여 at-rest swift 오브젝트를 암호화할 수 있습니다. 자세한 내용은 Encrypt at-rest swift objects를 참조하십시오.

3.2.3. 독립 실행형 오브젝트 스토리지 클러스터 배포

구성 가능 역할 개념을 사용하여 최소 추가 서비스(예: Keystone, HAProxy)와 함께 독립형 오브젝트 스토리지(openstack-swift) 클러스터를 배포할 수 있습니다. roles_data 파일 생성 섹션에는 역할에 대한 정보가 있습니다.

3.2.3.1. roles_data.yaml 파일 생성

  1. /usr/share/openstack-tripleo-heat-templates 에서 roles_data.yaml 을 복사합니다.
  2. 새 파일을 편집합니다.
  3. 필요하지 않은 컨트롤러 역할(예: Aodh*, Ceilometer*, Ceph*, Cinder*, Glance*, Heat*, Ironic*, Manila*, Mistral*, Nova*, Octavia*, Swift*)을 제거합니다.
  4. roles_data.yaml 내에서 ObjectStorage 역할을 찾습니다.
  5. 동일한 파일 내의 새 역할에 이 역할을 복사하고 이름을 ObjectProxy 로 지정합니다.
  6. 이 역할에서 SwiftStorage 를 SwiftProxy 로 바꿉니다.

아래 roles_data.yaml 예제는 샘플 역할을 보여줍니다.

- name: Controller
  description: |
	Controller role that has all the controller services loaded and handles
	Database, Messaging and Network functions.
  CountDefault: 1
  tags:
	- primary
	- controller
  networks:
	- External
	- InternalApi
	- Storage
	- StorageMgmt
	- Tenant
  HostnameFormatDefault: '%stackname%-controller-%index%'
  ServicesDefault:
	- OS::TripleO::Services::AuditD
	- OS::TripleO::Services::CACerts
	- OS::TripleO::Services::CertmongerUser
	- OS::TripleO::Services::Clustercheck
	- OS::TripleO::Services::Docker
	- OS::TripleO::Services::Ec2Api
	- OS::TripleO::Services::Etcd
	- OS::TripleO::Services::HAproxy
	- OS::TripleO::Services::Keepalived
	- OS::TripleO::Services::Kernel
	- OS::TripleO::Services::Keystone
	- OS::TripleO::Services::Memcached
	- OS::TripleO::Services::MySQL
	- OS::TripleO::Services::MySQLClient
	- OS::TripleO::Services::Ntp
	- OS::TripleO::Services::Pacemaker
	- OS::TripleO::Services::RabbitMQ
	- OS::TripleO::Services::Securetty
	- OS::TripleO::Services::Snmp
	- OS::TripleO::Services::Sshd
	- OS::TripleO::Services::Timezone
	- OS::TripleO::Services::TripleoFirewall
	- OS::TripleO::Services::TripleoPackages
	- OS::TripleO::Services::Vpp

- name: ObjectStorage
  CountDefault: 1
  description: |
	Swift Object Storage node role
  networks:
	- InternalApi
	- Storage
	- StorageMgmt
  disable_upgrade_deployment: True
  ServicesDefault:
	- OS::TripleO::Services::AuditD
	- OS::TripleO::Services::CACerts
	- OS::TripleO::Services::CertmongerUser
	- OS::TripleO::Services::Collectd
	- OS::TripleO::Services::Docker
	- OS::TripleO::Services::FluentdClient
	- OS::TripleO::Services::Kernel
	- OS::TripleO::Services::MySQLClient
	- OS::TripleO::Services::Ntp
	- OS::TripleO::Services::Securetty
	- OS::TripleO::Services::SensuClient
	- OS::TripleO::Services::Snmp
	- OS::TripleO::Services::Sshd
	- OS::TripleO::Services::SwiftRingBuilder
	- OS::TripleO::Services::SwiftStorage
	- OS::TripleO::Services::Timezone
	- OS::TripleO::Services::TripleoFirewall
	- OS::TripleO::Services::TripleoPackages

- name: ObjectProxy
  CountDefault: 1
  description: |
	Swift Object proxy node role
  networks:
	- InternalApi
	- Storage
	- StorageMgmt
  disable_upgrade_deployment: True
  ServicesDefault:
	- OS::TripleO::Services::AuditD
	- OS::TripleO::Services::CACerts
	- OS::TripleO::Services::CertmongerUser
	- OS::TripleO::Services::Collectd
	- OS::TripleO::Services::Docker
	- OS::TripleO::Services::FluentdClient
	- OS::TripleO::Services::Kernel
	- OS::TripleO::Services::MySQLClient
	- OS::TripleO::Services::Ntp
	- OS::TripleO::Services::Securetty
	- OS::TripleO::Services::SensuClient
	- OS::TripleO::Services::Snmp
	- OS::TripleO::Services::Sshd
	- OS::TripleO::Services::SwiftRingBuilder
	- OS::TripleO::Services::SwiftProxy
	- OS::TripleO::Services::Timezone
	- OS::TripleO::Services::TripleoFirewall
	- OS::TripleO::Services::TripleoPackages

3.2.3.2. 새 역할 배포

새 역할을 포함하여 일반 openstack deploy 명령을 사용하여 오버클라우드를 배포합니다.

openstack overcloud deploy --templates -r roles_data.yaml -e [...]

3.2.4. 외부 SAN 디스크 사용

기본적으로 Red Hat OpenStack Platform director가 Object Storage 서비스(swift)를 배포할 때 오브젝트 스토리지는 개별 로컬 디스크를 사용하도록 구성 및 최적화됩니다. 이 구성을 사용하면 워크로드가 모든 디스크에 분산되어 노드 장애 또는 기타 시스템 문제 중 성능 영향을 최소화할 수 있습니다.

비슷한 성능 영향을 미치는 이벤트에서는 단일 SAN을 사용하는 환경에서 모든 LUN에서 성능이 저하될 수 있습니다. 오브젝트 스토리지 서비스는 SAN 디스크를 사용하는 환경에서 성능 문제를 완화할 수 없습니다.

따라서 성능 및 디스크 공간 요구 사항을 충족하는 대신 Object Storage에 추가 로컬 디스크를 사용하는 것이 좋습니다. 자세한 내용은 Object Storage in the Deployment Recommendations for Specific Red Hat OpenStack Platform Services 가이드를 참조하십시오.

오브젝트 스토리지에 외부 SAN을 사용하려면 사례별로 평가해야 합니다. 자세한 내용은 Red Hat 지원팀에 문의하십시오.

중요

오브젝트 스토리지에 외부 SAN을 사용하도록 선택하는 경우 다음 조건을 유념하십시오.

  • 오브젝트 스토리지 서비스는 기본적으로 원격 분석 데이터 및 이미지 서비스(glance) 이미지를 저장합니다. Glance 이미지에는 더 많은 디스크 공간이 필요하지만 성능 측면에서 Glance 이미지를 저장하면 원격 분석 데이터를 저장하는 것보다 성능이 저하됩니다. 원격 분석 데이터를 저장하고 처리하려면 성능이 향상되어야 합니다. Red Hat은 오브젝트 스토리지에 외부 SAN을 사용함으로써 발생하는 성능 관련 문제를 지원하지 않습니다.
  • Red Hat은 핵심 Object Storage 서비스 이외의 문제에 대해서는 지원하지 않습니다. 고가용성 및 성능을 지원하려면 스토리지 벤더에 문의하십시오.
  • Red Hat은 오브젝트 스토리지 서비스를 통해 SAN 솔루션을 테스트하지 않습니다. 호환성, 지침 및 타사 제품에 대한 지원에 대한 자세한 내용은 스토리지 벤더에 문의하십시오.
  • 배포 시 성능 요구 사항을 평가하고 테스트할 것을 권장합니다. SAN 배포가 테스트, 지원 및 성능 요구 사항을 충족하는지 확인하려면 스토리지 벤더에 문의하십시오.

3.2.4.1. SAN 디스크 배포 구성

이 템플릿은 오브젝트 스토리지에 두 개의 장치(/dev/mapper/vdb/dev/mapper/vdc)를 사용하는 방법의 예입니다.

parameter_defaults:
  SwiftMountCheck: true
  SwiftUseLocalDir: false
  SwiftRawDisks: {"vdb": {"base_dir":"/dev/mapper/"}, "vdc": {"base_dir":"/dev/mapper/"}}