6.2. NetApp Storage


NetApp은 OpenStack 스토리지 구성 요소와의 통합을 위한 여러 솔루션을 제공합니다. 이 예에서는 NetApp Storage가 Cinder와 통합되어 블록 스토리지에 대한 백엔드를 제공하는 방법을 보여줍니다.

Cinder용 드라이버는 프로젝트 자체에 포함되어 있으며 https://github.com/openstack/cinder 의 GitHub에서 공개적으로 사용할 수 있습니다. NetApp Storage용 드라이버는 리포지토리의 cinder/volume/drivers/netapp/ 디렉터리에 있습니다. 즉, 드라이버는 Red Hat OpenStack Platform에 자동으로 포함됩니다.

NetApp의 구성은 Overcloud 이미지에도 포함된 cinder(puppet-cinder)용 Puppet 모듈에 포함되어 있습니다. 구성이 포함된 Puppet 모듈의 매니페스트는 manifests/backend/netapp.pp 에 있습니다. 이 매니페스트는 cinder_config 라이브러리를 사용하여 Cinder 구성 파일에 netapp 설정을 추가합니다.

cinder_config {
  "${name}/nfs_mount_options":            value => $nfs_mount_options;
  "${name}/volume_backend_name":          value => $volume_backend_name;
  "${name}/volume_driver":                value => 'cinder.volume.drivers.netapp.common.NetAppDriver';
  "${name}/netapp_login":                 value => $netapp_login;
  "${name}/netapp_password":              value => $netapp_password, secret => true;
  "${name}/netapp_server_hostname":       value => $netapp_server_hostname;
  "${name}/netapp_server_port":           value => $netapp_server_port;
  "${name}/netapp_size_multiplier":       value => $netapp_size_multiplier;
  "${name}/netapp_storage_family":        value => $netapp_storage_family;
  "${name}/netapp_storage_protocol":      value => $netapp_storage_protocol;
  "${name}/netapp_transport_type":        value => $netapp_transport_type;
  "${name}/netapp_vfiler":                value => $netapp_vfiler;
  "${name}/netapp_volume_list":           value => $netapp_volume_list;
  "${name}/netapp_vserver":               value => $netapp_vserver;
  "${name}/netapp_partner_backend_name":  value => $netapp_partner_backend_name;
  "${name}/expiry_thres_minutes":         value => $expiry_thres_minutes;
  "${name}/thres_avl_size_perc_start":    value => $thres_avl_size_perc_start;
  "${name}/thres_avl_size_perc_stop":     value => $thres_avl_size_perc_stop;
  "${name}/nfs_shares_config":            value => $nfs_shares_config;
  "${name}/netapp_copyoffload_tool_path": value => $netapp_copyoffload_tool_path;
  "${name}/netapp_controller_ips":        value => $netapp_controller_ips;
  "${name}/netapp_sa_password":           value => $netapp_sa_password, secret => true;
  "${name}/netapp_storage_pools":         value => $netapp_storage_pools;
  "${name}/netapp_eseries_host_type":     value => $netapp_eseries_host_type;
  "${name}/netapp_webservice_path":       value => $netapp_webservice_path;
}

director의 Heat 템플릿 컬렉션에는 NetApp Storage 백엔드의 Hiera 데이터를 구성하는 환경 파일과 등록된 템플릿이 포함되어 있습니다. 환경 파일은 environments/cinder-netapp-config.yaml 에 있으며 다음 기본 콘텐츠가 포함되어 있습니다.

resource_registry:
  OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml

parameter_defaults:
  CinderEnableNetappBackend: true
  CinderNetappBackendName: 'tripleo_netapp'
  CinderNetappLogin: ''
  CinderNetappPassword: ''
  CinderNetappServerHostname: ''
  CinderNetappServerPort: '80'
  CinderNetappSizeMultiplier: '1.2'
  CinderNetappStorageFamily: 'ontap_cluster'
  CinderNetappStorageProtocol: 'nfs'
  CinderNetappTransportType: 'http'
  CinderNetappVfiler: ''
  CinderNetappVolumeList: ''
  CinderNetappVserver: ''
  CinderNetappPartnerBackendName: ''
  CinderNetappNfsShares: ''
  CinderNetappNfsSharesConfig: '/etc/cinder/shares.conf'
  CinderNetappNfsMountOptions: ''
  CinderNetappCopyOffloadToolPath: ''
  CinderNetappControllerIps: ''
  CinderNetappSaPassword: ''
  CinderNetappStoragePools: ''
  CinderNetappEseriesHostType: 'linux_dm_mp'
  CinderNetappWebservicePath: '/devmgr/v2'

resource_registry 는 컨트롤러 노드(OS::TripleO::ControllerExtraConfigPre)에 대한 사전 구성 리소스(OS::TripleO::ControllerExtraConfigPre )를 설정하여 puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml 을 사전 구성에 사용할 템플릿으로 사용합니다. parameter_defaults 섹션에는 이러한 리소스에 전달할 몇 가지 매개변수가 포함되어 있습니다.

배포에 이 환경 파일을 포함하면 구성 중에 Puppet에서 Cinder Puppet 모듈의 매개 변수에 사용하는 Hiera 데이터가 정의됩니다.

Puppet 구성의 실제 애플리케이션 시작은 CinderEnableNetappBackend 매개변수에 따라 다릅니다. Heat 템플릿 컬렉션에는 컨트롤러 노드 구성을 위한 코어 Puppet 매니페스트 세트가 포함되어 있습니다. 이러한 파일에는 cinder_enable_netapp_backend Hiera 데이터가 설정되어 있는지 감지하는 논리가 포함되어 있습니다. Hiera 데이터는 사전 구성의 CinderEnableNetappBackend 매개변수를 사용하여 설정됩니다. 배포에 cinder-netapp-config.yaml 을 포함하고 CinderEnableNetappBackend: true 를 남겨 두는 것은 컨트롤러 Puppet 매니페스트에 cinder::backend::netapp 클래스가 포함되어 환경 파일에서 Hiera 데이터 값을 전달한다는 의미입니다.

  if hiera('cinder_enable_netapp_backend', false) {
    $cinder_netapp_backend = hiera('cinder::backend::netapp::title')

    cinder_config {
      "${cinder_netapp_backend}/host": value => 'hostgroup';
    }

    if hiera('cinder::backend::netapp::nfs_shares', undef) {
      $cinder_netapp_nfs_shares = split(hiera('cinder::backend::netapp::nfs_shares', undef), ',')
    }

    cinder::backend::netapp { $cinder_netapp_backend :
      netapp_login                 => hiera('cinder::backend::netapp::netapp_login', undef),
      netapp_password              => hiera('cinder::backend::netapp::netapp_password', undef),
      netapp_server_hostname       => hiera('cinder::backend::netapp::netapp_server_hostname', undef),
      netapp_server_port           => hiera('cinder::backend::netapp::netapp_server_port', undef),
      netapp_size_multiplier       => hiera('cinder::backend::netapp::netapp_size_multiplier', undef),
      netapp_storage_family        => hiera('cinder::backend::netapp::netapp_storage_family', undef),
      netapp_storage_protocol      => hiera('cinder::backend::netapp::netapp_storage_protocol', undef),
      netapp_transport_type        => hiera('cinder::backend::netapp::netapp_transport_type', undef),
      netapp_vfiler                => hiera('cinder::backend::netapp::netapp_vfiler', undef),
      netapp_volume_list           => hiera('cinder::backend::netapp::netapp_volume_list', undef),
      netapp_vserver               => hiera('cinder::backend::netapp::netapp_vserver', undef),
      netapp_partner_backend_name  => hiera('cinder::backend::netapp::netapp_partner_backend_name', undef),
      nfs_shares                   => $cinder_netapp_nfs_shares,
      nfs_shares_config            => hiera('cinder::backend::netapp::nfs_shares_config', undef),
      netapp_copyoffload_tool_path => hiera('cinder::backend::netapp::netapp_copyoffload_tool_path', undef),
      netapp_controller_ips        => hiera('cinder::backend::netapp::netapp_controller_ips', undef),
      netapp_sa_password           => hiera('cinder::backend::netapp::netapp_sa_password', undef),
      netapp_storage_pools         => hiera('cinder::backend::netapp::netapp_storage_pools', undef),
      netapp_eseries_host_type     => hiera('cinder::backend::netapp::netapp_eseries_host_type', undef),
      netapp_webservice_path       => hiera('cinder::backend::netapp::netapp_webservice_path', undef),
    }
  }

즉, NetApp Storage를 사용하도록 Overcloud를 구성하려면 몇 가지 단계만 필요합니다.

  1. 환경/cinder-netapp-config.yaml 파일을 로컬 위치에 복사하여 편집할 수 있습니다.

    $ cp /usr/share/openstack-tripleo-heat-templates/environments/cinder-netapp-config.yaml ~/templates/.
  2. cinder-netapp-config.yaml 파일을 편집합니다.

    • cinder-netapp.yaml을 참조하는 절대 경로를 사용하도록 resource_registery 섹션을 수정합니다.
    • NetApp 매개 변수를 추가하려면 parameter_defaults 섹션을 수정합니다. 참조하려면 cinder-netapp.yaml 을 참조하십시오.

      예를 들면 다음과 같습니다.

      resource_registry:
        OS::TripleO::ControllerExtraConfigPre: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml
      
      parameter_defaults:
        CinderEnableNetappBackend: true
        CinderNetappBackendName: 'tripleo_netapp'
        CinderNetappLogin: 'admin'
        CinderNetappPassword: 'p@55w0rd!'
        CinderNetappServerHostname: 'netapp.example.com'
        CinderNetappServerPort: '80'
        CinderNetappSizeMultiplier: '1.2'
        CinderNetappStorageFamily: 'ontap_cluster'
        CinderNetappStorageProtocol: 'nfs'
        CinderNetappTransportType: 'http'
        CinderNetappNfsShares: '192.168.1.200:/storage1,192.168.1.200:/storage2'
        CinderNetappNfsSharesConfig: '/etc/cinder/shares.conf'
        CinderNetappEseriesHostType: 'linux_dm_mp'
        CinderNetappWebservicePath: '/devmgr/v2'

      CinderEnableNetappBackendtrue 로 설정된 상태로 둡니다.

  3. 배포에 cinder-netapp-config.yaml 파일을 포함합니다.

    $ openstack overcloud deploy --templates -e ~/templates/cinder-netapp-config.yaml

이렇게 하면 NetApp Storage 구성을 Overcloud Hiera 데이터의 일부로 정의합니다. 그런 다음 Overcloud는 이 Hieradata를 사용하여 코어 구성 중에 Cinder의 NetApp 백엔드를 구성합니다.

이 예에서는 director가 인증된 벤더의 스토리지 구성 요소를 Overcloud의 Cinder 서비스와 통합하는 방법을 보여줍니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.