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

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

タグ:kvm

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 等でログインできる環境がクラウド上に用意されるのは開発者としてはありがたいです。 次回はこのサーバーに対して自分が行ったセットアップ内容を紹介する予定です。
 

このページのトップヘ