:wq!

ロリポップ!マネージドクラウドα版を試してみた

ども、takiponeです。8/30(水)にクローズドαが開始したロリポップ!マネージドクラウドを早速試すことができたので、その様子をレポートします!

まずは触ってみる

招待メール記載の手順に従い、サインアップします。

サインアップが完了すると早速管理画面に遷移し、初期ウィザードが表示されます。

現時点では、WordPressとPHPが選択できました。個人的にはGhost.orgのホスティング先として、Node.jsサポートに期待したいところです。 ひとまずWordPressを選んでみました。

lolipop.ioの任意のサブドメインが提供されます。あと、データベースのパスワード入力が求められるので、12文字以上の任意のパスワードを入力して作成ボタンをクリックします。

作成されたようです。早速「あなたのウェブサイトを見る」をクリックすると...

WordPressの初期セットアップ画面が表示されました!なにげにHTTPS接続になっていて、HTTPで接続してもHTTPSにリダイレクトされるのでどうやら常時SSLのようです(!)

ウィザードの手順に従うだけの簡単スタートですね。モダンなWebサービスを利用する感覚で、WordPress環境が出来上がるのは新鮮でした。(実際にWordPressを使うためには、WordPressの初期セットアップが必要です。)

さらにさらに、curlでアクセスしてみると。。。

$ curl -I https://xxxx.lolipop.io/
HTTP/2 302
date: Tue, 05 Sep 2017 15:24:31 GMT
content-type: text/html; charset=UTF-8
location: https://xxxx.lolipop.io/wp-admin/install.php
server: Apache/2.4.10 (Debian)
x-powered-by: PHP/5.6.30
expires: Wed, 11 Jan 1984 05:00:00 GMT
cache-control: no-cache, must-revalidate, max-age=0

$

おおお、HTTP/2にも対応していますね。簡単セットアップでいきなりの最先端Web技術。落差にクラクラ来ますw

用意されるもの

気を取り直して、マネージドクラウドの管理画面を眺めてみます。
最初の項目に「オートスケールと予算の設定」があり、オートスケールに込められる意気込みが感じられます。

[設定する]ボタンをクリックしてオートスケールを有効にしてみます。選択のチェックボックスから、スケールするのはアプリケーション(コンテナ)ということが推測できますね。データベースがスケールするわけではない点には、注意が必要かもしれません。

オートスケールを有効にすると、オートスケールの関連設定がいろいろ出てきます(現在は設定できません)。

とても実用的な項目で良いですね。コンテナやオートスケールの様子はHerokuやGAEなどのPaaSを彷彿とさせる仕組みですが、それらはあくまでコンテナ数の制御といった技術的な設定がメインでしたので、特に**予算(金額)**での上限設定は、非エンジニアやライトユーザーをターゲットとして理解しやすい適切なサービス設計になっていると思います(=実装に期待しますw)。

管理画面に戻ると、SSH/SFTPデータベースの項目が続きます。

SSHでコマンド操作、SFTPでファイル転送がコンテンツの操作方法として提供されます。別のプロジェクトを追加したときはSSHのホスト名は同じでポートのみ別ポートが表示されたので、共用サーバーでSSHのプロセス(≒ポート)がユーザー別に用意されている格好です。

データベースは別のプロジェクトでも同じデータベースのホスト名だったので、こちらも共用サーバーでデータベースインスタンスおよびデータベースユーザーが個別に用意される形ですね。データベースホストはインターネットからは名前解決できず対応するIPアドレスはローカルだったので、コンテナからの接続を想定しているようです。SSHの接続先環境にmysqlコマンドがインストールしてあると良いなと思いました。手元からsftpでダンプをアップロードして、mysqlコマンドでインポートしたいです。

また、phpinfo()のリクエストヘッダの項目にX-Forwarded-Forヘッダがあったり、アクセスログのRemote IPがローカルIPアドレスになっていることから、手前にリバースプロキシないしロードバランサを経由していることもわかります。

SSHアクセス雑感

では、SSHで接続しましょう。パスワード認証は無効になっているのであらかじめSSHキーペアをssh-keygenコマンドなどで生成し、公開鍵を登録して接続するパターンです。Amazon EC2などと同様ですね。

$ ssh -p 32880 placid-nagasaki-3909@XX.XX.XX.XX
Last login: Tue Sep  5 15:25:48 2017 from 10.1.1.1
  __  __  ____   _          _ _
 |  \/  |/ ___| | |    ___ | (_)_ __   ___  _ __
 | |\/| | |     | |   / _ \| | | '_ \ / _ \| '_ \
 | |  | | |___ _| |__| (_) | | | |_) | (_) | |_) |
 |_|  |_|\____(_)_____\___/|_|_| .__/ \___/| .__/
                               |_|         |_|

******* Welcome to Lolipop! Managed Cloud *******

placid-nagasaki-3909@php-green-bungotaketa-6851:~$

まずはプロセスやマウント状況など。

placid-nagasaki-3909@php-green-bungotaketa-6851:~$ ps ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:00 /usr/sbin/sshd -D
    6 ?        Ss     0:00 sshd: placid-nagasaki-3909 [priv]
   12 ?        S      0:00 sshd: placid-nagasaki-3909@pts/1
   13 pts/1    Ss     0:00 -bash
   20 pts/1    R+     0:00 ps ax
placid-nagasaki-3909@php-green-bungotaketa-6851:~$ mount
tmpfs on /tmp type tmpfs (rw,relatime)
datapool-1.node.consul:/haconiwa/contents/green-bungotaketa-6851.lolipop.io on /var/www/html type nfs (rw,noatime,vers=3,rsize=32768,wsize=32768,namlen=255,hard,nolock,proto=tcp,timeo=10,retrans=2,sec=sys,mountaddr=10.51.78.183,mountvers=3,mountport=49682,mountproto=tcp,local_lock=all,addr=10.51.78.183)
datapool-1.node.consul:/haconiwa/userslog/green-bungotaketa-6851.lolipop.io on /var/log/container type nfs (rw,noatime,vers=3,rsize=32768,wsize=32768,namlen=255,hard,nolock,proto=tcp,timeo=10,retrans=2,sec=sys,mountaddr=10.51.78.183,mountvers=3,mountport=49682,mountproto=tcp,local_lock=all,addr=10.51.78.183)
datapool-1.node.consul:/haconiwa/usersetc/green-bungotaketa-6851.lolipop.io/php/etc on /etc type nfs (rw,noatime,vers=3,rsize=32768,wsize=32768,namlen=255,hard,nolock,proto=tcp,timeo=10,retrans=2,sec=sys,mountaddr=10.51.78.183,mountvers=3,mountport=49682,mountproto=tcp,local_lock=all,addr=10.51.78.183)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=20098756k,nr_inodes=5024689,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000)
tmpfs on /dev/shm type tmpfs (rw,relatime)
placid-nagasaki-3909@php-green-bungotaketa-6851:~$

マネージドクラウドはOSSのコンテナツールHaconiwaを採用しているとのことなので、参照できるプロセスはcgroupsで制限されていますね。そもそもアプリケーションコンテナとSSHコンテナが別々に動作していて、ファイルシステムを共有しているように見えます。

マウントはcontents(コンテンツ)、userslog(アプリケーションログ)、usersetc(etcディレクトリ)が見かけNFSでマウントされているので、オートスケールするときのデータの一意性は共有領域で担保されているようです。マウント元のdatapool-1.node.consulはTLDからConsulでのディスカバリエンドポイントを彷彿とさせますが名前解決できなかったので、実装はわかりませんでした(興味はありますw)。それぞれのマウントポイントはコンテンツとログはRead/Write可能、etcはファイルのパーミッションでroot所有の読み取り専用になっていました。現時点ではコンテナ自身の改変機能は提供されていないので、あくまで読み書きできる範囲のファイルを操作して利用するレンタルサーバーの延長線上の作りになっています。

期待したいところ

レンタルサーバーの超進化形として育って欲しいサービスなので

  • コンテンツのバージョン管理
  • コンテナイメージのカスタマイズ

に期待したいですね。
あと、せっかくのコンテナ環境なので、アプリケーションサーバーとしてだけでなく、バッチなどのバックグラウンドで動くロングライフなコンテナ実行にとか便利そうです。そうなると、コンテナ間のネットワークとか夢がひろがりんぐですね。

まとめ

ロリポップ!マネージドクラウドα版を試してみた様子をあれやこれやと書いてみました。現時点では未実装の機能や動作が不安定な事象があるようなので、実用するにはまだ早いサービスです。
ただし、サービス開発のスピードはかなり速そうな感じがするので、気づいたら機能てんこ盛りでGAになっているかもしれませんね。

いずれにせよ、次世代のレンタルサーバーサービスの急先鋒として要チェックだと思います!応援したいです!