IDCFクラウド RDBを試してみた

(2016.5.31追記)
IDCFクラウドRDBサービスは、2016年8月31日をもって廃止することが通知されました。
(2016.5.31追記ここまで)

2015年7月、ずっと待っていたIDCFクラウドのRDB機能がやっとリリースされました。
MySQL互換で、驚きのマルチマスターです!

・IDCFクラウド RDB
http://www.idcf.jp/cloud/rdb/

今回はまずは、RDBのDBサーバーを起動して、クライアントからのアクセスを試してみました。

以下は、2015年7月末時点の情報です。
(2015年9月8日、仕様についていくつか間違いがあったので修正しました。)

以下、IDCFクラウドのクラウドコンソールにログインして操作します。
画像はクリックすると大きく表示されます。

isd準備1:ゾーンの有効化とネットワークの作成

ゾーンの有効化

IDCFクラウドでは、現在、tesla, pascal, henryの3つのゾーンがあります。
このうち、RDBはpascal, henryゾーンのみの提供となっています。

すでに、pascalまたはhenryゾーンを有効化して「ネットワーク」が存在すればそれをそのまま利用します。
どちらも無効であれば、どちらかのゾーンを有効化します。
ゾーンの有効化は、「コンピューティング」の「ゾーン管理」メニューで行います。

idcfrdb_zone

↑この画像はpascalゾーンを有効にしたものですが、以下の説明ではhenryゾーンを使用します。

ネットワークの確認

ゾーンを有効化すると、自動的に「ネットワーク」が作成されます。
IDCFクラウドの「ネットワーク」は、以下の機能をもった仮想ルータです。

  • インターネット接続
  • グローバルIPアドレス1個(NAT使用可)
  • ファイアウォール
  • ポートフォワード
  • プライベートネットワーク(他のユーザー、ネットワークとは独立している)
  • VPN(プライベートコネクト)

1ゾーンで1つめのネットワークは無料ですが、同一ゾーンで2つめ以降のネットワークは有料(20円/時間、上限10,000円/月)ですので注意しましょう。

「コンピューティング」の「ネットワーク」メニューで、作成されたネットワークの情報を確認します。

idcfrdb_networkinfo

  • ネットワーク名: henry-network1
  • CIDR: 10.5.0.0/22
  • ゲートウェイ: 10.5.0.1

グローバルIPアドレスは、「IPアドレス」メニューで確認できます。

idcfrdb_ipaddress

今回は、このネットワーク内に、RDB DBサーバーとクライアント用のサーバーを作成し、DBアクセスができることを確認します。

isd準備2:仮想マシンの作成

RDBにアクセスするクライアント用のサーバー(仮想マシン)を用意します。

仮想マシンの作成

仮想マシンの作成手順は、IDCFクラウドの「めちゃ楽ガイド(PDF)」を参照してください。
http://www.idcf.jp/cloud/pdf/IDCFCloud_installation_guide_nonreg.pdf

ここでは、仮想マシン作成時に以下のように指定します。
上記で作成したネットワーク上に作成するのがポイントです。

  • ゾーン: henry
  • イメージ: CentOS 6.6 64-bit
  • ネットワーク名: henry-network1
  • マシン名: rdbtestvm
  • プライベートIPアドレス: 10.5.0.11

ファイアウォール、ポートフォワード設定

「めちゃ楽ガイド(PDF)」を参考に、仮想マシンにSSHログインするための、以下のネットワーク設定を行います。

  • ファイアウォールで、TCP/22へのアクセスを許可。
  • ポートフォワードで、TCP/22へのアクセスを仮想マシンのTCP/22に転送。

仮想マシンにSSHログイン

上記で確認したグローバルIPアドレスを指定して、SSHログインします。

MySQLクライアントのインストール

RDBへのDBアクセスを確認するため、仮想マシンにMySQLクライアントをインストールします。

 # yum install mysql

...
インストール:
  mysql.x86_64 0:5.1.73-5.el6_6

依存性を更新しました:
  mysql-libs.x86_64 0:5.1.73-5.el6_6

isdRDB DBサーバーの作成

ネットワークとクライアントの準備ができたので、いよいよ、DBサーバーを作成します。
クラウドコンソールで「RDB」メニューに移動します。

idcfrdb_rdbmenu

RDB DBサーバーの作成は、AWS RDSを使ったことがあれば、理解しやすいと思います。

パラメーターグループの作成

MySQLのmy.cnfで設定するパラメータは、「パラメーターグループ」として編集可能です。
デフォルトで用意されているものを使っても構いませんが、「アクセスグループ」メニューで、新しいエントリーrdbtest-pgを作成してみます。
DBエンジンが、「Percona XtraDB Cluster 5.5.39」であることがわかります。

idcfrdb_createpg1

パラメーターグループを作成後、「パラメーターの編集/確認」タブでパラメータを編集できますが、ここではとりあえずデフォルトままとします。
各パラメータが動的に(再起動せずに)変更できるかどうか、表示されるのはうれしいですね。
(AWS RDSでは以前は表示されていたのですが、最近は表示されなくなりました。)

idcfrdb_editpg2

アクセスグループの作成

DBサーバーへのアクセス制限は、「アクセスグループ」として編集可能です。
「アクセスグループ」メニューで、新しいエントリーrdbtest-agを作成してみます。
AWSのセキュリティグループと似ていますが、セキュリティグループのように、アクセス元としてセキュリティグループを指定することはできません。

アクセス元としては、先ほど作成した仮想マシンのプライベートIPアドレス10.5.0.11/32を指定します。

idcfrdb_createag

なお、RDBは今のところ、パブリックアクセスを無効にする機能はなく、DBサーバーは必ずグローバルIPアドレスをもちます。
また、アクセスグループのデフォルトは、全公開(0.0.0.0/0に公開)で、そのままだとインターネットから不正アクセスも可能な状態となってしまいます。
アクセスグループを作成して、しっかりアクセス制限を行いましょう。

※仮想マシンと同様に、デフォルトは「アクセス拒否」となっていたほうがよいような。。

また、DBサーバーを作成したのち、アクセスグループを編集したときは、「適用」しないと編集内容がDBサーバーに反映されないので注意しましょう。

idcfrdb_editag

DBサーバーの作成

「DBサーバー」メニューでDBサーバーを作成します。

まず、「基本情報」を指定します。
ゾーンは「henry」
ネットワークとして、上記で作成した「henry-network1」
アクセスグループは、上記で作成した「rdbtest-ag」
をそれぞれ指定します。

ノード数は今回は1とします。
クラスター構成とする場合は、3ノード以上必要なので、2ノードは選択できません。

idcfrdb_createdb1

次に、「DB設定」を指定します。
パラメーターグループは、上記で作成した「rdbtest-pg」を指定します。
ボリュームの最大サイズは、500GBです。
自動バックアップと自動マイナーアップグレードの設定は、AWS RDSの「バックアップウィンドウ」「メンテナンスウィンドウ」と同じですね。
日本時間で設定できるのはうれしいです。
バックアップの保管期間は最大3日です。

idcfrdb_createdb2

確認のうえ、「申込む」ボタンをクリックすると、DBサーバーの作成が始まります。
作成処理の進捗状況は、「イベント」タブで確認できます。

2015-07-30 17:47:40 JST 	INFO 	Create instance job started
...
2015-07-30 18:00:50 JST 	INFO 	All Tasks for current job completed successfully

DBサーバーの一覧で、ステータスが「In Progress」から、「Provisioned」となれば、サーバーの作成は完了です。
何度か作成してみましたが、現時点では、13分程度かかります。

idcfrdb_createdb5

DBサーバーのネットワーク情報は「アクセス情報」タブで確認できます。

idcfrdb_createdb6

ここで、ホスト名のリンクをクリックすると、DBサーバーのアクセス先情報(AWS RDSにおける「エンドポイント」に相当)が表示されます。

idcfrdb_createdb7

同一ネットワーク内のクライアントからは、ここで表示されるプライベートDNSを指定してアクセスします。
インターネット越しでアクセスする場合は、パブリックDNSを指定してアクセスします。

※同一ゾーンかつ同一ネットワーク内のアクセスは無料ですが、異なるネットワーク間のアクセスや、インターネット越しのアクセスは、ネットワーク転送量課金(Inbound/Outboundの月間合計で3,240GBまで無料、それ以上は有料)のカウント対象となります。

クライアントからのアクセス確認

クライアントとして用意した仮想マシンから、MySQLアクセスを確認します。
mysqlコマンドで、先ほど確認したDBサーバーのプライベートDNSと、DBサーバー作成時に指定したDBユーザー、パスワードを指定します。

 # mysql -h <プライベートDNS>  -u <DBユーザー> -p

 ex.
 # mysql -h rdbtest_xxxx_private.rdb.jp-east.idcfcloud.com \
    -u rdbtestuser -p

Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 31
Server version: 5.5.39-36.0-25.11-log Percona XtraDB Cluster binary (GPL) 5.5.39-25.11, Revision 828, wsrep_25.11.r4023

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

statusコマンドで、MySQLのステータス情報を表示してみます。
「Percona XtraDB Cluster」であることがわかります。
バージョンの「5.5.39」は、「MySQL 5.5.39」をベースにしたことを意味するのでしょう。

mysql> status;
--------------
mysql  Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1

Connection id:          31
Current database:
Current user:           rdbtestuser@rdbtestvm.xxxxxdcfcloud.internal
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.5.39-36.0-25.11-log Percona XtraDB Cluster binary (GPL) 5.5.39-25.11, Revision 828, wsrep_25.11.r4023
Protocol version:       10
Connection:             rdbtest_xxxx_private.rdb.jp-east.idcfcloud.com via TCP/IP
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    latin1
Conn.  characterset:    latin1
TCP port:               3306
Uptime:                 13 min 49 sec

Threads: 4  Questions: 404  Slow queries: 10  Opens: 57  Flush tables: 6  Open tables: 24  Queries per second avg: 0.487
--------------

IDCFクラウド RDBのDBサーバーに接続できました!

isdその他RDBの機能

DBサーバー基本設定

基本的な設定をテンプレートとして保存できます。

idcfrdb_template

リソースグラフ

DBサーバーのリソース使用状況を確認できます。

idcfrdb_resource1

※グラフを選択して、時間範囲を指定できるようなのですが、今のところうまく選択表示されません。

ログ

以下のMySQLログを確認できます。

  • エラーログ mysqld.log
  • スロークエリログ slow-query.log
    • デフォルトでは無効。slow_query_log = OFF
  • 一般クエリログ general-query.log
    • デフォルトでは無効。general_log = OFF

idcfrdb_log

イベント通知設定

DBサーバーに関するイベント発生時やリソース使用状況が閾値を超えた場合、指定したメールアドレスにアラートを通知します。

※今のところ、インスタンス単位の指定、RDB申込時に登録したメールアドレス以外のアドレスへの通知などはできないようです。

idcfrdb_event1

isdまとめ

IDCFクラウド RDBのDBサーバーを作成し、クライアントからのアクセスを試してみました。
設定項目はAWS RDSと似ており、マネージドDBサーバーが簡単に作成できることがわかりました。
これから、マルチマスター機能のテストや、ベンチマークテストの実施などいろいろ試してみます。

IDCFクラウドは、キャンペーンで、新規登録で3,000円分のクーポン、RDBの申し込みで2015年8月末まで使える5,000円分のクーポンがもらえます。

・IDCFクラウド
http://www.idcf.jp/cloud/

マルチマスターのRDBが使えるクラウドサービスは他にない(?)と思いますので、興味のある方は試してみるとよいと思います。

(関連記事)
・新サービスIDCFクラウド~従来の「IDCフロンティアセルフクラウド」との違い
https://inaba-serverdesign.jp/blog/20141031/idcfcloud.html

・IDCFクラウド RDBマルチマスターを試してみた
https://inaba-serverdesign.jp/blog/20150819/idcfcloud_rdb_multimaster.html

・IDCFクラウドRDBとAWS RDSの仕様比較
https://inaba-serverdesign.jp/blog/20150819/idcf_rdb_aws_rds_spec.html

・IDCFクラウドRDBとAWS RDS, Auroraのベンチマーク
https://inaba-serverdesign.jp/blog/20150824/idcf_rdb_aws_aurora_benchmark.html

・IDCFクラウドRDBサービスの廃止について思うこと。
https://inaba-serverdesign.jp/blog/20160531/idcf_rdb_abolished.html
 

Follow me!