TOP What's new

K2HDKC DBaaS

K2HDKC DBaaS (Database as a Service for K2HDKC) は、K2HR3を使い、OpenStack と連動して、分散KVSである K2HDKC の環境を構築するDatabase as a Serviceです。

背景

Yahoo! JAPANがオープンソースとして公開する一連のプロダクト群のAntPickaxは、分散KVSである K2HDKC を公開しています。
この K2HDKC を簡単に利用できるように、DBaaS(Database as a Service)として提供することを計画しました。
そして、公開されているK2HR3は、これを実現するために十分な機能を提供しています。
私たちは、このK2HR3を中心に、OpenStack と連動してDBaaS(Database as a Service)を実現しました。

K2HDKC DBaaS (Database as a Service for K2HDKC) は、以下のAntPickaxプロダクトを使い、構成されています。

K2HDKC - K2Hash based Distributed Kvs Cluster

分散KVSであり、K2HDKC DBaaSの核となるプロダクトです。

CHMPX - Consistent Hashing Mq inProcess data eXchange

ネットワークを跨ぐプロセス間におけるバイナリ通信を行うための通信ミドルウエアであり、K2HDKCが内部で利用します。

K2HR3 - K2Hdkc based Resource and Roles and policy Rules

RBAC (Role Based Access Control) システムであり、K2HDKC DBaaS で作成されるK2HDKCクラスターの構成を管理します。

概要

K2HDKC DBaaS (Database as a Service for K2HDKC) が提供する DBaaS(Database as a Service) は、以下の2つの方法を提供します。

Trove(Trove is Database as a Service for OpenStack) 対応

OpenStack のプロダクトである Trove(Trove is Database as a Service for OpenStack) を使ったDBaaS(Database as a Service)です。
これは、Trove(Trove is Database as a Service for OpenStack)のひとつのデータベース(分散KVS)として、K2HDKC を組み込み、DBaaSを実現します。

OpenStackとK2HDKC DBaaS CLI(Command Line Interface)

OpenStackの環境を持っていることを前提とし、K2HDKC DBaaS CLI(Command Line Interface)を使って、DBaaS(Database as a Service)が実現できます。

Trove(Trove is Database as a Service for OpenStack) 概要

Trove(Trove is Database as a Service for OpenStack)の一つのDatabaseとして提供される K2HDKC DBaaS (Database as a Service for K2HDKC) は、OpenStack のコンポーネントと連携し、DBaaS(Database as a Service)としての機能を提供します。

K2HDKC DBaaS with Trove Overview

K2HDKC DBaaS でK2HDKCクラスター構築などの操作は、すべてDashboard(Trove Dashboard)もしくは、Trove CLI(openstackコマンド)から実行できます。
K2HDKCクラスターの構築、削除、クラスターへサーバーノードの追加・削除(スケール)、バックアップ、リストアの操作ができます。
また、ユーザが K2HDKC DBaaS で構築したK2HDKCクラスターへ簡単に接続し、利用できるようにするため、K2HDKCスレーブノードの起動、自動コンフィグレーションをサポートします。

K2HDKC DBaaS の大まかなシステムの説明をします。

OpenStack コンポーネント

K2HDKC DBaaS には、OpenStackのコンポーネントが必要となります。
OpenStackの各コンポーネントおよび全体の構築はユーザが行います。
既存のOpenStackに、K2HDKC DBaaS を組み込むことも可能です。
Trove は、OpenStack コンポーネントのひとつであり、K2HDKC DBaaS は、TroveのDatabaseのひとつとして組み込まれています。
つまり、このTroveのタイプのK2HDKC DBaaSは、TroveのDatabaseの種類にK2HDKCを拡張したシステムです。
K2HDKC DBaaSの基本的な仕様は、すべてTroveに従っており、Troveの操作でDBaaSとしての操作・動作を行えます。

K2HR3 システム

K2HDKC DBaaSは、AntPickaxプロダクトの一つである K2HR3 システムを必要とします。
K2HR3 システムとTroveが連携し、DBaaS機能を実現しています。
K2HR3は、OpenStackと連携できるように設計されており、バックエンドのシステムとしてTroveと連携します。

K2HR3システムは、OpenStackのコンポーネントやインスタンス(Virtual Machine)からアクセスできるネットワーク環境に構築する必要があります。
例えば、ネットワーク内で到達できる環境であればよいため、K2HDKC DBaaSと連携するOpenStackが作成するインスタンス(Virtual Machine)の中で起動することもできます。

K2HDKC クラスター

これは、K2HDKC DBaaS が構築し、起動するK2HDKCのクラスターです。
OpenStackの管理する複数のインスタンス(Virtual Machine)でK2HDKCサーバーノードが起動され、クラスターを構成します。
K2HDKC DBaaS の機能は、このK2HDKCクラスターの構築、破棄、制御(スケール、データマージ)することです。

K2HDKC スレーブノード

K2HDKC DBaaSにより作成されたK2HDKCクラスター(サーバーノード)に接続するノード(クライアント)のことです。

K2HDKC DBaaS Slave Overview

K2HDKCスレーブノードは、手動で設定し、起動できます。
しかし、K2HDKC DBaaS の機能を使うことにより、自動的なコンフィグレーションをサポートできます。
このためには、K2HDKC DBaaS と連携しているOpenStackのインスタンス(Virtual Machine)をK2HDKCのスレーブノードとして起動します。 このインスタンス(Virtual Machine)を起動するときに、K2HR3が提供する User Data Script for OpenStackデータを使用します。
起動後のインスタンス(Virtual Machine)は、K2HR3システムと連動します。
その結果、K2HDKCクラスターに接続するために必要なK2HDKC設定や、K2HDKCスレーブノードに必要なすべてのパッケージがインストール・設定され、K2HDKCスレーブノードの管理の自動化ができます。

このように起動したK2HDKCスレーブノードは、K2HDKCサーバーノードのスケールに応じて、接続・切断などの処理を自動化することができます。
そして、K2HDKCスレーブノード上のユーザのプログラムから、K2HDKクラスターの構成を隠蔽し、ユーザのプログラムはサーバーノードの構成を意識する必要がなくなり、開発者・運用者の負荷を低減できます。

K2HDKC DBaaS CLI(Command Line Interface) 概要

K2HDKC DBaaS CLI(Command Line Interface)を使ったDBaaS(Database as a Service)は、Trove(Trove is Database as a Service for OpenStack)必要とせずOpenStack のコンポーネントとのみ連携します。
既にOpenStack環境を持っており、Trove(Trove is Database as a Service for OpenStack)コンポーネントを組み込むことが困難な環境において、DBaaS(Database as a Service)としての機能を実現できます。

K2HDKC DBaaS CLI Overview

K2HDKC DBaaS でK2HDKCクラスター構築などの操作は、すべてK2HDKC DBaaS CLI(Command Line Interface)から実行できます。
K2HDKCクラスターの構築、削除、クラスターへサーバーノードの追加・削除(スケール)の操作ができます。
また、構築した K2HDKCクラスターへ簡単に接続し、利用できるようにするため、K2HDKCスレーブノードの起動、自動コンフィグレーションをサポートします。

K2HDKC DBaaS CLI(Command Line Interface) によるDBaaS(Database as a Service)の大まかなシステムの説明をします。

OpenStack コンポーネント

K2HDKC DBaaS CLI は、OpenStackのコンポーネントと連携します。
このOpenStackのコンポーネントは、既にあるシステムを想定しており、インスタンス(Virtual Machine)を起動できる環境であれば、K2HDKC DBaaS CLIは連携できます。

K2HR3 システム

Troveタイプの K2HDKC DBaaSと同様に、AntPickaxプロダクトの一つである K2HR3 システムを必要とします。

K2HDKC DBaaS CLIが、K2HR3 システム、OpenStackのコンポーネントを操作し、DBaaS機能を実現しています。

また、Troveタイプと同様に、K2HR3システムは、OpenStackのコンポーネントやインスタンス(Virtual Machine)からアクセスできるネットワーク環境に構築する必要があります。
例えば、ネットワーク内で到達できる環境であればよいため、K2HDKC DBaaSと連携するOpenStackが作成するインスタンス(Virtual Machine)の中で起動することもできます。

K2HDKC クラスター

これは、K2HDKC DBaaS CLI が構築し、起動するK2HDKCのクラスターです。
OpenStackの管理する複数のインスタンス(Virtual Machine)でK2HDKCサーバーノードが起動され、クラスターを構成します。
K2HDKC DBaaS CLI の機能は、このK2HDKCクラスターの構築、破棄、制御(スケール、データマージ)することです。

K2HDKC スレーブノード

K2HDKC DBaaS CLIにより作成されたK2HDKCクラスター(サーバーノード)に接続するノード(クライアント)のことです。

K2HDKC DBaaS Slave Overview

K2HDKCスレーブノードも、K2HDKC DBaaS CLIを使い、起動できます。
そして、K2HDKC DBaaS CLI により、自動的なコンフィグレーションがサポートされます。
K2HDKCスレーブノードは、K2HDKC DBaaS CLI により起動されるOpenStackのインスタンス(Virtual Machine)です。
K2HDKCスレーブノードのインスタンス(Virtual Machine)は、K2HR3が提供する User Data Script for OpenStackデータを使用します。
また、インスタンス(Virtual Machine)は、K2HR3システムと連動しており、K2HDKCクラスターに接続するために必要なK2HDKC設定や、K2HDKCスレーブノードに必要なすべてのパッケージがインストール・設定され、K2HDKCスレーブノードの管理の自動化ができます。

Troveタイプと同様に、起動したK2HDKCスレーブノードは、K2HDKCサーバーノードのスケールに応じて、接続・切断などの処理を自動化することができます。
そして、K2HDKCスレーブノード上のユーザのプログラムから、K2HDKクラスターの構成を隠蔽し、ユーザのプログラムはサーバーノードの構成を意識する必要がなくなり、開発者・運用者の負荷を低減できます。

TOP What's new