ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • trove 개념 잡기
    Cloud 2015. 2. 25. 09:00
    반응형

    OpenStack에서 관계형/비관계형 데이터베이스를 DBaaS로 제공하기 위한 프로젝트.

    Icehouse(2014. 04. 17)에서의 제공기능
    - 사용자/스키마 관리
    - Flavor/Cinder 볼륨 크기 변경
    - 전체 기능 지원 DB : MySQL, Percona
    - 일부 기능 지원 DB : MongoDB, Redis, Cassandra, Couchbase
    - 설정 그룹 : 설정 옵션들의 집합을 정의함.
    - 백업/복구 : 전체/증분 백업 지원

    Juno(2014. 10. 16)에서의 제공기능
    - mysql 인스턴스의 비동기 replication(master-slave replicas) 지원
    - 클러스터링 API 제공 : MongoDB 클러스터 지원
    - Neutron 지원. 기존에는 nova-network만 지원했었음.
    - PostgreSQL 지원.
    - Couchbase 백업/복구 지원
    - Trove 볼륨으로 제한된 Cinder 벡엔드 지원.
    - 커스텀 데이터저장소 환경변수를 정의할 수 있게 지원.
    - 한번 호출로 모든 데이터저장소 타입과 버전의 목록을 얻어올 수 있음.


    Production용으로 사용하고 있는 곳
    eBay
    - 2013년 중순부터 시작.
    - 전담팀이 있고 MySQL, MongoDB, Cassandra, Couchbase, Redis등을 제공함.

    HP
    - Helion에서 제공.

    Tesora
    - trove기반의 DBaaS 서비스 제공


    아키텍처


    API Server
    http를 통해서 인증/권한, 기본 명령어, 데이터베이스 관련된 기능들을 관리함.
    Task Manager(복잡한 비동기 작업 관리), Guest Agent(MySQL 사용자 목록 검색같은 단순한 작업 처리)와 통신함.
    API는 복잡한 작업을 처리하지 않음.
    단순히 요청을 받아서 검증한후 메세지로 변환해서 Task Manager나 Geust Agent로 전달하는 역할만 함.

    Message Bus
    노바(Nova) 아키텍쳐에서 가져왔음.
    일반적인 메세지 전달은 API 서버가 사용자 요청을 받으면서 시작됨.
    API 서버가 요청을 검증한뒤 유효한 요청을 경우 관련 워커(worker)의 큐 엔진으로 전달함.
    워커는 큐를 주시하고 있다가 작업 요청을 받으면 작업을 수행함.
    작업이 끝나면 원래 요청을 받았던 API 서버로 응답을 전달해서 요청을 했던 사용자에게 전달됨.

    Task Manager
    인스턴스 프로비저닝, 인스턴스 생명주기 관리, 인스턴스 운영등의 작업등을 수행.
    API 서버에서 메세지를 받아서 처리.
    여러개의 분산된 시스템에 걸쳐서 일어나는 프로세스 흐름을 관리함.
    stateful 서비스.
    stateful 처리를 하는동안 Task Manager노드가 오프라인상태가되면 작업이 실패함.
    Task Flow 시스템은 실행시간이 긴 작업용으로 구현되어 있음.

    Guest Agent
    게스트 인스턴스에서 실행되는 서비스.
    데이터저장소 자체에 대한 명령을 수행하고 관리함.
    각 데이터저장소 구현은 그 데이터저장소용 작업에 대한 권한이 있는 Guest Agent 구현을 가지고 있음.
    즉, 레디스 게스트는 MySQL 게스트하고 다른 방식으로 작동함.
    생성, 사이즈변경 같은 기본 동작은 반드시 구현되어 있어야 함.

    Conductor
    호스트에서 작동하고, 호스트 정보를 업데이트하기 위해 게스트 인스턴스에서 메세지를 받는 역할을 함.
    인스턴스 상태나 현재 백업 상태등의 정보.
    conductor가 있으면 게스트 인스턴스에서 직접 호스트의 데이터베이스에 연결하지 않아도 됨.
    conductor는 메세지버스를 통해 RPC 메세지를 받아서 관련 작업을 수행.
    conductor는 RabbitMQ 토픽을 받는다는 점에서 게스트-에이전트와 비슷하지만, 호스트에 있다는것이 다름.
    guest agent는 conductor_queue로 설정된 토픽을 이용해 conductor와 메세지를 주고받음. 기본값은 trove-conductor.


    참고
    https://wiki.openstack.org/wiki/Trove
    https://wiki.openstack.org/wiki/TroveArchitecture
    http://www.slideshare.net/tesoracorp/4-open-stack-trove-day-ebay-final
    http://www.slideshare.net/mirantis/trove-d-baa-s-28013400
    https://wiki.openstack.org/wiki/ReleaseNotes/Icehouse#OpenStack_Database_service_.28Trove.29
    https://wiki.openstack.org/wiki/ReleaseNotes/Juno#OpenStack_Database_service_.28Trove.29
    http://docs.hpcloud.com/helion/devplatform/install/#install-database

    반응형

    'Cloud' 카테고리의 다른 글

    RabbitMQ 파악하기  (0) 2015.03.11
    AMQP(Advanced Message Queuing Protocol)  (0) 2015.03.10
    openstack 개념잡기  (0) 2015.02.23
    내가 만든 소스를 포함해서 docker 이미지 빌드하기  (0) 2015.01.30
    Dockerfile 구조  (0) 2015.01.28

    댓글

Designed by Tistory.