書籍「CloudStack徹底入門」を読んでいてふと
Scalrというオープンソースがある事を知った。
p340の最後たった5行だけ..
どうもポータル機能をもつWebアプリで、
CloudStackだけでなくOpenStackも扱えるらしい..
もしかしたら..
Cloud Portalを買わずに課金とかできるかもしれない..
しかもオープンソースならプライベートクラウドとして
CloudStackを入れて部署へ使用料を付け替えとかも
できるかもしれない(できないかもしれない)..
これは試してみる必要がありそうだ...
..ということで、Scalrのインストール手順を
まず翻訳して見ることにした。
Dashboard>Documentation>Home>Getting Started>Open-Source Installation
http://wiki.scalr.net/display/docs/Open-Source+Installation#Open-SourceInstallation-SystemRequirements
をとりあえず訳してみたのが以下の文章である。
他の記事と同じく、本文書も at your own risk でお願いします。
以下、開始
オープンソース版インストール手順
新規追加Robin Piedeleu、最終更新Paul Chapotet(2012/07/17)
このページは、自分のインスタンス上でオープンソース Scalr をインストールしたいユーザによって提供されました。
システム要件
免責事項
連続的に更新されるコードをもとにしているため、独自にホストされた環境からScalr管理下の環境への移動はとても難しいです。もしあなたが自分自身でScalr構築を検討しているのであれば、自分で構築したScalrがアップデートやアップグレードできない事を了承しなくてはなりません。
最小サーバ構成
個人でScalrをホストするには、下記の最小構成スペックのサーバが必要となります。
- m1.large 1台 mysql用
- m1.large 1台 app用
- c1.medium 1台 cronジョブ用
2012第2クオータの最新版では以下のサーバが必要になる予定です:
- m1.large 1台 redis(NoSQL)用
- m1.small 1台 rabbitmq(MQM)用
パッケージ
パッケージ名及びインストール手順変更箇所です。
オープンソースScalrは以下の機能を持つWebサーバが必要です。
- URL rewriting (mod_rewriteのような機能)
- POSIX互換OS(Linux, BSD)
- PHP5.3.5もしくは以降の5.3.xブランチ
- MySQL5.1.X
更に以下の様な依存関係のあるパッケージのインストールが必要です。
- libssh2
- OpenSSL
- net-snmp-utils
- bind9
必要となるPHP設定オプション
- safe_modeはOff
- register_globalsはOff
必要となるPHPエクステンション
- mysqli
- cURL
- Sockets (--enable-sockets) SSL をサポートする場合 (--with-openssl)
- GetText
- SimpleXML
- mcrypt
- mhash
- pcntl
- posix
- ssh2
- DOM
- SOAP
- SNMP
- pecl_http
- rrdtool
特定のバージョンのrrdtoolエクステンション(PECLからのデフォルト版ではない)が必要であることに注意して下さい。ビルドするためには、Webサイト http://oss.oetiker.ch/rrdtool/pub/contrib/ から'php_rrdtool.tar.gz'をダウンロードして下さい。解凍し、phpize、設定、makeを実行して下さい。
rrdtoolパッケージ同様librrdもまたバージョン1.3.xのものが必要です。
特定バージョンのダウンロードは http://oss.oetiker.ch/rrdtool/pub/?M=D から行えます。
また、apache mod_rewrite は必須です。
scalr virtualhostに"AllowOverride All"を設定して下さい。
インストール手順
最新コードを http://scalr.net/pricing/open-source/ からダウンロードして、unizpを実行して下さい。
フォルダ app/ のコンテンツをWebサーバへコピーして下さい。
フォルダ app/www のみWebサーバ経由で参照可能にしてください; その他すべてのフォルダは web root の最下部においてください。Scolrはドキュメントルートのサブフォルダ(例:domain.com/something)では動作しません。サブドメインを作成し、そのドキュメントルートに Scalr の app/www フォルダを指すようにして下さい。
以降、文中の /scalr_home_dir/ は Webサーバの app/ フォルダのロケーションをさします。
AllowOverride (Apache) か、もしくは /scalr_home_dir/etc/.htaccess 内で発見されたScalrドメインがrewriteルールを実現のための他の妥当なディレクティブを設定して下さい。もしApache以外のWebサーバ(lighttpdなど)を使用しているのであれば、.htaccessルールを該当サーバに適応するフォームにコンバートする必要があります。
パーミッション設定
以下のフォルダ(およびそのサブフォルダ)やファイルはWebサーバからの書き込みが可能な設定にして下さい。オーナシップをWebサーバユーザに変更し、パーミッションを700に設定するか、(セキュリティがより緩い)777(全員書き込み可能)にしてください:
データベースの構築及び設定
新規にMySQLデータベースを構築し、Scalr用のデータベースユーザを作成して下さい。
ファイル sql/scalr.sql からデータベースへインポートして下さい。
Webサーバ上ファイル /scalr_home_dir/etc/config.ini へデータベースの設定を編集して下さい。
cronジョブの設定
正しくシステムを動作させるために、定期的にいくつかのタスクを実行する必要があります。Scalrは様々なコマンドラインスィッチによって実行される単一のファイル cron/cron.php を保有しています。以下のタスクをスケジュール設定して下さい:
*/2 * * * * /usr/bin/php -q /scalr_home_dir/cron-ng/cron.php --Poller
* * * * * /usr/bin/php -q /scalr_home_dir/cron/cron.php --Scheduler2
*/10 * * * * /usr/bin/php -q /scalr_home_dir/cron/cron.php --MySQLMaintenance
* * * * * /usr/bin/php -q /scalr_home_dir/cron/cron.php --DNSManagerPoll
17 5 * * * /usr/bin/php -q /scalr_home_dir/cron/cron.php --RotateLogs
*/2 * * * * /usr/bin/php -q /scalr_home_dir/cron/cron.php --EBSManager
*/20 * * * * /usr/bin/php -q /scalr_home_dir/cron/cron.php --RolesQueue
*/5 * * * * /usr/bin/php -q /scalr_home_dir/cron-ng/cron.php --DbMsrMaintenance
*/2 * * * * /usr/bin/php -q /scalr_home_dir/cron-ng/cron.php --Scaling
*/5 * * * * /usr/bin/php -q /scalr_home_dir/cron/cron.php --DBQueueEvent
*/2 * * * * /usr/bin/php -q /scalr_home_dir/cron/cron.php --SzrMessaging
*/4 * * * * /usr/bin/php -q /scalr_home_dir/cron/cron.php --RDSMaintenance
*/2 * * * * /usr/bin/php -q /scalr_home_dir/cron/cron.php --BundleTasksManager
* * * * * /usr/bin/php -q /scalr_home_dir/cron-ng/cron.php --ScalarizrMessaging
* * * * * /usr/bin/php -q /scalr_home_dir/cron-ng/cron.php --MessagingQueue
*/2 * * * * /usr/bin/php -q /scalr_home_dir/cron-ng/cron.php --DeployManager
*/2 * * * * /usr/bin/php -q /scalr_home_dir/cron/cron.php --UsageStatsPoller
統計設定のロード
まず最初に、adminアカウントでSetting→Core セッティングを編集して下さい。rrdtoolバイナリファイルへのパス、rrdデータベースへのパスやその他の設定を行う必要があります。
システム要件(Scalrの追加要件)
- rrdtool ≧1.3.5 (pangoサポートのために必要)
- rrdtool-php
注意:
CentOSユーザ、最新のrrdtool、perl-rrdtoolはRPMForge repoからインストール出来ます。また同一のrepoからphp-rrdtool のインストールも試すことができます。私のネットワークでは可能でした。ただし、rrdtool-devel を同一repoからインストールした後、php-rrdtoolのコンパイルに成功しました。
Cron統計データの保管を行うために追加のcronタスクをスケジュール設定して下さい:
* * * * * root /usr/bin/php -q /var/www/scalr/app/cron-ng/cron.php --SNMPStatsPoller
設定
サーバが(ほとんどの)Scalrシステム要件を満たしているかチェックするために、app/wwwフォルダのtestenvironment.php スクリプトを実行して下さい。上記のステップを満たしたとすると、Webサーバからhttp://your.scalr.domain/testenvironment.phpへアクセス可能になっています。この操作によって、幾つか(rewriteルール不足やcronタスクの不足など)は発見出来ませんが、ほとんどの主要な問題を発見することができます。
BIND
サーバ上にBIND設定が必要です:
すべてのファイルパスは絶対パスです。
ファイル named.conf はBINDユーザからは読み書き可能にしてください。
ファイル named.conf へ"/var/named/etc/namedb/client_zones/zones.include"のインクルードを追加して下さい。
ゾーンファイルのために、ディレクトリ '/var/named/etc/namedb/client_zones' を作成して下さい。このディレクトリに中のすべてのファイルも含めてBINDユーザが読み・書き・実行できるパーミッションを設定して下さい。
ゾーン定義のために、ブランクファイル'/var/named/etc/namedb/client_zones/zones.include'を作成して下さい。
セキュリティIPプール
ファイル/path/to/scalr/etc/security.ini内:
[ec2]
; You can set the security group name to
; anything you want. Scalr will add it to
; all instances launched.
security_group_name = 'scalr.ip-pool'
[ip-pool]
; You can add any number and any name to
; the below list.
host1 = '3.1.4.1/28'
host2 = '5.9.2.6/28'
host3 = '5.3.5.8/28'
; This entry is specifically for phpmyadmin
pma = '9.7.9.3/32'
; This entry is specifically for statistics
stats = '2.3.8.4/32'
おめでとうございます!設定完了です。admin/adminでログインして、Settings→Core settingsへ進み設定を編集して下さい。
イベントハンドラURLをチェックして下さい、デフォルトでは'example.com'になっていますので、実際のScalrサーバのURLへ変更して下さい。インスタンスはこのURLを使ってScalrサーバとの接続を確立します。設定変更なしでは、インスタンスはHostInitメッセージ(と、すべてのシーケンシャルメッセージ)の送信先が分かりません。
エラーを含む既知の問題
- 問題:OperationalErrorが出る:データベースはサーバログやスクリプト実行などいくつかの便利なものがロックされ、データベースバンドルが動作しません
- 解決法:サーバへSSH接続して以下のコマンドを実行して下さい
$ rm -f /etc/scalr/private.d/db.sqlite
$ /etc/init.d/scalarizr restart
- 問題:Received RebundleFailed event from serverが出る
- 理由:EBSボリュームvol-XXXXXXXXが時間内にアタッチされずに、_t1.micro_サーバタイプを使っている
- 解決法:サーバを再起動して再試行してください
4つの子ページ・
Scalr 2.5 + Ubuntu 11.10・
2.1.* から 2.2.0 への更新・
2.2.0 から 2.2.1 への更新・
振る舞いの作成方法
以上
なんか最初にやけにオープンソース適用を脅す文言が入ってるなと思ったら、phpファイルじかにWebサーバへ導入するインストレーションだからか..
なんでaptとかyumでやらないんだろう..バージョンも現時点だと3.5とか結構メジャーバージョン進んでるのになあ..