Database-as-a-Service 가이드


Red Hat OpenStack Platform 8

Red Hat OpenStack Platform용 Database-as-a-Service

OpenStack Documentation Team

초록

이 가이드에서는 Red Hat OpenStack Platform과 함께 Database-as-a-Service를 배포, 구성 및 사용하는 방법을 설명합니다.

머리말

DBaaS(Database-as-a-Service)를 사용하면 배포, 구성 또는 백업과 같은 관리 작업에 대해 걱정하지 않고도 OpenStack 환경에서 관계형 또는 비관계형 데이터베이스를 편리하게 활용할 수 있습니다. 이 기능은 게스트 데이터베이스 이미지를 프로비저닝하고 관리하는 trove 구성 요소에서 제공합니다.

주의

DEPRECATION NOTICE: Red Hat OpenStack Platform 10부터 OpenStack Trove 서비스는 더 이상 Red Hat OpenStack Platform 배포에 포함되지 않습니다. Red Hat은 신뢰할 수 있는 파트너와 협력하여 고객에게 프로덕션 준비 DBaaS 서비스를 제공하고 있습니다. 이 옵션에 대한 자세한 내용은 영업 계정 관리자에게 문의하십시오.

DBaaS는 다음과 같은 몇 가지 서비스로 구성됩니다.

  • 게스트 인스턴스에서 실행되고 데이터 저장소에서 실행되는 게스트 에이전트 서비스는 새 데이터 저장소를 온라인 상태로 가져오고 데이터베이스 작업을 수행하는 작업이 포함됩니다.
  • 작업 관리자 서비스는 인스턴스에 대한 작업을 프로비저닝, 관리 및 수행합니다.
  • RESTful API를 제공하고 API 요청을 게스트 에이전트 또는 작업 관리자에게 전달하는 API 서비스입니다. DBaaS API에 대한 명령줄 인터페이스는 python-troveclient 패키지의 일부인 trove 클라이언트에서 제공합니다.
  • 호스트에서 실행되고 게스트 인스턴스의 메시지를 수신 대기 중인 conductor 서비스(예: 상태 업데이트)

지원되는 데이터베이스 플랫폼은 다음과 같습니다.

  • MySQL 5.5 및 5.6
  • MariaDB 5.5 및 10
주의

OpenStack Database-as-a-Service는 이 릴리스에서 기술 프리뷰로 제공되므로 Red Hat에서 완전히 지원되지 않습니다. 테스트 용도로만 사용해야 하며 프로덕션 환경에 배포해서는 안 됩니다. 기술 프리뷰 기능에 대한 자세한 내용은 적용 범위 상세 정보를 참조하십시오.

1장. Database-as-a-Service 관리

1.1. Database-as-a-Service 컨트롤러 설치 및 구성

DBaaS 컨트롤러에서 필요한 패키지를 설치하고 환경을 설정하는 방법에 대한 자세한 내용은 설치 참조를 참조하십시오.

1.2. 안전한 Database-as-a-Service

이전 버전의 Red Hat OpenStack Platform에서는 DBaaS 게스트 에이전트가 모든 트래픽에 대해 전체 관리 컨트롤러에서 사용한 RabbitMQ 메시지 버스에 대한 인증 정보와 함께 실행되었습니다. 결과적으로 DBaaS 인스턴스는 중요한 데이터를 포함하여 메시지 버스를 통해 전송되는 모든 데이터를 볼 수 있어 인스턴스가 버스를 공유하는 다른 서비스를 오용하거나 공격할 수 있었습니다. Red Hat OpenStack Platform 8에서는 DBaaS가 격리된 테넌트에 배치되어 나머지 관리 컨트롤러에 액세스할 수 없습니다. 그러나 DBaaS의 보안을 더욱 높이기 위해 별도의 호스트와 별도의 RabbitMQ 메시지 버스에서 DBaaS 인스턴스를 설정할 수 있습니다. 이렇게 하려면 다음 단계를 수행합니다.

  1. 관리 컨트롤러에서 다음을 수행합니다.

    1. RabbitMQ 사용자 및 암호를 DBaaS 테넌트와 공유하지 않는 사용자 지정 값으로 설정합니다. 예를 들어 게스트 계정과 / 기본 가상 호스트를 변경된 암호로 사용할 수 있습니다.

      # rabbitmqctl change_password guest password
      Copy to Clipboard Toggle word wrap

      이 암호는 서비스가 메시지 버스에 연결되도록 설정된 모든 구성 파일에서 변경됩니다.

    2. 서비스 카탈로그 조회에서 별도의 호스트에서 DBaaS를 사용하도록 DBaaS 데이터베이스 엔드포인트를 업데이트합니다. 먼저 현재 엔드포인트 UUID를 확인한 다음 삭제하고 마지막으로 별도의 DBaaS 호스트의 IP 주소로 새 엔드포인트를 생성합니다.

      # keystone endpoint-list
      # keystone endpoint-delete current_DBaaS_endpoint_uuid
      # keystone endpoint-create --service trove --publicurl http://IP:8779/v1.0/\$\(tenant_id\)s --region RegionOne
      Copy to Clipboard Toggle word wrap
  2. DBaaS 컨트롤러에서 다음을 수행합니다.

    1. 원격 관리 컨트롤러 호스트에서 WSGI 구성에서 인증 토큰 필터를 지정합니다. IP를 관리 컨트롤러 호스트의 IP 주소로 교체하여 /etc/trove/api-paste.ini 파일의 다음 옵션과 값을 사용합니다.

      [filter:authtoken]
      paste.filter_factory = keystonemiddleware.auth_token:filter_factory
      service_protocol = http
      service_host = IP
      service_port = 5000
      auth_host = IP
      auth_port = 35357
      auth_protocol = http
      auth_uri = http://IP:35357/v2.0/
      signing_dir = /tmp/keystone-signing-trove
      admin_tenant_name = admin
      admin_user = admin
      admin_password = admin
      Copy to Clipboard Toggle word wrap
    2. 관리자 사용자를 추가하여 DBaaS 게스트 에이전트에 관리 컨트롤러에 사용된 비밀과 다른 시크릿이 있는지 확인합니다.

      # rabbitmqctl add_user isolated isolated
      # rabbitmqctl set_permissions isolated ".*" ".*" ".*"
      Copy to Clipboard Toggle word wrap
    3. 다음 옵션과 값을 /etc/trove/trove.conf 파일에 배치하여 로컬 RabbitMQ 인스턴스에 연결하고 인증하도록 DBaaS 컨트롤 플레인을 구성합니다.

      # AMQP Connection info
      rabbit_userid=isolated
      rabbit_password=isolated
      rabbit_host=DBaaS_IP
      
      # single instance tenant
      nova_proxy_admin_user = user
      nova_proxy_admin_pass = password
      nova_proxy_admin_tenant_name = tenant
      trove_auth_url = http://MGMT_IP:5000/v2.0
      nova_compute_service_type = compute
      cinder_service_type = volumev2
      os_region_name = RegionOne
      nova_compute_url = http://MGMT_IP:8774/v3
      
      remote_nova_client = trove_ext.cloudos.remote.nova_client_trove_admin
      remote_cinder_client = trove_ext.cloudos.remote.cinder_client_trove_admin
      remote_neutron_client = trove_ext.cloudos.remote.neutron_client_trove_admin
      Copy to Clipboard Toggle word wrap
  3. 관리 컨트롤러에서 /etc/trove/trove-guestagent.conf 파일을 다음과 같이 편집합니다.

    # AMQP Connection info
    rabbit_userid=isolated
    rabbit_password=isolated
    rabbit_host=DBaaS_IP
    
    # single tenant config
    nova_proxy_admin_user = user
    nova_proxy_admin_pass = password
    nova_proxy_admin_tenant_name = tenant
    trove_auth_url = http://MGMT_IP:5000/v2.0
    swift_url = http://MGMT_IP:8080/v1/AUTH_
    Copy to Clipboard Toggle word wrap

1.2.1. ACL 정책

또는 RabbitMQ 가상 호스트에서 제공하는 ACL 정책을 활용하여 보안을 개선할 수 있습니다. 이 경우 별도의 권한을 포함하여 각 가상 호스트에 별도의 사용자를 할당할 수 있습니다. 예를 들어 /isolated 라는 가상 호스트를 정의하고 가상 호스트에 대해 격리된 사용자에게 적절한 권한을 할당할 수 있습니다. 이렇게 하려면 다음 단계를 수행합니다.

  1. 기본 / 가상 호스트의 게스트 계정 암호를 변경합니다.

    # rabbitmqctl change_password guest password
    Copy to Clipboard Toggle word wrap
  2. 새 사용자 및 가상 호스트를 추가하고 권한을 적절하게 설정합니다.

    # rabbitmqctl add_user isolated isolated
    # rabbitmqctl add_vhost /isolated
    # rabbitmqctl -p /isolated set_permissions isolated ".*" ".*" ".*"
    Copy to Clipboard Toggle word wrap
  3. DBaaS 구성을 편집합니다. 편집할 두 개의 파일이 있습니다. /etc/trove/trove-guestmanager.conf. 이 파일은 puppet-trove /trove-conductor.conf에서 생성되며 DBaaS 인스턴스의 비동기 상태 업데이트를 위해 DBaaS 제어 플레인 서비스를 구성하는 /etc/trove/trove-conductor.conf 입니다. RabbitMQ 설정은 두 파일에 대해 동일합니다.

    [oslo_messaging_rabbit]
    rabbit_host=IP
    rabbit_virtual_host=/isolated
    rabbit_userid=isolated
    rabbit_password=isolated
    rabbit_port=5672
    rabbit_ha_queues=False
    rabbit_hosts=IP:5672
    rabbit_use_ssl=False
    Copy to Clipboard Toggle word wrap

이 접근 방식의 장점은 별도의 호스트와 메시지 큐를 사용하는 시나리오와 비교하면 단순성입니다. 이는 프로비저닝이 자동화된 방식으로 수행되는 경우(예: Red Hat OpenStack Platform director 사용) 유용할 수 있습니다.

2장. Database-as-a-Service 사용

2.1. Database-as-a-Service 게스트 이미지의 생성 및 구성 자동화

지원되는 데이터 저장소를 위해 trove-image-create 툴을 사용하여 자동화된 DBaaS 호환 이미지를 생성하는 것이 좋습니다.

trove-image-create 툴을 가져오려면 openstack-trove-images 패키지를 설치합니다.

# yum install openstack-trove-images
Copy to Clipboard Toggle word wrap

다음과 같은 기본 옵션을 사용할 수 있습니다.

Expand
옵션설명, 매개변수

-i, --image

사용할 기본 이미지입니다. QEMU 이미지(qcow2)가 지원됩니다. 이미지 파일 이름(및 선택적으로 해당 경로)을 pamater로 지정합니다.

-r,--release

사용하려는 OpenStack 버전입니다. kilo 또는 liberty 를 매개변수로 지정합니다.

-s,--datastore

배포할 데이터 저장소입니다. 지원되는 데이터 저장소는 머리말 에 나열되며 잠재적인 매개변수는 다음과 같습니다.

  • MySQL Cryostat-분산의 모든 것이 mysql 을 제공합니다. RHEL 7의 경우 MariaDB 5.5가 사용됩니다.
  • mysql.com의 mysql55 Cryostat- CryostatMySQL 5.5
  • mysql.com의 mysql56 >-<MySQL 5.6
  • mariadb.org에서 mariadb10 Cryostat- CryostatMariaDB 10.0

예 2.1. 이미지 사용자 정의

예를 들어 다음과 같은 방법으로 도구를 사용할 수 있습니다.

# trove-image-create -s mysql -r liberty -i myimage.qcow2
Copy to Clipboard Toggle word wrap

이렇게 하면 MariaDB 5.5를 추가하고 Red Hat OpenStack Platform 8(Liberty)에서 이 디렉토리에 있는 myimage.qcow2 파일에 저장된 이미지를 사용자 지정할 수 있습니다.

RHEL 7 이미지로 작업하는 경우 사용해야 하는 추가 옵션이 있습니다.

Expand
옵션인식된 매개변수 및 해당 구문설명

--sm-register

USER:password:PASSWORD
USER:file:FILE_CONTAINING_PASSWORD

Red Hat 인증 정보를 사용하여 서브스크립션 관리자에게 등록합니다.

--sm-pool

pool:POOL_ID
파일:FILE_CONTAINING_POOL_ID
auto

지정된 또는 자동으로 결정된 서브스크립션 풀을 시스템에 연결합니다.

예 2.2. RHEL 7 이미지 사용자 정의

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

# trove-image-create -s mysql -r liberty -i ../../images/rhel-mariadb55.qcow2 --sm-register admin@example.com:password:123456 --sm-pool auto
Copy to Clipboard Toggle word wrap

이렇게 하면 이전 예제와 유사한 방식으로 이미지를 사용자 지정할 수 있지만 Red Hat 로그인 이름 admin@example.com, 암호 123456 및 가장 일치하는 서브스크립션을 사용하여 시스템을 등록합니다.

2.1.1. Database-as-a-Service Management에 이미지 로드

이미지 사용자 지정이 완료되면 다음 단계를 수행합니다.

  1. 이미지 서비스에 이미지를 업로드합니다. 이렇게 하려면 다음과 유사한 명령을 실행합니다.

    # openstack image create rhel7-mariadb55 --disk-format qcow2 --container-format bare --public < myimage.qcow2
    Copy to Clipboard Toggle word wrap
  2. 이전 명령의 출력에서 업로드한 이미지의 ID를 가져옵니다. 이 ID는 다음과 같아야 합니다.

    +------------------+------------------------------------------------------+
    | Field            | Value                                                |
    +------------------+------------------------------------------------------+
    | checksum         | dec3f16054739459d03984b7a552cd9c                     |
    | container_format | bare                                                 |
    | created_at       | 2016-01-27T20:10:36Z                                 |
    | disk_format      | qcow2                                                |
    | file             | /v2/images/c637391b-e00f-47fb-adb5-e8dfc4e224d4/file |
    | id               | c637391b-e00f-47fb-adb5-e8dfc4e224d4                 |
    | min_disk         | 0                                                    |
    | min_ram          | 0                                                    |
    | name             | rhel7-mariadb55                                      |
    | owner            | 483cae7de00c4f029e19eef5983c67a9                     |
    | protected        | False                                                |
    | schema           | /v2/schemas/image                                    |
    | size             | 1910767616                                           |
    | status           | active                                               |
    | updated_at       | 2016-01-27T20:10:46Z                                 |
    | virtual_size     | None                                                 |
    | visibility       | public                                               |
    +------------------+------------------------------------------------------+
    Copy to Clipboard Toggle word wrap

    이 경우 ID는 c637391b-e00f-47fb-adb5-e8dfc4e224d4 입니다.

  3. DBaaS 관리 데이터 저장소를 업데이트하여 원하는 데이터 저장소 및 버전의 인스턴스를 시작하는 데 사용할 새 이미지의 레코드를 만듭니다.

    # export DATASTORE=mariadb
    # export DATASTORE_VERSION=5.5
    # export IMAGE_ID=c637391b-e00f-47fb-adb5-e8dfc4e224d4
    # export PACKAGES=mariadb-server
    #
    # trove-manage datastore_update ${DATASTORE} ""
    # trove-manage datastore_version_update ${DATASTORE} ${DATASTORE_VERSION} ${DATASTORE} ${IMAGE_ID} ${PACKAGES} 1
    # trove-manage datastore_update ${DATASTORE} ${DATASTORE_VERSION}
    Copy to Clipboard Toggle word wrap
    중요

    PACKAGES 변수의 값은 사용 중인 데이터 저장소에 따라 다릅니다. MySQL(모든 버전)의 경우 mysql-community-server 를 사용합니다. MariaDB 10.0의 경우 MariaDB-server 를 사용합니다.

2.1.2. 문제 해결

시작 시 인스턴스가 실패하면 SSH 키가 있는 이미지를 생성하고 문제 해결에 사용할 수 있습니다. trove-image-create 툴에는 이러한 용도로 --root-ssh-key 옵션이 있습니다. 이 옵션은 공개 키의 경로를 매개 변수로 사용하고 해당 키를 이미지에 삽입합니다. 예를 들면 다음과 같습니다.

# trove-image-create -i myimage.qcow2 -r liberty -s mysql --root-ssh-key ~/.ssh/id_rsa.pub
Copy to Clipboard Toggle word wrap

이 이미지를 기반으로 인스턴스에 액세스하려면 다음 단계를 따르십시오.

  1. 인스턴스와 연결된 보안 그룹을 편집합니다.
  2. SSH 포트를 엽니다.
  3. 또한 ICMP 허용을 고려하십시오.
  4. 인스턴스가 사설 네트워크에 있는 경우 인스턴스에 유동 IP를 추가해야 합니다.

다음 단계를 완료하면 다음 명령을 실행하여 인스턴스에 로그인할 수 있습니다.

# ssh root@INSTANCE_IP
Copy to Clipboard Toggle word wrap

법적 공지

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동