まだプログラマーですが何か?

プログラマーネタ中心。たまに作成したウェブサービス関連の話も https://twitter.com/dotnsf

タグ:softlayer

2013 年を最後に SoftLayer の記事を書いていませんでした。久しぶりで緊張します。。

2年以上 SoftLayer から離れていましたが、その間に大きな変化を遂げていました。もちろん知ってはいたのですが、自分が使う立場ではなかったため、変化を具体的に実感する機会がありませんでした。

最近、業務にかこつけて仕事で SoftLayer インスタンスを利用してシステムを構築する、という機会がありました。普段 PaaS (と個人環境の仮想 Linux)ばかり触っていたので、久しぶりの IaaS でした。その業務の中で SoftLayer 上の Linux サーバーインスタンスのファイルシステム上に Object Storage のフォルダをマウントする、という環境を構築する機会があったので、作業内容をまとめておきました。

ちなみに今回の作業の参考にしたのはこちらのサイトです:
https://www.change-makers.jp/post/10362

ただ、この作業そのままでは自分の環境では動かなかったので、あくまで自分の環境で動かした時の作業内容を記載しておきます。自分の環境は CentOS 6.7 64bit です。


まず、Swift 互換の Object Storage を Linux のファイルシステムにマウントするには CloudFuse というオープンソースのライブラリ/ツールを使います。

というわけで CloudFuse を導入します。CloudFuse はソースからビルドして導入するので、まずはビルドをするために必要な前提ライブラリを導入します:
# yum install gcc make fuse fuse-devel curl-devel libxml2-devel openssl-devel git

※上記の Change Makers のサイトではこれで前提ライブラリが導入されることになっていましたが、自分の環境ではビルドに失敗してしまいました。結果として以下のこの処理が足りませんでした:
# yum install json-c-devel

前提ライブラリが準備できたら CloudFuse (のコマンドラインツール)をダウンロードしてビルドします。ダウンロードは GitHub から最新ソースをクローンします:
# cd /usr/local/src
# git clone https://github.com/redbo/cloudfuse

そして configure して、make して、make install します。これで cloudfuse コマンドが使えるようになります:
# cd cloudfuse
# ./configure
# make
# make install

cloudfuse コマンドを使って Object Storage を利用するには、目的の Object Storage にアクセスするための情報(url, username, password)が必要です。SoftLayer の場合は次の方法で取得します。 SoftLayer のコントロール画面のメニューから Storage - Object Storage を選び、利用中の Object Storage を選択し、その画面内の "View Credentials" と書かれた箇所をクリックします:
2016040201


すると以下のようなアカウントクレデンシャル情報が表示されます。この値を後で使うのでメモしておきます:
2016040202


SoftLayer のインスタンス画面に戻り、ホームディレクトリ上に ~/.cloudfuse というファイルを新規に作成します。その内容は先程確認したクレデンシャル情報を使って、以下の内容にして保存します:
# vi ~/.cloudfuse

username=(Username の値)
api_key=(API Key の値)
authurl=(Authentication Endpoint の値。SoftLayer 以外から使う場合は Public 、SoftLayer のサーバーから使う場合は Private の値にする)

なお authurl に指定する値ですが、この Object Storage のマウント自体は SoftLayer ではないクラウドサーバーやオンプレミスサーバーから行うことができます。その場合は Public と指定されていた方の URL を記載してください。一方 SoftLayer のサーバーからマウントする場合は Private と指定されていた方の URL を記載すると、プライベートネットワークを使った高速接続が出来、かつ SoftLayer 内のインバウンド転送なので追加料金がかかりません。

ここまでできたらマウントします。cloudfuse コマンドを使って、Object Storage のフォルダを SoftLayer インスタンスの /mnt ディレクトリにマウントしてみます:
# cloudfuse /mnt

これでマウントは完了しているはずです。df コマンドで確認してみます:
# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda2       25G  7.4G   16G  32% /
tmpfs           935M     0  935M   0% /dev/shm
/dev/xvda1      248M   94M  142M  40% /boot
cloudfuse       8.0T  4.2G  8.0T   1% /mnt
↑Object Storage って最大 8TB も使えるのね。。


ちゃんとマウントできています。これで Object Storage が SoftLayer インスタンス上のファイルシステムとして読み書き可能になりました!

画像などメディアファイルを多く扱うようなシステムを構築する場合、パフォーマンスのためにメディアデータはデータベースではなくファイルシステムに格納することも珍しくありません(WordPress とかもそうです)。この場合、アプリケーションサーバーをスケールさせてもメディアを保存するファイルシステムがバラバラになってしまっては意味ないので、メディアを保存する先は Object Storage をマウントした先に指定する方法が一般的です(そうするとマウント情報ごとスケールするので、メディアも共有できるようになる)。 そんなシステム構築ではこんな手法を使う、というサンプルでした。特に SoftLayer + Object Storage 環境であれば、ネットワークも高速で、かつマウントした Object Storage への転送時の追加料金もかからずに構築できるというメリットがあります。


SoftLayer の仮想サーバーを借りて早一ヶ月、そろそろ無料トライアル終了の日が近づいてきました。仮想サーバーでありながら、それなりのスペックで素に近い CentOS が使えたことから RunLevel 5 で動かし、開発用の仮想デスクトップ環境として使ってきました。ここで開発したサービスについては近い将来に公開予定です。


さて、このシリーズ最後のエントリは SoftLayer 仮想サーバーの契約を終了する手順を紹介します。ともあれサーバーに SSH でログインしてシャットダウンは済ませておきます。ただしサーバーをシャットダウンしただけでは契約終了にはなりません、この点に注意が必要です。

まずは SoftLayer ポータルにログインし、ホーム画面のメニューから "ADMINISTRATIVE" - "Cancel Computing Instance" を選択します:
sl2013102901

契約中のサーバーインスタンスが表示されます。課金対象から外すにはサーバー契約そのものをキャンセルする必要があります。表の一番右の "Cancel CloudLayer Computing Instane" をクリックします。
sl2013102902


サーバーキャンセルについての情報が表示されます。ここを見ると、無料の30日トライアルに関しては「30日目の午前零時(GMT-05:00)の 24 時間前までに終了のリクエストをすること」と書かれています。で、すぐにキャンセルするか("Immediately")、ギリギリまで使ってキャンセルするか("Anniversary Date")を選んで "Continue" ボタンをクリックします。自分は心配性なので前者を選択・・・
sl2013102903


最終確認画面が表示されるので、内容を確認した上で "Final Confirmation" をクリックします。
sl2013102904


まだ "Final" ではなかった模様(笑)、最後の最後に確認ダイアログが表示されます。ここで "OK" をクリックするとキャンセル処理が実行されて元に戻せなくなります。今までありがと~
sl2013102905


この画面が表示されれば仮想サーバーのキャンセル処理が完了です。
sl2013102906


再度同画面を確認してもサーバーは消えているはずです。
sl2013102907


ほぼ同時に利用者アンケートのメールが届きます。めんどくせー、と一瞬思いましたが、よく見ると「抽選で $500 の VISA ギフトカードが当たる」と書かれてますね・・・ これは、これは。謹んでお答えさせていただきますw
sl2013102908

 ↑英語でのアンケートですけど・・ :P


個人的にはどこからでも使えるこの開発環境を重宝していたので手放すのは残念ではありますが、ほとんどクセのない CentOS 環境が提供されていることや、自動プロビジョンの仕組みもあることから、比較的容易に元の環境を再現できると思っています。今後うちの会社のウェブサービスで仮想環境が必要になった際の、特に開発環境の候補として検討させていただきます。


 

SoftLayer をクラウドノードを開発サーバーとして1週間程度使っています(以前のエントリその1その2)。ただ使っているだけだと「快適です」以外にあまり言うことがなくてつまらないので、違う視点から改めて見てみました。ああ申し込み時にこうしておけばよかった、という思うこともいくつか・・・

まずはデータセンター。選択肢としてはワシントンDC、サンノゼ、シアトル、ダラス、シンガポール、そしてアムステルダムとあります。はっきり言って深く考えずにワシントンDCを選んでしまいましたが、よく見たらこんな資料が・・
sl2013101501


ああ、日本のネットワークセンター(品川)から直結しているのはシンガポールとサンノゼだったのか。このどっちかにするべきでした。

そして利用者向けポータルサイトで見つけた "Provisioning Scripts" の設定。
sl2013101502


実はいまだに申込時にどうやるとこれが有効にできるのか、まだハッキリと分かっているわけではないのですが、OS のロード直後に実行させるプロビジョン用のスクリプトファイルを指定できるもののようです。このクラウドノードからURLでアクセスできるところ(要はインターネット上のHTTPアクセス可能なサイト)にこのスクリプトを置き、その中にシェルスクリプト等で最初に行っておきたいセットアップ内容を記述しておけば、OS の起動直後に実行してくれる、というものです。したがって、ここで書いたような yum の実行コマンドを羅列したシェルスクリプトのテキストファイルを指定すれば、起動と同時に実行されて必要なミドルウェア環境が構築できる、ということだと思います。シェルスクリプトで記述できる範囲に限られてしまうとはいえ、すげー便利!

 

前回のエントリの続きです。SoftLayer の一ヶ月無料トライアルに契約して、サーバーインスタンスを確認するまでの作業は前回のエントリを参照してください。なお今回のエントリ自体は SoftLayer に特化した部分はほとんどなく、どちらかというと自分の開発環境構築備忘録の色が強いです。でも、そういう用途にも使えるだけのクラウド環境が SoftLayer から提供されている、と理解していただければ。

まずおさらいとして、提供されたクラウド環境のスペックはこんな感じです(結構よさげ)。本来なら月額$50ですが、1ヶ月間は無料お試し期間になります: 
 
CPU: 1 x 2.0 GHz Core
 メモリ:  1024MB
 システムディスク: 25GB
 スワップディスク: 2GB
 ネットワーク: パブリック/プライベート共 100Mbps

 

今回は起動した CentOS 6.0(minimal install/64bit) の環境を自分の目的用にカスタマイズする手順を晒すものです。まあ SoftLayer 独自の部分はありません。初めから LAMP 環境を選択して起動して特に追加設定が不要の人や、普段から CentOS の導入を行っている人にはありきたりでつまらない内容かもしれません。

まずは前回の最後と同様 ssh でサーバーに接続します。自分は Windows 環境から PuTTY を使っています。鍵ファイルなどは不要で、直接 root でログインできます。root の初期パスワードはポータルサイトから確認可能です。
sl2013100801


賛否両論あるとは思いますが、個人的にはこの「鍵ファイルが不要」「SSHアクセス可能」はポイント高いです。実運用サーバーだと事情は変わってくると思いますが、開発用サーバーとして使う視点では自由度が高くて手軽なクラウド環境というのはやはり使い勝手いいです。
 

で、最初に何をするべきかというと・・・とりあえずカーネルやライブラリを最新のものにしておきましょう。yum を使って更新します:

# yum -y update


このコマンドを実行するとカーネルの更新が行われる(と思う)ので、一度再起動して新しいカーネルでロードします:
# shutdown -r now

再起動後、ここでアプリケーションサーバーやらデータベースやらを導入してもいいのですが、せっかく素の CentOS を借りることができたので、EC2 の Amazon Linux などでは敷居の高い環境を構築してみます。まずは X Window System 環境と日本語環境を導入します:
# yum -y groupinstall "X Window System" "Desktop"
# yum -y groupinstall "Japanese Support" 


更にシステムロケールを変更します。/etc/sysconfig/i18n を編集して、LANG="ja_JP.UTF-8" に変更して保存します。

せっかく X Window System を導入したので VNC 環境も整えてしまいましょう。tigervnc サーバーを導入します:
# yum -y install tigervnc-server

一般的には VNC は一般ユーザー権限で実行するのですが root 権限で実行できないこともありません。必ずしもおススメしませんが(後々の説明が楽なので・・) root 権限で VNC サーバーを 5901 番ポートで実行する場合の方法を紹介します。tigervnc サーバー導入後に /etc/sysconfig/vncservers を編集します:

 VNCSERVERS="1:root"
 VNCSERVERARGS[1]="-geometry 1024x768 -nolisten tcp"


更に VNC 接続用のパスワードを設定します:
# vncpasswd

そのまま一度 vnc サーバーを起動して設定ファイル(~/.vnc/xstartup)を初期状態で生成します:
# /etc/init.d/vncserver start

生成された設定ファイルを編集します。具体的には GNOME のセッションをそのまま利用するように変更します:
 #!/bin/sh
 (最初に環境変数 LANG を変更)
 export LANG="ja_JP.UTF-8"
  :
  :
 (最後の部分を変更)
 # xterm -geometory 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
 # twm &
 gnome-session &


最後に VNC サーバーを再起動し、またシステムの起動と併せて実行されるように指定します:
# /etc/init.d/vncserver restart
# chkconfig vncserver on


これで VNC サーバー環境が整いました。PuTTY のような SSH ターミナルアプリだけでなく、VNC Viewer などの VNC クライアントからも接続できるようになったはずです。上記の設定を行った場合は VNC クライアントからの接続先 VNC サーバーとして(IPアドレス:1)となるように、最後に ":1" を付与して接続してください。
sl2013100900


パスワードを聞かれるので vncpasswd で指定したパスワードを指定するとクラウドサーバーの X Window System 環境にアクセスできます。クラウドでデスクトップ環境!! 
それなりのスペックを持った仮想環境なので、ここまでできてしまえば LibreOffice とかも入れて立派なクラウド・デスクトップとしても使えそうです(今回はやりませんけど)

sl2013100901

自分の場合はここから更に開発環境としてのカスタマイズを加えます。ウィンドウシステムが使えるようになったので Web アプリの開発/テスト用に FireFox ブラウザを入れておきましょう。上部メニューから アプリケーション - システムツール - 端末 を選択してGNOMEのターミナルを開き、以下のコマンドを入力します:
# yum -y install firefox

データベースは好みのものを。MySQL とかでもよかったのですが、最近はコミュニティの活発な MariaDB を使ってます。まずは /etc/yum.repo.d/mariadb.repo を以下の内容で新規に作成して yum のレポジトリを追加します(MariaDB 10.0.4 の、64bit 版 CentOS6 向け設定です):
  [mariadb]
  name=MariaDB
  baseurl=http://yum.mariadb.org/10.0.4/centos6-amd64
  gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
  gpgcheck=1
  enable=1


リポジトリの追加ができたら、おなじみの yum で MariaDB をインストール:
# yum -y install MariaDB-server MariaDB-client

JDK(Java)環境も、Oracle などから Linux 版をダウンロードして導入してもいいですが、OpenJDK であれば以下のコマンドで導入されます:
# yum -y install java-1.7.0-openjdk-devel

PHP の場合だとこんな感じ:
# yum -y install php php-mbstring php-mysql

必要ならば Apache HTTPD サーバーも導入しちゃいましょう:
# yum -y install httpd

(2013/10/10 追記)
Java アプリケーションサーバーを忘れていました。Apache Tomcat あたりを入れておきます:
# yum -y install tomcat6

プログラミング言語が導入されたので Eclipse などの統合開発環境もインストールする準備が整いました。最新版の Eclipse を使う場合は上記で導入した FireFox を使って公式サイトからダウンロード&インストールの必要がありますが、少し古いものでもよければ以下のコマンドで導入できます:
# yum -y install eclipse

Eclipse までは必要ないけど vi ではないテキストエディタがほしい、という場合は最近流行りの Sublime Text 2 あたりがいいかも。こちらは公式サイトからダウンロード&展開します。ダウンロードファイル名が "Sublime Text 2.0.2.tar.bz2" であればコマンドはこんな感じ:
# tar vxjf Sublime\ Text\ 2.0.2.tar.bz2
# mv Sublime\ Text\ 2 /opt
# ln -s /opt/Sublime\ Text\ 2/sublime_text /usr/bin/sublime


これでターミナルなどのコマンドラインから "sublime &" と入力すれば起動するようになりました。

最後に壁紙も変えて、今のクラウド開発環境はこんな感じになりました:
sl2013100902


サーバー類の自動起動を含めた設定変更などは省略していますが、おおまかにはこんな感じ。単なる開発用サーバーとしてだけでなく、X Window System が手軽に導入できることで開発用デスクトップとしても使えそうなクラウド環境が構築できました。スペックの異なる環境の比較にはなりますが、これまで Amazon Linux のマイクロインスタンスで使っていた開発サーバーにプラスアルファして環境を移行してみたのですが、アクセスの容易さも含めて快適に使えています。一か月ほど今開発中のアプリケーション用に使わせていただくつもりです。




 





 

 

SoftLayer、ご存知でしょうか?ぶっちゃけ、日本ではあまり知名度高いとは思ってませんが、なかなかに注目のクラウドベンダーだと思っています。

一般的に「クラウドでサーバーを調達する」場合、仮想サーバーが割り当てられます。SoftLayer でも仮想サーバーを申し込むことはできますが、物理サーバーを指定することも可能です。ディスクアクセス負荷の高いことが分かっているサーバーのパフォーマンスを考慮すると物理サーバーを選びたくなり、そこだけはクラウドベンダーが手配できないので別途自分たちで調達、、なんてことをする必要がありましたが、このようなケースで SoftLayer は有力な選択肢になりえます。複数サーバーを調達して「一部を物理サーバー&残りを仮想サーバー」のような構成にすることも、それらを内部ネットワークで通信させる構成を組むことももちろん可能です。

この SoftLayer, これまでは独立系クラウドベンダーとして注目されていましたが、先日 IBM 傘下に入ることがアナウンスされました。現在、日本から SoftLayer と契約する手順はまだ整備されておらず、資料もほとんどありません。このあたりはIBMの戦略の中でいずれ解消されるものと期待していますが、まずはその前に一度使ってみようと思い、無謀にも環境整備前に「一ヶ月無料トライアル」に契約してみました。いわゆる「ヒトバシラー」ですね、はい。

感想としては「契約するまではMな人向き、契約後は超快適」です。前置きが長くなりましたが、この契約までの流れを以下で、そして契約後からサーバー構築までの手順を次回紹介するつもりです。あ、ちなみに無料トライアルで契約できるサーバーは仮想サーバーのみであって、物理サーバーは選べません。

では契約手続きを紹介します。SoftLayer の「一ヶ月無料トライアル」についてはこちらのページに紹介されており、同ページ内の “ORDER NOW” ボタンをクリックすると申し込みページに移動します。なお、現時点(2013.Oct.06)では SoftLayer のページはサポートも含めて全て英語で用意されています。まあそういう方のためのこのブログエントリではありますが、それはそれとして英語がんばりましょう!英語できる方はこの後の画面にチラチラでてくる “Live Chat” をクリックするとサポートチームと繋がるチャット画面が現れ、不明点などをチャットしながら進めていくこともできるようになります(今回、これをかなり使いました)。
2013100701

 
 

















こちらが申し込みフォームの画面です。一般的な項目が並んでいるのでそんなに難しくないですよね。支払いはクレジットカードのみ。日本在住の日本人が申し込む場合の入力に迷いましたが、僕は “Country” を “Japan”、”State/Region” は “Non US State/Canadian Province” で “City” 欄に市区町村と都道府県(“Funabashi, Chiba” のような感じ)を記載しました。あと VAT ID(付加価値税登録番号)は大半の日本人には関係ないので空、クレジットカード欄の CVV はカード裏面の確認コード(一般には3桁)です。
2013100702

画面右からデータセンターを選択します。僕は特に希望や都合はなかったので Washington DC を選びました。
2013100703

(2013/Oct/15 追記)
オススメはシンガポールかサンノゼです。詳しくはこちら

そして OS です。この一ヶ月無料トライアルで現在選択できるのは以下。CentOS, Debian, Ubuntu の各バージョンに加え、ソフトウェアルータ環境の Vyatta も選択可能になっていました。ここで申し込んで Vyatta を選ぶだけで仮想環境にルータが作れる、ということですね。あとこの一覧を見てわかる通り、独自OS環境がなく、全て一般的なディストリビューションから選択できるのは後のカスタマイズ時が楽になり、非常に助かります。  僕は Java アプリケーションサーバー環境を作るつもりだったので LAMP ではなく minimal install を CentOS 6.0(64bit) で選ぶことにしました。
2013100704
2013100705

この下に “Host name” と “Domain name” 欄が必須項目としてあるのですが、これは単に hostname と network に設定される値をどうするか、というだけの情報であって、深い意味はないようです。ドメインを持っていないといけないとか、その DNS を設定しないといけない、という意味ではないようでした(もちろん所有していればそのような設定も可能です)。

ちなみにスペックと値段を見るとこんな感じ。1ヶ月とはいえ無料で使える環境としては、他と比較してもなかなかいい感じ。まあ本来 $50,00 /月かかる環境と考えれば納得。。

2013100706


最後に SUBMIT して、確認画面を経て申し込みが完了・・・ となるはずなのですが、実は自分はここで躓きました。”An Error Ocurred: The transaction has been declined by the financial institution. ….” というエラーメッセージが表示され、申し込み画面に戻ってしまいました。チャットで確認したのですが、どうやら「クレジットカードの情報と一致しない情報がある」場合にこうなるとのこと。原因としては、入力した住所の英語表記が登録されている英語表記と一致していなかったようでした。とはいえ元々英語で登録した情報ではないのでそれと一致しないと言われても・・・ (—; 僕の場合は住所の部屋番号の書き方を工夫しているうちに解決しました。あと電話番号については国番号(+81)を含めない番号にしておいた方がいいような気がしています。これも後にトラブルがあったので。

無事に申し込みが完了するとこんな画面になります。モザイクをかけていますが、ここに記述されている ORDER #(注文番号)は後ほど必要になります。
2013100707

見逃しやすいかもしれませんが、実はこの画面にこんな事が書かれています: “A member of our sales team will contact you  via telephone to confirm your server purchase”(「今回の購入の確認のため、営業チームから電話確認を行います」)。

で、電話!? なかなかハードルが高い注文で・・・ で、実際には注文から30分程度で電話がかかってくるそうです。その電話に出れないと自分から(もちろん国際電話で)電話をかけないといけなくなるので、電話に出れる状態を確保してから注文しましょう。電話では注文番号や名前、住所、クレジットカード番号の下4桁などの確認を口頭で行うことになります。電話確認が無事に完了するとメールが何通か送られてきます。その中にはサーバーを管理するポータル画面へログインするためのURLとユーザーID&仮パスワード、そして「準備ができました」の以下のメールが到着すればサーバーにアクセスできます。
2013100708

メールで受け取った情報を使ってポータルサイトにアクセスし、ID と仮パスワードでログインします。初回ログイン直後に正式なパスワードに変更します。
2013100709
 
ポータルのトップ画面がこちらです。この画面から起動中のサーバーインスタンスに対する再起動などのアクションが可能です。
2013100710
 
サーバーインスタンスの詳細情報を知りたいので、メニューの CLOUDLAYER - Computing を選択し、Computing Instance 欄のサーバー名をクリックします。
2013100711
 
この画面には作成したサーバーインスタンスにアクセスするための IP アドレス(Private / Public)、初期 root パスワードなどが確認できます。IP アドレスは2つ表示されていますが、2つ目がグローバルに利用できる Public アドレスです。
2013100712

このサーバーインスタンスは KVM 上に構成された素の CentOS のようで、鍵ファイルなど不要で普通に SSH で root アクセスできます。なのでとりあえずログイン後に root のパスワードは変更しておくべきだと思います。
2013100713
 

途中で国際電話体験などかなり想定外の事態もありましたが、ここまで出来てしまえば後は普通の CentOS 同様に(というか、おそらく普通に minimal インストールした CentOS として)使うこと可能です。賛否両論あるかとは思いますが、鍵ファイルの存在を意識せずに自由に SSH 等でログインできる環境がクラウド上に用意されるのは開発者としてはありがたいです。 次回はこのサーバーに対して自分が行ったセットアップ内容を紹介する予定です。
 

このページのトップヘ