Usage DBaaS with Trove Usage Usage DBaaS on k8s CLI

使い方 - K2HDKC DBaaS CLI

K2HDKC DBaaS CLI (Command Line Interface)の使い方を説明します。
K2HDKC DBaaS CLI(Command Line Interface)は、OpenStack のコンポーネントと K2HR3システムと連携します。

K2HDKC DBaaS CLI(Command Line Interface)は、K2HR3 CLIのプラグインとして動作します。

ここでは、K2HDKC DBaaS CLI でK2HDKCクラスターの作成、スケール、削除について、また自動化されたK2HDKCスレーブの起動・確認方法について説明します。

1. インストール

K2HDKC DBaaS CLI(Command Line Interface)は、packagecloud.io でパッケージとして提供しています。
以下でパッケージとしてインストールする場合の説明をします。
ソースコードを展開して利用する場合は、k2hdkc_dbaas_cliリポジトリを参照してください。

1.1. リポジトリ設定

まず、packagecloud.ioのリポジトリの設定をします。

$ curl -s https://packagecloud.io/install/repositories/antpickax/stable/script.deb.sh | sudo bash
  または
$ curl -s https://packagecloud.io/install/repositories/antpickax/stable/script.rpm.sh | sudo bash

1.2. インストール

次に、K2HDKC DBaaS CLI(Command Line Interface)をインストールします。

$ apt install k2hdkc-dbaas-cli
  または
$ yum install k2hdkc-dbaas-cli

各コマンドはお使いのOS環境に応じたパッケージマネージャーのものをお使いください。

K2HDKC DBaaS CLI(Command Line Interface)は、K2HR3 CLIのプラグインです。
よって、K2HR3 CLIもインストールされます。

1.3. 確認

以下のコマンドを実行して、正常にインストールされているか確認してください。

$ k2hr3 --version

K2HR3 Command Line Interface - 1.0.1(d12a87d)

Copyright 2021 Yahoo Japan Corporation.

K2HR3 is K2hdkc based Resource and Roles and policy Rules,
gathers common management information for the cloud.
K2HR3 can dynamically manage information as "who", "what",
"operate". These are stored as roles, resources, policies
in K2hdkc, and the client system can dynamically read and
modify these information.

This software is released under the MIT License.

-----------------------------------------------------------
K2HDKC DBaaS Command Line Interface - 1.0.0(26cdbcc)

Copyright 2021 Yahoo Japan Corporation.

The K2HDKC DBaaS CLI (Command Line Interface of Database as a
Service for K2HDKC) is a tool for building a K2HDKC cluster
in conjunction with K2HR3.
The Trove version of K2HDKC DBaaS is available, but this
K2HDKC DBaaS CLI allows you to build K2HDKC clusters without
the need for a Trove system.
With the basic components of OpenStack and the K2HR3 system
that works with it, you can easily build a K2HD KC cluster
using the K2HDKC DBaaS CLI.

This software is released under the MIT License.

K2HDKC DBaaS CLIと、K2HR3 CLIのバージョン番号が表示されていれば問題ありません。

2. K2HDKC DBaaS CLIコマンド

K2HDKC DBaaS CLI(Command Line Interface)は、K2HR3 CLIのプラグインであり、K2HDKC DBaaS CLI を実行するには k2hr3 プログラムを使います。
K2HDKC DBaaS CLIとしての機能は、K2HR3 CLIのひとつのサブコマンドである databaseで提供されます。

K2HDKC DBaaS CLIのサブコマンドの機能は、以下のようにして確認できます。

$ k2hr3 database --help

databaseサブコマンドの使い方は、ヘルプを参照してください。

3. K2HDKC DBaaS CLI 環境設定

K2HDKC DBaaS CLI は、K2HR3 および OpenStack と連動して動作します。

それぞれのシステムは、構築済みであることが前提となっています。
K2HR3 の構築については、こちらを参照してください。
予めK2HR3システムは、OpenStack と連携するように構築してください。

K2HDKC DBaaS CLI コマンドは、K2HR3 システムのK2HR3 REST APIと、OpenStackIdentity のURIにアクセスします。
コマンド実行毎に、これらのURIを指定することができますが、予めURIをK2HR3 CLIのコンフィグレーションとして設定することで、この操作を省略できます。
以下のようにして各URIを設定します。

$ k2hr3 config set K2HR3CLI_API_URI https://localhost:3000
Succeed : Set "K2HR3CLI_API_URI: https://localhost:3000"

$ k2hr3 config set K2HR3CLI_OPENSTACK_IDENTITY_URI https://localhost/identity
Succeed : Set "K2HR3CLI_OPENSTACK_IDENTITY_URI: https://localhost/identity"

https://localhost:3000と、https://localhost/identityは、それぞれ K2HR3 REST API のURIと、OpenStack IdentityのURIに置き換えてください。

以降は、これらのURIが設定されている前提で説明してます。

4. K2HDKCクラスターの構築

K2HDKCクラスター (サーバーノード)を構築する手順を説明します。

まず、K2HR3システムが、OpenStack と連携しており、以下の共通のユーザ名、テナント(プロジェクト)であることを前提とします。

4.1. K2HR3 トークン

K2HDKC クラスターを構築するために、まずK2HR3システムのScopedトークンが必要となります。
また、OpenStack のScopedトークンも必要となります。
これらのトークンは、以降で説明するコマンド実行毎に指定することができますが、予めK2HR3 CLIのコンフィグレーションとして設定することで、この操作を省略できます。
よって以下の説明では、K2HR3 CLIのコンフィグレーションにトークンを保管するオプションを含んだ事例を示しています。

4.1.1. OpenStackトークン

まず、OpenStackのScopedトークンを取得し、K2HR3 CLIのコンフィグレーションに保管します。

$ k2hr3 database openstack token --op_user demo --op_tenant demo --interactive --saveconfig
OpenStack User passphrase: ********
gAAAAABgYV-h9MUf_gmfKRjx5cOGilOzg7KCSjccDwoPsYYTIao8gyA_VAozAFRVnconTsYQNTxYe01OWD8bmi_zcoeFzTEmqalt0INtHgP4-XXXXdVKWPNJ7o41NMCk95Oz6f3h6IJZPjYeMItymRBclLXKF4NykELxwgBl6ZqK-Z5laTRY5Njw_v-6ulhR9EzPyGP_gDqU

上記では、--interactive(-i)オプションを指定することで、パスフレーズをコマンドラインで入力せず、対話式に入力しています。

4.1.2. K2HR3トークン

次に、上記で取得したOpenStackのトークンを使い、K2HR3のUnscopedおよびScopedトークンを取得し、K2HR3 CLIのコンフィグレーションに保管します。
K2HR3のScopedトークンは、ユーザクレデンシャルを指定して取得することもできます。
詳しくは、こちらを参照してください。

$ k2hr3 token create token_optoken --tenant demo --saveconfig
gAAAAABgYWFJDRoCI0R96YxUkbjE0A7b6OLIoZtkdC36yMvfkSha_1-zxOAmLYYYYWGJhk1O2ZV9FElRyCLvc5_8VNTJfh1HKk2ayANoDiv6LFk6O2DE40QXDR2yed70akOAUZNcJ_Dasbkt6OeSCMX6619OZ6fbpeYsingBC3-fY2XfPwQmc2QA4pFlzwsa34Di532MxtST

4.2. K2HDKCクラスター設定

K2HDKC クラスターのサーバーノードを作成する前に、K2HDKC クラスターの情報をK2HR3システムに設定します。

作成するK2HDKC クラスターmyclusterとして、以下のコマンドを実行します。

$ k2hr3 database create mycluster --dbaas_create_user k2hdkcuser
Succeed : Phase : Create "mycluster" Resource
Succeed : Phase : Create "mycluster/server" Resource
Succeed : Phase : Create "mycluster/slave" Resource
Succeed : Phase : Create "mycluster" Policy
Succeed : Phase : Create "mycluster" Role
Succeed : Phase : Create "mycluster/server" Role
Succeed : Phase : Create "mycluster/slave" Role
Succeed : Registration of cluster "mycluster" with K2HR3 is complete

上記のk2hdkcuserは、K2HDKC クラスターのサーバーノードで実行されるk2hdkcchmpxプロセスの実行ユーザです。
このコマンドの実行により、K2HR3のリソース(RESOURCE)、ポリシー(POLICY-RULE)、ロール(ROLE)が適切に設定されます。
K2HR3に設定された情報を確認するには、こちらの操作方法を使って、Web上で確認できます。

4.3. OpenStackの情報

K2HDKC クラスターのサーバーノード(Virtual Machine)は、連携しているOpenStackのインスタンスとして起動します。
OpenStackのインスタンスを起動するために、イメージ名(もしくはID)と、フレーバー名(もしくはID)が必要となります。
以下のコマンドを使い、利用できるイメージ名(もしくはID)と、フレーバー名(もしくはID)を確認できます。

$ k2hr3 database list images --json
[
    {
        "name": "my-ubuntu-2004-image",
        "id": "59aa4ab3-7e89-42fb-83f9-093d3c83737e"
    },
    {
        "name": "my-centos-8-image",
        "id": "fd4b4411-c6b8-4f0a-95d7-fe5a9dfbca5d"
    },
    {
        "name": "cirros-0.4.0-x86_64-disk",
        "id": "075035da-db6d-4b1c-bc8b-7570c505d618"
    }
]

$ k2hr3 database list flavors --json
[
    {
        "name": "m1.tiny",
        "id": "1"
    },
    {
        "name": "m1.small",
        "id": "2"
    },
    {
        "name": "m1.medium",
        "id": "3"
    },
    {
        "name": "m1.large",
        "id": "4"
    },
    {
        "name": "m1.xlarge",
        "id": "5"
    },
    {
        "name": "cirros256",
        "id": "c1"
    },
    {
        "name": "ds512M",
        "id": "d1"
    },
    {
        "name": "ds1G",
        "id": "d2"
    },
    {
        "name": "ds2G",
        "id": "d3"
    },
    {
        "name": "ds4G",
        "id": "d4"
    }
]

次に説明するK2HDKC クラスターのサーバーノード(Virtual Machine)の起動では、イメージ名、フレーバー名を指定できます。
しかし、イメージIDおよびフレーバーIDを指定した方が、良好なパフォーマンスで起動できます。

4.4. K2HDKCサーバーノード

K2HDKC クラスターを構築の最後に、K2HDKCサーバーノード(Virtual Machine)を起動します。
以下のコマンドを使って、起動します。
前述したように、イメージIDおよびフレーバーIDを指定して起動します。

$ k2hr3 database add host server mycluster myserver1 --op_keypair demo --op_flavor_id d2 --op_image_id 59aa4ab3-7e89-42fb-83f9-093d3c83737e
Succeed : Add server host(myserver1 - "99c0d9e5-a050-45f8-829c-fee6975310ad") for mycluster cluster.

--op_keypair demoは、予めOpenStackに設定しておいたdemoユーザのキーペアです。

上記により、K2HDKC クラスター myclusterのサーバーノードとして、myserver1ホストが起動できます。
複数のK2HDKC クラスターのサーバーノードを起動するには、上記のコマンドをホスト名を変更しながら繰り返します。

5. スレーブノードの起動

上記までで、K2HDKC クラスターのサーバーノードが起動出来ました。
ここでは、そのサーバーノードに接続するスレーブノードを起動します。
以下のようにコマンドを実行します。

$ k2hr3 database add host slave mycluster myslave1 --op_keypair demo --op_flavor_id d2 --op_image_id 59aa4ab3-7e89-42fb-83f9-093d3c83737e
Succeed : Add slave host(myslave1 - "0e358601-1a0f-4e43-a18a-28e7a9d14813") for mycluster cluster.

上記により、スレーブノードとしてmyslave1が起動できます。

6. K2HDKCクラスターのノード破棄

起動したK2HDKC クラスターのサーバーノードおよびスレーブノードの破棄ができます。
以下のコマンドにて実行できます。

$ k2hr3 database delete host mycluster myserver4
Succeed : Delete host myserver4 from mycluster cluster(OpenStack and K2HR3).

このコマンドは、サーバーノード、スレーブノードの区別はありません。
いずれのノードであってもホスト名を指定するだけで破棄できます。

7. K2HDKCクラスターの破棄

K2HDKC クラスターの全サーバーノードおよびスレーブノード、設定情報のすべてを破棄できます。
以下のコマンドにて実行できます。

$ k2hr3 database delete cluster mycluster
[IMPORTANT CONFIRM] You will lose all data/server in your cluster, Do you still want to run it? (y/n) y
[NOTICE] Delete all of the cluster configuration, data, cluster hosts, and so on.
Succeed : Delete all mycluster cluster(OpenStack and K2HR3).

K2HDKC クラスターの削除の場合には、確認のためのプロンプトが表示されます。
このプロンプトを表示したくない場合には、--yes(-y)オプションを指定して、実行してください。

8. まとめ

上記、1から6までの操作で、OpenStackK2HDKC クラスターを簡単に構築できます。
必要となるのは、OpenStackに連動するK2HR3システムだけです。

Usage DBaaS with Trove Usage Usage DBaaS on k8s CLI