Database-as-a-Service 가이드
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 인스턴스를 설정할 수 있습니다. 이렇게 하려면 다음 단계를 수행합니다.
관리 컨트롤러에서 다음을 수행합니다.
RabbitMQ 사용자 및 암호를 DBaaS 테넌트와 공유하지 않는 사용자 지정 값으로 설정합니다. 예를 들어
게스트계정과/기본 가상 호스트를 변경된 암호로 사용할 수 있습니다.rabbitmqctl change_password guest password
# rabbitmqctl change_password guest passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 암호는 서비스가 메시지 버스에 연결되도록 설정된 모든 구성 파일에서 변경됩니다.
서비스 카탈로그 조회에서 별도의 호스트에서 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
# 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 RegionOneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
DBaaS 컨트롤러에서 다음을 수행합니다.
원격 관리 컨트롤러 호스트에서 WSGI 구성에서 인증 토큰 필터를 지정합니다. IP를 관리 컨트롤러 호스트의 IP 주소로 교체하여
/etc/trove/api-paste.ini파일의 다음 옵션과 값을 사용합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 관리자 사용자를 추가하여 DBaaS 게스트 에이전트에 관리 컨트롤러에 사용된 비밀과 다른 시크릿이 있는지 확인합니다.
rabbitmqctl add_user isolated isolated rabbitmqctl set_permissions isolated ".*" ".*" ".*"
# rabbitmqctl add_user isolated isolated # rabbitmqctl set_permissions isolated ".*" ".*" ".*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 옵션과 값을
/etc/trove/trove.conf파일에 배치하여 로컬 RabbitMQ 인스턴스에 연결하고 인증하도록 DBaaS 컨트롤 플레인을 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
관리 컨트롤러에서
/etc/trove/trove-guestagent.conf파일을 다음과 같이 편집합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.1. ACL 정책 링크 복사링크가 클립보드에 복사되었습니다!
또는 RabbitMQ 가상 호스트에서 제공하는 ACL 정책을 활용하여 보안을 개선할 수 있습니다. 이 경우 별도의 권한을 포함하여 각 가상 호스트에 별도의 사용자를 할당할 수 있습니다. 예를 들어 /isolated 라는 가상 호스트를 정의하고 가상 호스트에 대해 격리된 사용자에게 적절한 권한을 할당할 수 있습니다. 이렇게 하려면 다음 단계를 수행합니다.
기본
/가상 호스트의게스트계정 암호를 변경합니다.rabbitmqctl change_password guest password
# rabbitmqctl change_password guest passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 새 사용자 및 가상 호스트를 추가하고 권한을 적절하게 설정합니다.
rabbitmqctl add_user isolated isolated rabbitmqctl add_vhost /isolated rabbitmqctl -p /isolated set_permissions isolated ".*" ".*" ".*"
# rabbitmqctl add_user isolated isolated # rabbitmqctl add_vhost /isolated # rabbitmqctl -p /isolated set_permissions isolated ".*" ".*" ".*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow DBaaS 구성을 편집합니다. 편집할 두 개의 파일이 있습니다.
/etc/trove/trove-guestmanager.conf. 이 파일은 puppet-trove /trove-conductor.conf에서 생성되며 DBaaS 인스턴스의 비동기 상태 업데이트를 위해 DBaaS 제어 플레인 서비스를 구성하는/etc/trove/trove-conductor.conf입니다. RabbitMQ 설정은 두 파일에 대해 동일합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
이 접근 방식의 장점은 별도의 호스트와 메시지 큐를 사용하는 시나리오와 비교하면 단순성입니다. 이는 프로비저닝이 자동화된 방식으로 수행되는 경우(예: 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
# yum install openstack-trove-images
다음과 같은 기본 옵션을 사용할 수 있습니다.
| 옵션 | 설명, 매개변수 |
|---|---|
|
| 사용할 기본 이미지입니다. QEMU 이미지(qcow2)가 지원됩니다. 이미지 파일 이름(및 선택적으로 해당 경로)을 pamater로 지정합니다. |
|
|
사용하려는 OpenStack 버전입니다. |
|
| 배포할 데이터 저장소입니다. 지원되는 데이터 저장소는 머리말 에 나열되며 잠재적인 매개변수는 다음과 같습니다.
|
예 2.1. 이미지 사용자 정의
예를 들어 다음과 같은 방법으로 도구를 사용할 수 있습니다.
trove-image-create -s mysql -r liberty -i myimage.qcow2
# trove-image-create -s mysql -r liberty -i myimage.qcow2
이렇게 하면 MariaDB 5.5를 추가하고 Red Hat OpenStack Platform 8(Liberty)에서 이 디렉토리에 있는 myimage.qcow2 파일에 저장된 이미지를 사용자 지정할 수 있습니다.
RHEL 7 이미지로 작업하는 경우 사용해야 하는 추가 옵션이 있습니다.
| 옵션 | 인식된 매개변수 및 해당 구문 | 설명 |
|---|---|---|
|
|
USER | Red Hat 인증 정보를 사용하여 서브스크립션 관리자에게 등록합니다. |
|
|
| 지정된 또는 자동으로 결정된 서브스크립션 풀을 시스템에 연결합니다. |
예 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
# trove-image-create -s mysql -r liberty -i ../../images/rhel-mariadb55.qcow2 --sm-register admin@example.com:password:123456 --sm-pool auto
이렇게 하면 이전 예제와 유사한 방식으로 이미지를 사용자 지정할 수 있지만 Red Hat 로그인 이름 admin@example.com, 암호 123456 및 가장 일치하는 서브스크립션을 사용하여 시스템을 등록합니다.
2.1.1. Database-as-a-Service Management에 이미지 로드 링크 복사링크가 클립보드에 복사되었습니다!
이미지 사용자 지정이 완료되면 다음 단계를 수행합니다.
이미지 서비스에 이미지를 업로드합니다. 이렇게 하려면 다음과 유사한 명령을 실행합니다.
openstack image create rhel7-mariadb55 --disk-format qcow2 --container-format bare --public < myimage.qcow2
# openstack image create rhel7-mariadb55 --disk-format qcow2 --container-format bare --public < myimage.qcow2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 명령의 출력에서 업로드한 이미지의 ID를 가져옵니다. 이 ID는 다음과 같아야 합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 경우 ID는 c637391b-e00f-47fb-adb5-e8dfc4e224d4 입니다.
DBaaS 관리 데이터 저장소를 업데이트하여 원하는 데이터 저장소 및 버전의 인스턴스를 시작하는 데 사용할 새 이미지의 레코드를 만듭니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요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
# trove-image-create -i myimage.qcow2 -r liberty -s mysql --root-ssh-key ~/.ssh/id_rsa.pub
이 이미지를 기반으로 인스턴스에 액세스하려면 다음 단계를 따르십시오.
- 인스턴스와 연결된 보안 그룹을 편집합니다.
- SSH 포트를 엽니다.
- 또한 ICMP 허용을 고려하십시오.
- 인스턴스가 사설 네트워크에 있는 경우 인스턴스에 유동 IP를 추가해야 합니다.
다음 단계를 완료하면 다음 명령을 실행하여 인스턴스에 로그인할 수 있습니다.
ssh root@INSTANCE_IP
# ssh root@INSTANCE_IP