さくらのコンテナホスティングサービス・ArukasでMySQLサーバーを立てる

先日、本サービスがリリースされたさくらインターネットのコンテナホスティングサービス・Arukas。Freeプランだと無料で1インスタンスが稼働できるので、MySQLサーバーを立ててみました。

コンテナホスティングサービスって?

コンテナホスティングサービスは、Dockerコンテナの運用ができるサービス。VPSなどと違って、サーバー周りの設定はすべてサービス側がやってくれるので、使いたいコンテナを選んで設定を項目を入力するだけで、すぐにサーバーを立てることができます。

また、負荷が上がった際には管理画面でインスタンス数を増やすだけで負荷分散ができるので、AWSなどと違って専門知識がなくてもサービス規模に合わせてサーバーを強化できます。

実際にMySQLサーバーを立ててみる

<作業の前に>
Freeプランでも、実際にアプリを作成するとなるとクレジットカードの登録が必要なので、クレジットカードを用意してArukasに登録しておいてください。

では、実際にコンテナを起動してサーバーを立ててみます。

Arukasのメニューから「アプリケーションを作成」をクリックして、アプリの設定をします。

アプリの設定メニューが出てきます。各項目は、

App Name -> アプリ名を自由に入力
Image -> Dockerhubのイメージ名を入力
Service Plan -> プランを選択
Instances -> このアプリで使うインスタンス数(コンテナ数)を入力
Endpoint -> アプリにアクセスする際のURL
Custom Domain -> ドメインを使う場合は入力
Port*( 20個まで ) -> アプリで開放するポートを追加
ENV( 20個まで ) -> docker runするときの環境変数(-eフラグで入力する内容)
Command -> コンテナ起動後に実行するコマンド

となっています。

今回はMySQLサーバーなので、

App Name -> c0d3man-mysql
Image -> mysql:5.7
Service Plan -> Free
Instances -> 1
Endpoint -> c0d3man-mysql
Custom Domain -> なし
Port*( 20個まで ) -> 3306
ENV( 20個まで ) -> MYSQL_ROOT_PASSWORD = pass
Command -> なし

とします。

「MYSQL_ROOT_PASSWORD = pass」の「pass」の部分は、rootでログインする際に使うパスワードとなります。

入力が終わったら、「アプリケーションの作成」をクリックするとコンテナが作成されます、

作成後、右上の三角マークを押せばアプリが起動します。

作成したMySQLサーバーにアクセスする

ここがちょっとわかりにくいのですが、例えばコマンドラインからmysqlサーバーにログインする際は、

mysql -h ホストアドレス -u root -p -P ポート番号

という感じでアクセスすることになりますが、

Arukasで立てたサーバーの場合、

mysql -h 「アプリの「Port」のURL(http://はなし)」 -u root -p -P 「アプリの「Port」のURLの:のあとのポート番号」

となります。

PortのURLが、「http://seaof-111-22-33-444.jp-tokyo-02.arukascloud.io:55555 (3306/tcp)」だった場合、

mysql -h seaof-111-22-33-444.jp-tokyo-02.arukascloud.io -u root -p -P 55555

となります。

エンドポイントのURLや、アプリを作成した時に設定した開放ポート(ここでは3306)ではないので注意です。

実際に、上のコマンドでmysqlにログインすると普通のMySQLサーバーと同じように使うことができます。

Arukasを使う上での注意点

アプリは誰でもアクセスができる

Arukasで公開したアプリは起動した時点でインターネットで公開されます。PortのURLやエンドポイントのURLがわかるだけでアプリに誰でもアクセスができてしまうので、注意が必要です。

ストレージがないので、データが永続しない

Dockerコンテナの特性でもありますが、コンテナ内ではデータは保持せずコンテナが止まればデータは再利用されない仕組みなので、データを貯めていくアプリをArukasで運用するのはあまり向いてません。

自分のサーバーに立てたDockerであれば、ローカルディレクトリをマウントしたり、Busyboxコンテナで永続化させたりできますが、Arukasではそうした運用ができないようです。

上記のMySQLサーバーであれば、コンテナを止める前にmysqldumpでデータをバックアップして、コンテナを立ち上げた時に戻すという感じになります。

Arukasはこんな使い方がいい?

APIやボット

データを貯めるのではなく、リクエストに対して同じデータを返すだけのAPIだったり、データは外部のもの(twitter APIなど)を使うボットなどに向いてそうです。

テスト用

Dockerで構築したアプリを本番で公開する前にちょっとテストでアップしてみたいという場合や、とりあえず実験でいろんなコンテナを使ってみたりする場合にも良さそうです。

Freeプランの場合、1インスタンスしか作成できないので、アプリを1個作ったら削除しない限り新しいアプリを作成できないのがちょっと不便ですね。


以上、ArukasでMySQLサーバーを立ててみました。

仕組みがわかっていて、Dockerに慣れている人なら、3分とかでコンテナが立ち上げられるのでかなり便利です。

Freeプランだと、Dockerhubのイメージしか使えないのが厳しいですが、個人的にはとりあえず無料でずっと立ち上げっぱなしのMySQLサーバーが一つあるだけでも、便利だなと思いました。

他にも使い方があると思うので、いろいろと試してみたいと思います。