13.2. 실시간 컴퓨팅 역할 배포

RHOSP(Red Hat OpenStack Platform) director는 실시간 컴퓨팅 노드를 배포하는 데 사용할 수 있는 ComputeRealTime 역할에 대한 템플릿을 제공합니다. 실시간 컴퓨팅 노드를 지정하려면 추가 단계를 수행해야 합니다.

절차

  1. /usr/share/openstack-tripleo-heat-templates/environments/compute-real-time-example.yaml 파일을 기반으로 ComputeRealTime 역할에 대한 매개 변수를 설정하는 compute-real-time.yaml 환경 파일을 생성합니다.

    cp /usr/share/openstack-tripleo-heat-templates/environments/compute-real-time-example.yaml /home/stack/templates/compute-real-time.yaml

    파일에는 다음 매개변수의 값이 포함되어야 합니다.

    • IsolCpusListNovaComputeCpuDedicatedSet: 실시간 워크로드를 위해 예약할 격리된 CPU 코어 및 가상 CPU 고정 목록입니다. 이 값은 실시간 컴퓨팅 노드의 CPU 하드웨어에 따라 다릅니다.
    • NovaComputeCpuSharedSet: 에뮬레이터 스레드를 예약할 호스트 CPU 목록입니다.
    • KernelArgs: 실시간 컴퓨팅 노드의 커널에 전달할 인수입니다. 예를 들어 default_hugepagesz=1G hugepagesz=1G hugepages=<number_of_1G_pages_to_reserve> hugepagesz=2M hugepages=<number_of_2M_pages> 를 사용하여 여러 크기의 대규모 페이지가 있는 게스트의 메모리 요구 사항을 정의할 수 있습니다. 이 예에서 기본 크기는 1GB이지만 2M 대규모 페이지를 예약할 수도 있습니다.
    • NovaComputeDisableIrqBalance: tuned 서비스가 irqbalance 서비스가 아닌 실시간 배포에 대한 IRQ 분산을 관리하므로 이 매개변수가 Real-time Compute 노드에 대해 true 로 설정되어 있는지 확인합니다.
  2. ComputeRealTime 역할을 역할 데이터 파일에 추가하고 파일을 다시 생성합니다. 예를 들면 다음과 같습니다.

    $ openstack overcloud roles generate -o /home/stack/templates/rt_roles_data.yaml Controller Compute ComputeRealTime

    이 명령은 다음 예제와 유사한 내용을 사용하여 ComputeRealTime 역할을 생성하고 ImageDefault 옵션도 overcloud-realtime-compute 로 설정합니다.

    - name: ComputeRealTime
      description: |
        Compute role that is optimized for real-time behaviour. When using this role
        it is mandatory that an overcloud-realtime-compute image is available and
        the role specific parameters IsolCpusList, NovaComputeCpuDedicatedSet and
        NovaComputeCpuSharedSet are set accordingly to the hardware of the real-time compute nodes.
      CountDefault: 1
      networks:
        InternalApi:
          subnet: internal_api_subnet
        Tenant:
          subnet: tenant_subnet
        Storage:
          subnet: storage_subnet
      HostnameFormatDefault: '%stackname%-computerealtime-%index%'
      ImageDefault: overcloud-realtime-compute
      RoleParametersDefault:
        TunedProfileName: "realtime-virtual-host"
        KernelArgs: ""      # these must be set in an environment file
        IsolCpusList: ""    # or similar according to the hardware
        NovaComputeCpuDedicatedSet: ""  # of real-time nodes
        NovaComputeCpuSharedSet: ""     #
        NovaLibvirtMemStatsPeriodSeconds: 0
      ServicesDefault:
        - OS::TripleO::Services::Aide
        - OS::TripleO::Services::AuditD
        - OS::TripleO::Services::BootParams
        - OS::TripleO::Services::CACerts
        - OS::TripleO::Services::CephClient
        - OS::TripleO::Services::CephExternal
        - OS::TripleO::Services::CertmongerUser
        - OS::TripleO::Services::Collectd
        - OS::TripleO::Services::ComputeCeilometerAgent
        - OS::TripleO::Services::ComputeNeutronCorePlugin
        - OS::TripleO::Services::ComputeNeutronL3Agent
        - OS::TripleO::Services::ComputeNeutronMetadataAgent
        - OS::TripleO::Services::ComputeNeutronOvsAgent
        - OS::TripleO::Services::Docker
        - OS::TripleO::Services::Fluentd
        - OS::TripleO::Services::IpaClient
        - OS::TripleO::Services::Ipsec
        - OS::TripleO::Services::Iscsid
        - OS::TripleO::Services::Kernel
        - OS::TripleO::Services::LoginDefs
        - OS::TripleO::Services::MetricsQdr
        - OS::TripleO::Services::MySQLClient
        - OS::TripleO::Services::NeutronBgpVpnBagpipe
        - OS::TripleO::Services::NeutronLinuxbridgeAgent
        - OS::TripleO::Services::NeutronVppAgent
        - OS::TripleO::Services::NovaCompute
        - OS::TripleO::Services::NovaLibvirt
        - OS::TripleO::Services::NovaLibvirtGuests
        - OS::TripleO::Services::NovaMigrationTarget
        - OS::TripleO::Services::ContainersLogrotateCrond
        - OS::TripleO::Services::OpenDaylightOvs
        - OS::TripleO::Services::Podman
        - OS::TripleO::Services::Rhsm
        - OS::TripleO::Services::RsyslogSidecar
        - OS::TripleO::Services::Securetty
        - OS::TripleO::Services::SensuClient
        - OS::TripleO::Services::SkydiveAgent
        - OS::TripleO::Services::Snmp
        - OS::TripleO::Services::Sshd
        - OS::TripleO::Services::Timesync
        - OS::TripleO::Services::Timezone
        - OS::TripleO::Services::TripleoFirewall
        - OS::TripleO::Services::TripleoPackages
        - OS::TripleO::Services::Vpp
        - OS::TripleO::Services::OVNController
        - OS::TripleO::Services::OVNMetadataAgent

    사용자 지정 역할 및 roles-data.yaml 에 대한 일반 정보는 역할을 참조하십시오.

  3. compute-realtime 플레이버를 만들어 실시간 워크로드를 지정하려는 노드에 태그를 지정합니다. 예를 들면 다음과 같습니다.

    $ source ~/stackrc
    $ openstack flavor create --id auto --ram 6144 --disk 40 --vcpus 4 compute-realtime
    $ openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property "capabilities:profile"="compute-realtime" compute-realtime
  4. compute-realtime 프로필을 사용하여 실시간 워크로드를 지정할 각 노드에 태그를 지정합니다.

    $ openstack baremetal node set --property capabilities='profile:compute-realtime,boot_option:local' <node_uuid>
  5. 다음 콘텐츠가 포함된 환경 파일을 만들어 ComputeRealTime 역할을 compute-realtime 플레이버에 매핑합니다.

    parameter_defaults:
      OvercloudComputeRealTimeFlavor: compute-realtime
  6. 다른 환경 파일과 함께 스택에 환경 파일과 새 역할 파일을 추가하고 오버클라우드를 배포합니다.

    (undercloud)$ openstack overcloud deploy --templates \
     -e [your environment files] \
     -r /home/stack/templates/rt~/my_roles_data.yaml \
     -e home/stack/templates/compute-real-time.yaml