Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

4장. 기술 노트

이 장에서는 CDN(Content Delivery Network)을 통해 제공되는 Red Hat OpenStack Platform "Ocata" 에라타 권고의 추가 정보를 제공합니다.

4.1. RHEA-2016:1245 — Red Hat OpenStack Platform 11.0 버그 수정 및 기능 강화 권고

이 섹션에 포함된 버그는 RHEA-2017:1245-02 권고에 의해 해결되었습니다. 이 권고에 대한 자세한 내용은 https://access.redhat.com/errata/RHEA-2017:1245.html에서 확인하십시오.

instack-undercloud

BZ#1418828
언더클라우드 스택 rc 파일은 Keystone v2 rc입니다. 이전에는 v3 rc 파일(예: v3 overcloudrc)에서 전환할 때 일부 v3 환경 변수가 남아 있었습니다. 따라서 Keystone 인증이 올바르게 작동하지 않을 수 있었습니다.

이번 릴리스에서는 언더클라우드 값이 설정되기 전에 모든 OpenStack 관련 환경 변수가 stackrc에서 지워집니다. 결과적으로 stackrc를 읽은 후 이전 rc 파일의 변수가  더 이상 환경에 남아있지 않으므로 Keystone 인증이 올바르게 작동하게 되었습니다.
BZ#1256912
image_path 매개 변수는 더 이상 사용되지 않습니다. 이번 업데이트를 통해 매개 변수는 언더클라우드 설정 파일에서 삭제되었습니다.
BZ#1268451
특정 상황에서 유효성 검사 논리의 오류로 인해 언더클라우드 가상 IP가 올바르게 검증되지 않았습니다. 결과적으로 언더클라우드가 잘못된 가상 IP로 배포될 가능성이 있었습니다. 이제 이 오류는 수정되어 가상 IP가 올바르게 확인됩니다. 가상 IP 설정에 문제가 있는 경우 실제 배포 전에 검출됩니다.

openstack-cinder

BZ#1434494
이전에는 동일한 이미지에서 동시에 볼륨 생성 요청을 실행하면 Block Storage 서비스의 이미지 캐시에 여러 항목이 추가될 가능성이 있었습니다. 이로 인해 같은 이미지에 대한 이미지 캐시 항목이 중복되어 공간이 낭비되었습니다.

이번 업데이트에서는 이러한 문제를 방지하기 위해 동기화 잠금 기능이 추가되었습니다. 이미지에서 볼륨을 생성하는 첫 번째 요청은 캐시되고 다른 모든 요청은 캐시된 이미지를 사용하게 됩니다.

openstack-glance

BZ#1396794
이 강화된 기능을 통해 이제 `glance-manage db purge`로 하루가 지나지 않은 행을 제거할 수 있습니다. 이 기능은 운영자가 정기적으로 해당 작업을 실행해야 하는 경우가 있어 추가되었습니다.
결과적으로 `age_in_days` 옵션의 값을 `0`으로 설정할 수 있습니다.

openstack-gnocchi

BZ#1197163
Time Series Database as a Service(gnocchi)와 Aodh API 끝점은 이제 REST API에 `/ healthcheck` HTTP 끝점을 노출합니다. 이 끝점을 요청하면 서비스 상태를 확인할 수 있으며 여기에는 인증이 필요하지 않습니다.

openstack-heat

BZ#1414779
이전에는 FAILED 상태에 있던 리소스에 사전 업데이트 후크가 설정되면 Orchestration 서비스에서 후크가 활성화되었음을 나타내는 이벤트를 기록했습니다. 그러면 서비스에서 사용자가 후크를 지울 때까지 기다리지 않고 즉시 대체 리소스를 만들었습니다. 그 결과 Tripleoclient 서비스에서 후크가 이벤트를 기반으로 보류 중인 것으로 판단하지만 대체 리소스에 후크 세트가 없으므로
이를 지우려는 시도에 실패합니다. 결국 다음과 같은 메시지가 표시되며 director에서 오버클라우드 업데이트를 완료하지 못합니다.

    ERROR: The "pre-update" hook is not defined on SoftwareDeployment
    "UpdateDeployment"

이는 또한 후크를 사용하는 다른 클라이언트 측 애플리케이션에도 영향을 미치고 있었습니다. 이로
 인해 director에서 한 번에 하나의 컨트롤러만 업데이트되도록 일렬화되지 않고 UpdateDeployment가 동시에 두 개의 컨트롤러 노드에서 실행될 수 있었습니다.

이번 릴리스에서는 이제 Orchestration 서비스가 리소스 상태에 관계없이 사용자가 후크를 지울 때까지 일시 중지됩니다. 이를 통해 UpdateDeployment 리소스가 FAILED 상태인 경우에도 director 오버클라우드 업데이트가 완료됩니다.
BZ#1320771
이전에는 스택 상태가 잘못된 경우 Orchestration 서비스에서 리소스 상태를 재설정할 수 있었지만 업데이트가 다시 트리거되면 서비스에서 그러한 작업에 실패했습니다. 이로 인해 리소스가 진행 중인 상태에서 멈춰 데이터베이스 수정을 통해 배포를 차단 해제해야 했습니다.

이번 릴리스에서는 이제 Orchestration 서비스에서 스택 상태를 설정할 때 모든 리소스의 상태를 설정합니다. 따라서 리소스가 진행 중인 상태에서 멈추지 않도록 방지되어 작업을 성공적으로 다시 수행할 수 있게 되었습니다.

openstack-manila

BZ#1386249
이번 업데이트는 핵심 OpenStack 파일 공유 서비스 (manila) 인프라와 함께 CephFS 네이티브 드라이버에 강화된 기능을 제공합니다. 이제 CephFS 네이티브 드라이버는 읽기 전용의 파일 공유를 지원하고 'access_list'에 없는 백엔드 규칙을 삭제하여 복구 모드가 개선되었습니다.

openstack-manila-ui

BZ#1393893
이번 강화된 기능을 통해 이제 대시보드에서 비공개 공유를 만들 수 있습니다.
사용자가 생성 프로세스 중에 파일 공유를 공개로 표시할 수 있는 확인란을 숨기도록 대시보드를 설정할 수 있습니다. 기본 옵션은 확인란을 선택하지 않고 공유를 비공개로 생성하는 것입니다.

openstack-neutron

BZ#1385338
neutron-openvswitch-agent를 사용하여 보안 그룹 트렁크 기능을 구현하려면 openvswitch 방화벽 드라이버가 필요합니다. 이 드라이버에는 현재 동일한 컴퓨팅 노드에 있는 다른 네트워크 세그먼트에 동일한 MAC 주소를 가진 두 개의 포트가 있는 경우 수신 트래픽이 잘못 일치하는 버그 1444368이 포함되어 있습니다.

결과적으로 하위 포트가 상위 포트와 MAC 주소가 동일한 경우 수신 트래픽이 포트 중 하나에 대해 제대로 조합되지 않습니다.

트래픽을 제대로 처리하기 위한 해결 방법은 상위 포트 및 하위 포트의 포트 보안을 비활성화하는 것입니다.

예를 들어, UUID 12345를 사용하는 포트에서 포트 보안을 비활성화하려면 해당 포트와 관련된 보안 그룹을 제거해야 합니다.
 openstack port set --no-security-group --disable-port-security 12345

보안 그룹 규칙은 해당 포트에 적용되지 않으며 트래픽은 필터링되지 않거나 ip/mac/arp 스푸핑으로부터 보호되지 않습니다.
BZ#1436576
DVR 설정에서 'test_l3_agent_scheduler.py'의 'test_add_list_remove_router_on_l3_agent'가 성공적으로 완료되지 않았습니다. 테스트 절차 중에 네트워크 인터페이스를 L3 에이전트에 바인딩하려고 시도하지만 새 라우터가 생성되면 인터페이스가 이전 라우터에 바인딩되었습니다.
이 문제가 해결되어 인터페이스가 라우터에 추가되지 않고 테스트가 완료될 때까지 L3 에이전트에 할당되지 않도록 되어 테스트가 성공적으로 완료하게 되었습니다.

openstack-neutron-lbaas

BZ#1325861
이번에 강화된 기능에는 서버에서 정지된 것으로 감지한 LBaaS 에이전트의 로드 밸런서를 자동으로 다시 예약하는 기능이 추가되었습니다. 이전에는 로드 밸런서를 여러 LBaaS 에이전트에서 예약하고 구현할 수 있었지만 하이퍼바이저가 정지된 경우 해당 노드에 예정된 로드 밸런서의 작동이 중단되었습니다. 이번 업데이트로 인해 이러한 로드 밸런서가 자동으로 다른 에이전트로 다시 예약됩니다. 이 기능은 기본적으로 사용되지 않으며 `allow_automatic_lbaas_agent_failover`를 사용하여 관리됩니다.
BZ#1326224
이번 강화된 기능은 'HaproxyNSDriver' 클래스(v2)에 'ProcessMonitor' 클래스를 구현합니다. 필요한 경우 이 클래스는 'external_process' 모듈을 사용하여 HAProxy 프로세스를 모니터링하고 다시 시작합니다. LBaaS 에이전트(v2)는 'external_process' 관련 옵션을 로드하고 HAProxy가 예기치 않게 중지한 경우 구성된 작업을 수행합니다.

openstack-nova

BZ#1352922
이번 릴리스에서는 대량의 인스턴스가 있는 시스템에서 리소스가 많이 소모되는 것을 방지하기 위해 페이지네이션 지원 기능이 추가되었습니다. nova API simple-tenant-usage 끝점의 v2.40 마이크로버전에서는 페이지네이션에 새로운 옵션의 쿼리 매개 변수 'limit' 및 'marker'를 사용합니다. 'marker' 옵션은 시작 지점을 설정하고 'limit' 옵션은 시작 지점 이후에 표시할 레코드 수를 설정합니다. 'limit'가 설정되어 있지 않으면 nova는 설정 가능한 'max_limit'(기본값은 1000)를 사용합니다. 이전 마이크로버전의 경우 이러한 새로운 쿼리 매개 변수를 허용하지 않아도 max_limit를 실행하기 시작하기 때문에 결과값이 잘릴 수 있습니다. 새 마이크로버전을 사용하여 DoS 계열의 사용 요청과 응답이 잘리지 않도록 합니다.

openstack-sahara

BZ#1337664
이번 업데이트에는 버전 5.1.0 MapR 플러그인에 대한 지원이 추가되었습니다.

openstack-selinux

BZ#1431556
DPDK가 활성화된 인스턴스 시작 시 SELinux 정책이 불완전하므로 강제 모드에서 SELinux와 함께 DPDK를 사용하여 인스턴스를 시작하면 시작에 실패하고 openvswitch 및 svirt와 관련된 /var/log/audit/audit.log*에 AVC 거부가 표시됩니다.

이 문제를 해결하려면 섹션 4.4.1.2에 설명된 대로 DPDK를 사용하는 각 컴퓨팅 노드에서 SELinux가 허용되도록 설정하십시오.

SELinux 상태 및 모드의 영구적 변경 사항

이렇게 하면 DPDK를 사용하는 가상 머신을 시작할 수 있습니다. 이 방법은 해당 문제에 대해 좀 더 자세히 조사하는 동안 임시방편으로 사용할 수 있습니다.

openstack-tripleo-common

BZ#1326549
Heat에 있는 노드를 삭제하면 삭제 명령이 완료되고 프로세스가 백그라운드에서 계속 진행 중이지만 프롬프트가 반환됩니다. 직후에 다른 명령을 실행하면 충돌이 발생하고 그 결과 명령이 실패합니다. 프로세스의 동작이 변경되어 이제 프로세스가 완전히 종료된 경우에만 프롬프트가 반환됩니다.
BZ#1242422
보다 간편한 고가용성 배포 및 업그레이드를 위해 director에서 자동 펜싱 설정을 사용할 수 있습니다. 이 새로운 기능을 활용하려면 'overcloud generate fencing' 명령을 사용하십시오.

openstack-tripleo-heat-templates

BZ#1425507
neutron-openvswitch-agent 서비스를 중지하면 중단 프로세스가 정상적으로 종료되기까지 시간이 너무 오래 걸리며 systemd에 의해 강제 종료되었습니다. 이 경우 시스템에 실행 중인 neutron-rootwrap-daemon이 남아있어 neutron-openvswitch-agent 서비스를 다시 시작할 수 없었습니다.
이제 문제가 해결되어 rpm scriplet가 분리된 neutron-rootwrap-daemon을 감지하고 종료합니다. 그 결과 neutron-openvswitch-agent 서비스를 정상적으로 다시 시작할 수 있습니다.
BZ#1435271
이 릴리스에서 'clustercheck'는 Galera의 'wsrep_cluster_address' 옵션에 지정된 노드에서만 실행됩니다. 이러한 변경은 Galera가 전용 노드에서 실행되는 사용 사례를 고려하여 구현되었습니다(구성 가능한 역할로 가능해짐). 이전에는 마이너 업데이트 중에 Galera가 동일한 노드에 있다고 가정하여 Pacemaker를 실행하는 모든 노드에서 'clustercheck'가 실행되었습니다.
BZ#1312962
director는 '/etc/rabbitmq/rabbitmq.config'에 'tcp_list_options' stanza를 두 번 설정했습니다. 이로 인해 문제가 발생하지는 않았지만 앞으로 혼란을 야기할 수 있습니다. 이번 수정에는 중복 stanza를 제거하여, 하나의 'tcp_list_options' stanza만 구성 파일에 나타납니다.
BZ#1372589
libvirtd에 의해 생성된 QEMU 인스턴스의 경우 max_files 및 max_processes를 설정하기 위해 이제 Puppet hieradata를 사용할 수 있습니다. 적절한 Puppet 클래스가 포함된 Environment 파일을 통해 이를 수행할 수 있습니다. 예를 들어 max_files 및 max_processes를 각각 32768 및 131072로 각각 설정하려면 다음을 사용합니다.

parameter_defaults:
  ExtraConfig
    nova::compute::libvirt::qemu::max_files: 32768
    nova::compute::libvirt::qemu::max_processes: 131072

또한 libvirtd에 의해 시작된 QEMU 인스턴스는 다수의 파일 설명자 또는 스레드를 사용할 수 있으므로 이번 업데이트에서는 이러한 값을 기본값으로 설정합니다. 이는 각 컴퓨팅 노드에서 호스팅되는 컴퓨팅 게스트와 각 인스턴스가 연결되는 Ceph RBD 이미지에 따라 다릅니다. 대규모 클러스터에서 이러한 제한을 구성할 수 있어야 합니다.

이러한 새로운 기본값을 사용하면 컴퓨팅 서비스에서 700개 이상의 OSD를 사용할 수 있어야 합니다. 이는 이전에 최소 max_files 수 (원래 1024개)에 의해 부과된 제한으로 식별되었습니다.
BZ#1438890
OpenStack Platform 10에 손상된 Big Switch 에이전트 구성이 포함되어 있었습니다. 제공된 heat 템플릿과 함께 Big Switch 에이전트를 배포하면 배포에 실패했습니다. 이번 수정에서는 heat 템플릿을 업데이트하여 Big Switch 에이전트를 올바르게 배포합니다. 이제 director가 Big Switch 에이전트 서비스를 구성 가능한 역할에 올바르게 배치할 수 있습니다.
BZ#1400262
Memcached의 기본 메모리 구성이 총 가용 RAM의 95%였으므로 리소스 경합이 발생할 수 있었습니다. 이번 수정을 통해 기본값을 총 가용 RAM의 50%로 낮추었습니다. 또한 이제 'MemcachedMaxMemory' 설정을 사용하여 이 값을 설정할 수 도 있습니다. 이로 인해 리소스 충돌 발생 가능성이 낮아졌습니다.
BZ#1440213
오버클라우드 패키지 업데이트 스크립트의 버그로 인해 업데이트할 수 있는 패키지가 없는 경우에도 항상 클러스터 서비스가 다시 시작되었습니다. 이번 수정에는 보류 중인 패키지 업데이트가 있는지 확인하는 검사가 포함되었습니다. 사용할 수 있는 패키지 업데이트가 없으면 yum update  스크립트가 종료되고 클러스터 서비스가 다시 시작되지 않습니다.
BZ#1225069
보안상의 이유로 오버클라우드는 기본적으로 SSH 키 기반 액세스만 허용합니다. Red Hat Enterprise Linux Extras 채널에 있는 virt-customize 툴을 사용하여 오버클라우드의 디스크 이미지에  root 암호를 설정할 수 있습니다. 툴을 설치하고 오버클라우드 이미지를 다운로드한 후 다음 명령을 사용하여  root 암호를 변경하십시오.

$ virt-customize -a overcloud-full.qcow2 --root-password password:my_root_password

"openstack overcloud image upload" 명령을 사용하여 이미지를 Glance에 업로드하기 전에 이 작업을 수행하십시오.

openstack-tripleo-puppet-elements

BZ#1441923
이제 'tuned-profiles-cpu-partitioning' 패키지가 'overcloud-full.qcow2' 이미지에 사전 설치됩니다. DPDK 배포의 경우 호스트를 조정하고 CPU 사용을 분리하는데 이 패키지가 필요합니다. director에는 필요한 인수를 사용하여 'tuned' 서비스를 활성화하기 위한 적절한 firstboot 스크립트가 포함되어 있습니다.

os-net-config

BZ#1409097
현재 Red Hat OpenStack Platform director 10에서 SRIOV를 사용하는 경우, compute.yaml 파일에서 NIC ID (예: nic1, nic2, nic3 등)를 사용하면 오버클라우드 배포에 실패합니다.

이 문제를 해결하려면 NIC ID 대신 NIC 이름(예: ens1f0, ens1f1, ens2f0 등)을 사용하여 오버클라우드 배포를 완료해야 합니다.

puppet-ceph

BZ#1388515
이전 버전 (Red Hat Ceph Storage 1.3)에서는 외부 Ceph Storage Cluster와 통합된 Red Hat OpenStack Platform 환경을 업그레이드하거나 배포할 때 이전 버전과의 호환성을 활성화해야 합니다. 이를 위해 업그레이드 또는 배포 중에 environments/puppet-ceph-external.yaml에서 다음 행을 주석 해제 처리합니다.

parameter_defaults:
  # Uncomment if connecting to a pre-Jewel or RHCS1.3 Ceph Cluster
  RbdDefaultFeatures: 1
BZ#1413980
이번 릴리스에는 CephFS를 배포하는 데 필요한 Puppet 모듈이 포함되어 있습니다. 따라서 director를 통해 CephFS 백엔드와 함께 OpenStack Shared File System 서비스 (openstack-manila)를 배포할 수 있습니다.

puppet-pacemaker

BZ#1437417
Previously, sometimes a deployment failed with the following error:
	  Error: /Stage[main]/Pacemaker::Corosync/Exec[Start Cluster tripleo_cluster]/returns: change from notrun to 0 failed: /sbin/pcs cluster start --all returned 1 instead of one of 0

With this update, a small race condition where puppet pacemaker could fail during cluster setup was closed. As a result, the deployment works correctly without errors.
BZ#1379741
이전에는 모든 Pacemaker 서비스가 모두 동일한 역할을 해야 했습니다.

이번 업데이트의 새로운 기능을 통해 구성 가능한 역할을 Pacemaker 관리 서비스와 함께 사용할 수 있습니다. 더 많은 다양한 노드에서 Pacemaker 관리 서비스를 확장하려면 이 기능이 필요합니다.

puppet-tripleo

BZ#1438602
이전에는 OpenStack Dashboard 서비스가 잘못된 배포 단계에서 구성되었으므로 배포 중에 일시적으로 Horizon을 사용할 수 없게 되고 추가 'httpd' 서비스가 다시 시작되었습니다.

이번 업데이트를 통해 OpenStack Dashboard 구성이 수정되어 나머지 'httpd' 구성과 동시에 실행되도록 수정되었습니다. 그 결과, 오버클라우드를 실행할 때 Horizon을 일시적 사용 불가 현상이 해결되었습니다.

python-django-horizon

BZ#1271019
관리자는 볼륨 전송 작업 중에 사용자 인증 정보를 기록해야 하며 이를 수동으로 수행하기엔 불편함이 있었습니다.

이번 업데이트를 통해 정보를 쉽게 저장할 수 있도록 인증서를 다운로드하는 새 버튼이 볼륨 전송 화면에 추가되었습니다. 이제 관리자는 버튼 클릭만으로 컴퓨터에 CSV 파일을 로컬로 다운로드하고 저장할 수 있습니다.
BZ#1388171
nova-api 작업자의 메모리 비대화 문제를 방지하기 위해 simple-tenant-usage API 확장에 페이지 매김 로직이 추가되었습니다.
BZ#1434704
이전에는 코드에서 사용자 ID에 밑줄이 포함되어 있으면 제대로 처리되지 않아 프로젝트/도메인 구성원을 업데이트할 수 없었습니다.

이번 업데이트를 통해 사용자 ID를 처리하는 코드가 수정되어 밑줄을 제대로 처리할 수 있습니다. 그 결과 사용자 ID에 밑줄이 있어도 프로젝트/도메인 구성원을 업데이트할 수 있습니다.

python-heatclient

BZ#1437334
이벤트 검색 프로세스를 최적화한 후, 'openstack stack hook poll' 명령에서 보류 중인 후크가 존재하고 반환되어야 하는 경우에도 해당 후크 반환을 중지했습니다. 이제 문제가 해결되어 보류 중인 후크가 올바르게 반환됩니다.

python-openstackclient

BZ#1402772
'--os-interface' 스위치가 'openstack network' 명령에 의해 무시되었습니다. 그 결과 다른 인터페이스가 지정되었더라도 이러한 모든 명령이 'public' 끝점을 사용했습니다. 이제 스위치에 대한 지원이 추가되어 'openstack network' 명령이 '--os-interface' 스위치에 지정된 끝점을 올바르게 사용합니다.

python-oslo-messaging

BZ#1427792
Oslo Messaging의 RPC(Remote Procedure Call) 메시지 승인은 스레드-세이프(thread-safe)가 아니었습니다. 그 결과, 경합 상태에 따라 Ceilometer에서 RPC 타임아웃이 발생했습니다. 이번 릴리스에서는 Oslo Messaging에서 메시지 승인이 수정되어 Ceilometer가 올바르게 응답합니다.
BZ#1414497
이전 릴리스에서는 Oslo Messaging에서 구성을 올바르게 초기화하지 못했습니다. 그 결과, 'nova-manage' 클라이언트가 시작중에 실패했습니다. 이번 릴리스에서는 이러한 오류가 수정되어 'nova-manage'가 올바르게 시작됩니다.

python-tripleoclient

BZ#1353049
이전 버전에는 업데이트 또는 업그레이드가 실패할 경우 종료 값 0을 반환했기 때문에 이 값을 기준으로 처리가 정상적으로 완료되었는지 여부를 확인할 수 없었습니다. 이번 업데이트에서는 업데이트 또는 업그레이드 실패 시 OpenStackClient에 오류 조건이 있음을 알리는 예외가 발생합니다. 그 결과 OpenStackClient에서 처리가 정상적으로 완료했을 경우에만 종료 값 0을 반환하고 오류가 발생한 뒤에는 0이 아닌 값을 반환합니다.
BZ#1400386
이전 릴리스에서는 오버클라우드 이미지를 업로드하거나 업데이트할 때 'openstack overcloud image upload'가 '--image-path' 인수를 무시했습니다. 따라서 작동 중인 디렉터리의 이미지만 사용할 수 있었습니다. 이번 릴리스에서는 '--image-path' 인수에 대한 지원이 추가되어 인수로 지정된 다른 디렉터리의 이미지를 완벽하게 업로드할 수 있습니다.

rhosp-director

BZ#1247019
펜싱 장치 이름과 호스트 이름이 같으면 Pacemaker에서 지속적으로 충돌이 발생합니다. 이 문제를 방지하려면 펜싱 장치의 이름에 "fence-" 접두사 또는 "-fence" 접미사를 추가하십시오. 이와 같이 구성된 이름을 사용하면 클러스터가 오류 없이 작동합니다.