2010年12月20日月曜日

Windowsで"Amazon Route 53 Zone Creation Tool"

スズキです。

そろそろ、"Amazon Route 53"をいじってみることにしました。

まずは、Windows環境でこちらで紹介されているツールを利用してみます。
http://aws.amazon.com/developertools/Amazon-Route-53/3728292204499537

Perlスクリプトなので、WindowsにPerlの実行環境を導入しないといけません。
当然、Portable版にしたいので、下記の導入しました。
http://strawberryperl.com/releases.html

Perlモジュール(Data::GUID)が必要なので、
c¥bin
perl¥bin
にPATHを通して、下記を実行です。

> cpan install Data::GUID

Perlモジュールがインストールできたら、
下記のようにダウンロードしたPerlスクリプトを実行できます。

> perl route53zone.pl --origin suz-lab.com
--------
<?xml version="1.0" encoding="UTF-8"?>
<CreateHostedZoneRequest xmlns="https://route53.amazonaws.com/doc/2010-10-01/">
<Name>suz-lab.com.</Name>
<CallerReference>FA8BE149-6D19-1014-88EB-2672DF2DC115</CallerReference>
<HostedZoneConfig>
<Comment>Zone for suz-lab.com.</Comment>
</HostedZoneConfig>
</CreateHostedZoneRequest>

次は、下記。
http://aws.amazon.com/developertools/Amazon-Route-53/9706686376855511
--------
http://www.suz-lab.com

2010年12月15日水曜日

AWSで脆弱性/侵入テストなど

スズキです。

※現在、負荷テストの申請は必要ないようです。
負荷テストも含めてですが、下記フォームで申請できます。
https://aws-portal.amazon.com/gp/aws/html-forms-controller/contactus/AWSSecurityPenTestRequest

MicroインスタンスやSmallインスタンスは対象外なので、注意が必要です。

つまり、セキュリティ診断や負荷テストなどが必須のサービスは、
Mediumインスタンスから、ということになります。
--------
http://www.suz-lab.com

AWSの一括決済(Consolidated Billing)の上限

スズキです。

久々のブログです。

AWSには複数のアカウントの請求をまとめることができる
一括決済(Consolidated Billing)という仕組みがあります。

そして、これには上限があるようで、初期状態では20アカウントまでしか、
登録できませんでした。

20アカウント以上登録するには、Amazonに上限を上げてもらう必要があり、
メールでその旨伝え、何かしらの審査が入り、
40アカウントまで上げてもらうことができました。

上限に達した状態で一括決済(Consolidated Billing)のリクエストに対して、
Acceptすると下記のようなエラーメッセージが表示されます。

--------
Error
Your information could not be submitted because of the following errors:
- Unable to process request.
--------

このメッセージでは、何が悪いのか全くわからないので、要注意です…
--------
http://www.suz-lab.com

2010年11月25日木曜日

32ビットCentOSのyumでインストールしたパッケージを64ビットCentOSにインストール

スズキです。

下記は同じプラットフォームでのものでしたが、
http://blog.suz-lab.com/2010/03/yum.html
今回は、32ビット/64ビット間のインストールです。

上記のやり方だと、パッケージリストに「i386」が入ってしまうので、
64ビットの方にインストールするためには、パッケージリストから、
その「i386」を「x86_64」に変更する必要があります。

具体的には、下記のような感じでパッケージリストを作成します。

# yum list installed | awk '{print $1}' | sed -e s/\.i386/.x86_64/ > package.txt

あとは、上記URLのやり方と同じです。
(コンフリクトが起こった場合は、そのパッケージを除外する必要があります)

毎日ブログが書けないなー…
--------
http://www.suz-lab.com/

2010年11月22日月曜日

Apacheでrotatelogsを使うときにJSTで日付の切り替え

スズキです。

デフォルトだとUTCで切り替わってしまうので、
JSTで切り替わるようにするには、下記のようにする必要があります。

--------【httpd.conf】--------
...
ErrorLog "|/usr/sbin/rotatelogs /tmp/error_log.%Y%m%d 86400 540"
CustomLog "|/usr/sbin/rotatelogs /tmp/access_log.%Y%m%d 86400 540" combined
...
--------
※JSTのUTCからのoffset秒数(540)を指定しています。

ブログ復活の予感…


--------
http://www.suz-lab.com/

2010年10月29日金曜日

"PHP 5.2"の環境にphp-pearをインストール(yum)

スズキです。

ちょっとはまったので…

"php-devel"がインストールされていない場合は、
"remi"リポジトリの5.3.xのものがインストールされてしまい、
それに伴い、すべてのPHP関係のパッケージが
5.3.xにアップデートされてしまいます。

ですので、下記のように5.2系の"php-devel"をインストールしてから、
"php-pear"をインストールするようにします。

# yum install autoconf
# yum install automake
# rpm -Uvh http://rpms.famillecollet.com/enterprise/5/olds/x86_64/php-devel-5.2.13-1.el5.remi.x86_64.rpm
# yum install php-pear

パッケージダウンロード中に気づいてよかった…
--------
http://www,suz-lab.com

2010年10月27日水曜日

Linuxでディスク間のファイル/ディレクトリ移動は"mv"より"cp"!

スズキです。

以前、EC2でディスク容量を増やす作業をしました。

作業内容としては、より容量の大きなEBSをマウントして、
そこに、旧EBSのファイル/ディレクトリを新EBSに移動して、
パスを調整して、旧EBSを削除する、といった感じです。

そして、そのファイル/ディレクトリの移動に、
予想以上に時間を使ってしまいました。

移動は素直に mvコマンドを利用したのですが、
ディスク間の移動の場合、"mv"は、コピーしてから、
元を削除しているようです。

今回の作業は、削除は後回しでもよかったので、
コピーだけの"cp"を利用したほうが、結局、作業時間は短かったことになります。
(あと、失敗した時も"cp"の方が何かと都合がいいはずです)

ギリギリ間に合ったけど…
--------
http://www.suz-lab.com

SSHで公開鍵認証

スズキです。

AWS+では、お客様がEC2にSSHでログインする場合、
以下のように三つの制限をかけることを標準としています。

1. セキュリティグループでお客様が指定した
IPアドレスからしかアクセスできない

2. 公開鍵認証のみでしかログインできない

3. 秘密鍵にはパスフレーズが設定されている

つまり、特定のIPアドレスから、秘密鍵を持っていて、
そして、その秘密鍵のパスフレーズを知っていないと
ログイン出来ないことになります。

ということで、その設定方法です。

まずは、SSHを公開鍵認証のみでしかログインできないようにします。

--------【/etc/ssh/sshd_config】--------
...
PermitRootLogin without-password
PasswordAuthentication no
...
--------

設定ファイルを変更したら、SSHのリスタートです。

# /etc/init.d/sshd restart

次に、rootのパスワードを設定します。

# passwd

さらに、お客様のユーザーを作成します。

# adduser suzlab

パスワードも設定しておきます。

# passwd suzlab

そして、作成したユーザーになって、鍵を作成します。

# su - suzlab
# ssh-keygen
(途中、パスフレーズの入力があります)

".ssh"ディレクトリを確認すると、
以下のように鍵が作成されていることがわかります。

id_rsa: 秘密鍵
id_rsa.pub: 公開鍵

最後に、次のように上記の公開鍵を登録して、
秘密鍵(id_rsa)で、公開鍵認証ができるようにします。

# cat .ssh/id_rsa.pub >> .ssh/authorized_keys
# chmod 600 .ssh/authorized_keys

ブログ、さぼり過ぎ…
--------
http://www.suz-lab.com

2010年10月4日月曜日

一括決済(Consolidated Billing)時の請求明細(Invoce)PDF

スズキです。

請求明細のPDFがダウンロードできるようになりました。

詳しくは、こちらのAWS日本語ブログで紹介されています。


さらに、一括決済をしている場合にどのような請求明細か確認してみました。

が、合計とアカウント単位の明細になっているのかなーと思いきや、
合計のみの、上記同様の明細のままでした...

アカウント単位の確認を請求明細で行いたい場合は、それぞれのアカウントで明細をダウンロードしなさい、
ということですね。

元気になったら、PHPのSDK試してみよう...(特にSimpleDB)
--------
http://www.suz-lab.com

2010年9月30日木曜日

オリジナルAMIの作成(CentOS)の"slideshare"

スズキです。

今さらですが、"slideshare"デビューです。

昔、JAWS-UGの第0回勉強会でのLTで使ったものです。

AWS+でも紹介されてます。

昔はAWSレベル低かったなー...
--------
http://www.suz-lab.com

2010年9月29日水曜日

ELBとBasic認証

スズキです。

ELB使ってて、下記のように全体にBasic認証をかけたら、
そのEC2インスタンスがELBから外れてしまいました…

--------【httpd.conf】--------
...
<Location />
    Basic認証
</Location>
...
--------

ELBは"/healthcheck.txt"に対して死活監視するようにしているので、
そのレスポンスが200(番台?)じゃなくなったから外された、
ってことです。

なので、下記を追加して死活監視しているファイルに、
Basic認証がかからないようにします。

--------【httpd.conf】--------
<Files healthcheck.txt>
    Satisfy Any
    Allow from all
</Files>
--------

二度あったから、三度目もあるだろう…
--------
http://www.suz-lab.com

2010年9月27日月曜日

25番ポートでSMTP-AUTH(Postfix)

スズキです。

以前、Postfixでの"Submission over SMTP-AUTH"を紹介しましたが、
http://blog.suz-lab.com/2010/05/submission-over-smtp-auth-postfix.html
今回は、25番ポートのままのSMTP-AUTHに関してです。

とはいっても設定は簡単で、基本的に上記で紹介した方法での、
"master.cf"に記述した内容と同様のものを下記のように"main.cf"に記述します。

--------【main.cf】--------
...
smtpd_sasl_auth_enable=yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,reject_unauth_destination
...
--------
※reject_unauth_destinationがポイントでしょうか...

認証にdovecotを利用したものも書かなきゃ...
--------
http://www.suz-lab.com

"Google Chrome"をアプリケーションモードで起動

スズキです。

"Google Chrome"はアプリケーションモードで起動することができます。

アプリケーションモードとは、
アドレスバーが無いなど、非常にすっきりした表示モードです。

こんな感じで起動します。(AWSコンソールの起動)

> GoogleChromePortable.exe -app=https://console.aws.amazon.com/ec2/home
※Portable版使ってます…

KeePassで利用する場合は、URLの項目に以下のように記述します。

cmd://.../GoogleChromePortable.exe -app=https://console.aws.amazon.com/ec2/home

これで、KeePass上で、
"Ctrl + U"でAWSコンソール立ち上げて、
"Ctrl + V"でログインできるようになりました。

今日はもう1エントリー…
--------
http://www.suz-lab.com

2010年9月26日日曜日

PHPのセッションデータ格納先にMemcachedを利用(CentOS)

スズキです。

こちらで、Memcachedサーバができたので、
http://blog.suz-lab.com/2010/09/centosmemcached_26.html

今度はクライアント側の話です。
今回は、PHPのセッションデータ格納先として利用してみます。

まずは"php-pecl-memcached"のインストールですが、
諸事情でPHPは5.2系を利用しているので、下記のように行っています。

# rpm -Uvh http://rpms.famillecollet.com/enterprise/5/olds/x86_64/libmemcached-0.31-1.el5.remi.x86_64.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/5/olds/x86_64/php-pecl-memcached-0.2.0-1.el5.remi.x86_64.rpm

次に、設定ファイル(/etc/php.d/memcached.ini)を下記のように調整します。

--------【memcached.ini】--------
session.save_handler=memcached
session.save_path="localhost:11211"
--------

それに伴い、"/etc/php.ini"も調整します。
(session.save_handler,session.save_pathを無効にします)

--------【memcached.ini】--------
...
;session.save_handler = files
...
;session.save_path = "/var/lib/php/session"
...
--------

これでApacheを再起動すれば、
セッションデータがMemcachedに保存されるようになります。

土日もブログを書くようにしないとなー...
--------
http://www.suz-lab.com

CentOSにMemcachedをインストール&確認

スズキです。

以下のように、"yum"で簡単にインストールできます。
# yum install memcached

起動は以下のとおりです。
# /etc/init.d/memcached start

自動起動は次のとおりです。
# chkconfig memcached on

パラメータの調整は"/etc/sysconfig/memcached"で可能です。

--------【memcached】--------
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="1024"
OPTIONS=""
--------
※キャッシュに利用するメモリ(CACHESIZE0は1GByteにしています。

確認は次の通り、"telnet"で行うことができます。
# telnet localhost 11211

"stats"コマンドで以下のような状況を確認することができます。

--------【telnet】--------
stats
STAT pid 29736
STAT uptime 898
STAT time 1285476739
STAT version 1.4.5
STAT pointer_size 64
STAT rusage_user 0.060000
STAT rusage_system 0.070000
STAT curr_connections 5
STAT total_connections 903
STAT connection_structures 7
STAT cmd_get 896
STAT cmd_set 1792
STAT cmd_flush 0
STAT get_hits 2
STAT get_misses 894
STAT delete_misses 0
STAT delete_hits 896
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 206439
STAT bytes_written 28017
STAT limit_maxbytes 1073741824
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT bytes 93984
STAT curr_items 894
STAT total_items 1792
STAT evictions 0
STAT reclaimed 0
END
--------

次は、PHPのセッション格納先にMemcachedを利用する方法です。
--------
http://www.suz-lab.com

2010年9月24日金曜日

"s3cmd"でヘッダの追加

スズキです。

以前、"s3cmd"でS3との同期しかたを紹介しましたが、
http://blog.suz-lab.com/2010/08/s3cmd.html

今回は、その同期時に、任意のヘッダを加える方法です。
※下記で紹介したCloudFrontのTTLの調整に利用できます。
http://blog.suz-lab.com/2010/09/cloudfrontttl241.html

具体的には、下記のように"--add-header"オプションで行います。
--add-header=NAME:VALUE

実際に、CloudFrontのTTLを1時間にする場合は、
Cache-Control:max-age=3600
として、下記のように指定します。

--------【Shell】--------
#!/bin/sh
date >> /tmp/s3cmd.log 2>&1
/usr/bin/s3cmd -c /root/s3.cfg -P sync \
-v --no-preserve --no-progress --delete-removed \
--add-header=Cache-Control:max-age=3600 \
/tmp/source/ s3://cdn.suz-lab.com/target/ \
>> /tmp/s3cmd.log 2>&1
exit 0
--------

まだまだ、ブログにメモしたいことは、いっぱいある...
--------
http://www.suz-lab.com

CentOSにAPCをインストール(PHP)

スズキです。

下記で紹介した5.2.13用のインストール方法です。
http://blog.suz-lab.com/2010/04/centos-54php-5213yum.html

インストールは、こんな感じです。
# yum install php-pear
# rpm -Uvh http://rpms.famillecollet.com/enterprise/5/olds/x86_64/php-pecl-apc-3.0.19-1.el5.remi.x86_64.rpm

設定ファイルは下記にありますが、デフォルトの状態で有効になります。
/etc/php.d/apc.ini

管理画面のPHPは下記にあります。
/usr/share/doc/php-pecl-apc-3.0.19/apc.php

上記を HTTPで見えるパスにコピーして、下記のようにパスワードを設定しておくと、
そのアカウントでログインできるようになります。

--------【apc.php】--------
...
defaults('ADMIN_USERNAME','apc');
defaults('ADMIN_PASSWORD','apc!23');
...
--------

効果があるといいなー...
--------
http://www.suz-lab.com

Apacheのログを毎日圧縮して一ヶ月分残してローテート

スズキです。

といっても、単なる"logrotate"の話です。

こんな感じにしておけば、OKです。

--------【/etc/logrotate.d/httpd】--------
/var/log/httpd/*log {
  daily
  rotate 30
  compress
  missingok
  notifempty
  sharedscripts
  postrotate
    /sbin/service httpd reload > /dev/null 2>/dev/null || true
  endscript
}
--------

ブログネタが書ききれてないなー…
--------
http://www.suz-lab.com

Notepad++ Portable 5.8 リリース

スズキです。

近頃、エディタをサクラエディタからNotepad++に変更しました。
http://notepad-plus-plus.org/

そして、下記で紹介されているように、
ポータブル版のバージョン5.8もリリースされました。
http://portableapps.com/news/2010-09-22_-_notepadpp_portable_5.8

早速アップデートしておきましたが、使い始めて間もないので、
何が良くなったかは、まったくわかってません...

プラグインとかいろいろ試してみよう。。。
--------
http://www.suz-lab.com

2010年9月21日火曜日

CloudFrontで最短のTTLが24時間から1時間に

スズキです。

近頃、AWSで新機能がいろいろリリースされてますが、
今回は、そのレビューではなく、公式ブログの2010/04/20の記事についてです。

この記事は、CloudFrontの最短のTTLが24時間から1時間に短縮された、
というものです。

おそらく、今でもデフォルトは24時間のままじゃないかと思います。
(検証はしていませんが体感ということで...)

なので、短縮された1時間をTTLにするには、
下記のようなHTTPのヘッダーを該当コンテンツに加える必要があります。

Cache-Control: max-age=3600

下記のように"AWS Management Console"のS3のタブで、
該当コンテンツのプロパティで確認することもできます。


CloudFrontはAWSのプロダクトの中でもかなり秀逸なものだと思います。
効果的に利用した事例も、どんどん出てくるのではないでしょうか?
--------
http://www.suz-lab.com

Postfix&Dovecotで"POP before SMTP"(CentOS)

スズキです。

SMTP-AUTHでがんばろうとしましたが、
いろいろあって、結局"POP before SMTP"です...

まずは、必要なパッケージをインストールします。

# yum -y install perl-BerkeleyDB
# yum -y install pop-before-smtp

そして設定ファイル(/etc/pop-before-smtp-conf.pl)を下記のように、
Postfix&Dovecotに即した形に調整します。
※コメントアウトされている下記のコメントをはずします。

--------【pop-before-smtp-conf.pl】--------
...
$logto = '/var/log/pop-before-smtp';
...
$dbfile = '/etc/postfix/pop-before-smtp';
...
$file_tail{'name'} = '/var/log/maillog';
...
# For Dovecot POP3/IMAP when using syslog.
$pat = '^[LOGTIME] \S+ (?:dovecot: )?(?:imap|pop3)-login: ' .
'Login: .*? (?:\[|rip=)[:f]*(\d+\.\d+\.\d+\.\d+)[],]';
$out_pat = '^[LOGTIME] \S+ (?:dovecot: )?(?:imap|pop3)-login: ' .
'Disconnected.*? (?:\[|rip=)[:f]*(\d+\.\d+\.\d+\.\d+)[],]';
...
--------

さらに、Postfixの設定ファイル(/etc/postfix/main.cf)も下記のようにします。

--------【pop-before-smtp-conf.pl】--------
...
smtpd_recipient_restrictions =
check_client_access hash:/etc/postfix/pop-before-smtp,
reject_unauth_destination
--------

最後に、Postfixを再起動してPop-before-smtpを起動すれば、
Postfix&Dovecotで"POP before SMTP"が利用できるようになります。

# /etc/init.d/postfix restart
# /etc/init.d/pop-before-smtp start

メール関係は、一通り復習した感じかな...
--------
http://www.suz-lab.com

2010年9月20日月曜日

CloudFrontの上限

スズキです。

> 既定では、お客様の配信物のピーク時データ転送速度 1,000メガビット/秒、
> およびピーク時リクエスト速度 1000リクエスト/秒 がサポートされています。
> このトラフィック量よりも多くを見込む場合は、
> 制限値を増やすためのリクエストを行なってください。
> 2営業日以内に、お客様の配信物に対する能力が強化されます
--------
http://aws.amazon.com/jp/cloudfront/#details

とのことなので、まとめると次のようになります。

ピーク時データ転送速度: 1,000メガビット/秒
ピーク時リクエスト速度: 1,000リクエスト/秒

さらに上限を増やしたい場合は、下記フォームよりリクエストします。
http://aws.amazon.com/jp/cloudfront-request

今後もCloudFrontが大活躍の予感…
--------
http://www.suz-lab.com

S3とCloudFrontのみでサイトホスティング

スズキです。

下記のように、CloudFrontの機能も向上し、
そろそろ静的なコンテンツのみなら、EC2を引っ張りださなくても、
S3とCloudFrontのみでホスティングできるんじゃないか、
っていうか、したほうがいいんじゃないか?、と思うようになってきました。

▼CloudFrontで"Default Root Object"を指定
http://blog.suz-lab.com/2010/09/cloudfrontdefault-root-object.html

▼CloudFrontでInvalidation
http://blog.suz-lab.com/2010/09/cloudfrontinvalidation.html

ということで、実際にやっちゃいました。

やっちゃったサイトは、僕の所属している会社のサイトです。
http://www.iret.co.jp

超高速です…

万が一、Yahooのニュースなどになって、大量のアクセスがあっても、
今後は問題ないでしょう…

この辺、そのうち、AWS+の商品にも登場します…
http://www.aws-plus.com/service/
--------
http://www.suz-lab.com

2010年9月18日土曜日

PostgreSQLでウォームスタンバイ(pg_standby)

スズキです。

PostgreSQLのインストールが終わったら、
http://blog.suz-lab.com/2010/09/centospostgresql84.html
次は"pg_standby"を利用したウォームスタンバイです。

ですので、マスターサーバとスレーブ(スタンバイ)サーバが登場します。

▼ まずは両サーバでの作業です。

(1) 下記で"pg_standby"を利用できるようにします。

# yum -y install postgresql84-contrib

(2) "rsync"で"/var/lib/pgsql/backups/archive"に
アーカイブログを転送できるようにします。

# yum -y install xinetd
# yum -y install rsync

--------【/etc/rsyncd.conf】--------
[archive]
path=/var/lib/pgsql/backups/archive
read only=false
uid = postgres
gid = postgres
--------

# chkconfig xinetd on
# chkconfig rsync on
# /etc/init.d/xinetd start

詳しくはこちら
http://blog.suz-lab.com/2010/03/centosrsync.html

▼ 次にマスターサーバです。

(1) PostgreSQLを起動する前に、"/var/lib/pgsql/data"をバックアップして、
スレーブサーバに転送しておきます。

(2) 設定ファイル(/var/lib/pgsql/data/postgresql.conf)を下記のようにして、
アーカイブログをスレーブサーバに転送するようにします。

--------【postgresql.conf】--------
...
archive_mode = on
archive_command = 'rsync %p pg-slave::archive/%f'
archive_timeout = 10
...
--------

(3) PostgreSQLを起動します。

# /etc/init.d/postgresql start

▼ 最後にスレーブサーバです。

(1) まず、"/var/lib/pgsql/data"をマスターサーバのものにします。

(2) 下記のような"/var/lib/pgsql/data/recovery.conf"を用意します。

--------【recovery.conf】--------
restore_command = '/usr/bin/pg_standby -l -t
/var/lib/pgsql/data/failover /var/lib/pgsql/backups/archive/ %f %p %r'
--------
# ll recovery.conf
-rw------- 1 postgres postgres 116 9月 17 22:58 recovery.done

(3) PostgreSQLを起動するとリカバリーモードで起動します。(接続はできません)

# /etc/init.d/postgresql start

(4) "/var/lib/pgsql/data/failover"を作成するとファイルオーバーして、
接続できるようになります。

# touch /var/lib/pgsql/data/failover

次は、pgpool-II...
--------
http://www.suz-lab.com

2010年9月17日金曜日

Google Chrome Portable 6.0.472.59 リリース

スズキです。

つい最近、アップデート(6.0.472.59)したと思ったら、
http://blog.suz-lab.com/2010/09/google-chrome-portable-6047255.html

また、アップデートしていました...
http://portableapps.com/news/2010-09-16_-_google_chrome_portable_6.0.472.59

「7」も、そろそろ、ちゃんとリリースするのかなー…
--------
http://www.suz-lab.com

2010年9月15日水曜日

CentOSにPostgreSQL(8.4)をインストール

スズキです。

今やMySQLばかりで、すっかり忘れてしまったPostgreSQLですが、
縁あって、インストールから復習です。

まずは"yum"でインストールです。
※"postgresql-server"というパッケージもありますが、バージョンが8.1なので注意です。

# yum install postgresql84-server

そして、サービスを開始する前にDBを作成しておきます。
※DBを作っておかないとサービスを開始できません。

# /etc/init.d/postgresql initdb

最後に、サービスのスタートです。

# /etc/init.d/postgresql start

これで、PostgreSQLが利用できるようになりました。

今日中に全部、思い出そう...
--------
http://www.suz-lab.com

Microインスタンス登場!

スズキです。

最近、AWSの日本語ブログができたようです。
その2010/09/09の記事にMicroインスタンスという新インスタンスの紹介がありました。

早速、コンソールで確認してみると、下記のように、利用できるようになっていました。


特徴は下記のような感じです。

- 時間あたり$0.02(Windowsは$0.03)
- 613MBのRAM
- 32bit/64bit
- EBSブートのみ
- ephemeralストレージ無し
- CPUは短期間のバーストが可能で最大2ECU

といったことで、とりあえず、動作確認環境で利用してみようと思います。

AWS+の商品にも反映しないと...
--------
http://www.suz-lab.com

Google Chrome Portable 6.0.472.55 リリース

スズキです。

なんか、ChromeがVer.6になってました。

そして、ポータブル版もリリースしてました。
http://portableapps.com/news/2010-09-07_-_google_chrome_portable_6.0.472.55

ポータブル環境の見直しの一環として、早速、アップデートです。

でも、違いがあまりわかりませんでした...
--------
http://www.suz-lab.com

2010年9月14日火曜日

"rotatelogs"でログ出力(Apache)

スズキです。

CentOSで普通にApacheを利用していると、
ログのローテーションには、"logrotate"を使っていると思います。

この場合、ログのスイッチ時に、Apacheのリスタートが走り、
Webアプリケーションによっては、このタイミングで問題が発生する可能性もあります。

ということでタイトルのように、Apache標準の"rotetelogs"コマンドを利用して、
上記問題を回避してみました。

具体的には"/etc/httpd/conf/httpd.conf"を下記のように調整します。

--------【httpd.conf】--------
...
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/access_log.%Y%m%d
86400" combined
...
--------

これで1日単位で、下記のようなファイル名で、
Apacheの再起動なしにログが出力されるようになります。
※ErrorLogでも利用可能です。

access_log.20100910
access_log.20100911
access_log.20100912

名前がまぎらわしい...
--------
http://www.suz-lab.com

PHP(4.4.9)で"phpMyAdmin"

スズキです。

最新の"phpMyAdmin"はPHP5にしか対応して無いので、
PHP4を使う場合は、以下のバージョンが2.11.11のものを利用します。

http://www.phpmyadmin.net/home_page/downloads.php

PHP4関係は、もう、落ち着いたかなー...
--------
http://www.suz-lab.com

2010年9月10日金曜日

CentOSにMemcachedをインストール

スズキです。

こんな感じです。

# yum -y install memcached
# /etc/init.d/memcached start
# chkconfig memcached on

AWSで、RDSみたいなMemcacheプロダクト、でないかなー...
--------
http://www.suz-lab.com

PHP(4.4.9)でMySQLを使えるようにするときに...

スズキです。

ソースからビルドするときに、オプションの書き方で違いがありました...

下記のようなオプションでビルドすると、

# ./configure --with-apxs2=/usr/sbin/apxs --with-mysql

以下のようになり、

--------【phpinfo】--------
...
Client API versioni: 3.23.49
MYSQL_MODULE_TYPE: builtin
...
--------

下記のようなオプションでビルドすると、

# ./configure --with-apxs2=/usr/sbin/apxs --with-mysql=/usr

以下のようになります。

--------【phpinfo】--------
...
Client API versioni: 5.1.50
MYSQL_MODULE_TYPE: external
...
--------

どちらもインストールまでできてしまうので、注意が必要です。

ここ数ヶ月、一日一エントリペースが達成できない...
--------
http://www.suz-lab.com

2010年9月9日木曜日

EC2(ap-southeast-1)のOEL(5.5)にOracle(10.2.0.1)をインストール

スズキです。

まず、OEL(Oracle Enterprise Linux)5.5の準備は下記のAMIを利用します。

ami-fa344aa8(131827586825/OEL5.5-x86_64)

次にOracleのインストールに必要なパッケージをインストールします。

# yum -y install libXp compat-db libgomp

カーネルパラメータ(/etc/sysctl.conf)も調整しておきます。

--------【sysctl.conf】--------
...
fs.file-max 327679
net.core.rmem_max=2097152
net.core.wmem_max:262144
net.ipv4.ip_local_port_range:1024 65000
--------
# sysctl -p

SELinux(/etc/selinux/config)も無効にしておきます。

--------【selinux/config】--------
SELINUX=disabled
...
-------

すでに存在する、oracleユーザーのパスワードも適当なものに変更しておきます。

# passwd oracle

ここで一旦、リブートして、次はOracleのインストールです。

まず、下記よりOracle(10201_database_linux_x86_64.cpio.gz)を
ダウンロード(/usr/local/src/)します。

http://www.oracle.com/technology/global/jp/software/products/database/oracle10g/htdocs/10201linx8664soft.html

ダウンロードしたファイルは、下記のように展開します。
(databaseディレクトリにいろいろ展開されます)

# gunzip 10201_database_linux_x86_64.cpio.gz
# cpio -idmv < 10201_database_linux_x86_64.cpio

そして、下記で紹介しているように、サイレントインストールを行います。

http://blog.suz-lab.com/2007/06/oracle10g2.html

実際には、下記のレスポンスファイルの値を次ののように調整しています。

/usr/local/src/database/install/response/se.rsp

--------【/home/oracle/se.rsp】--------
...
FROM_LOCATION="/usr/local/src/database/stage/products.xml"
ORACLE_HOME="/opt/oracle-10.2.0.1"
ORACLE_HOME_NAME="oracle_10_2_0_1"
s_nameForDBAGrp="dba"
s_nameForOPERGrp="dba"
n_configurationOption=3
...
--------
# cd /usr/local/src/database
# ./runInstaller -ignoreSysPrereqs -silent -responseFile /home/oracle/se.rsp

無事インストールが終わったら、最後にroot権限で下記コマンドを実行します。

# /home/oracle/oraInventory/orainstRoot.sh
# /opt/oracle-10.2.0.1/root.sh

これで、Oracleインストールの完了です。

次は、データベースの作成です...
--------
http://www.suz-lab.com

2010年9月7日火曜日

CloudFrontで"Default Root Object"を指定

スズキです。

再び、CloudFrontネタで、クイックじゃないレビューです。

今回は、2010/08/02に本家のブログで紹介された内容です。

CloudFrontの利用で、よく話題になるものに、"/"でアクセスすると、
コンテンツの情報が出力されてしまう、というものがあります。

これが、"Default Root Object"として適当なオブジェクト(ファイル)を指定することで、
回避できるようになりました。
("/"でアクセスしても指定したファイルの内容が出力されます)

サポートしているツールは以下のようです。

- CloudBuddy Personal
- Bucket Explorer
- CloudBerry Explorer
- boto

ですので、今回も、以前利用した"CloudBerry Explorer"で確認してみました。

まずは下記のように、CloudFrontで公開している適当なS3のバケットを右クリックして、
メニューの「Distribution」を選択します。


次に以下のように、表示した"General"タブの下部にある"Default root object"に、
すでに存在している、適当なコンテンツを入力すると、"/"でアクセスしたときに、
入力したオブジェクト(ファイル)の内容が出力されるようになります。



ただし、適用されるのは、"http://cdn.suz-lab.com/"のみで、
そもそも、コンテンツ情報が出力されない"http://cdn.suz-lab.com/img/"などの
サブフォルダに関しては、今までどおり、コンテンツが見つからない状態のままです。

静的なコンテンツだけなら、"S3 & CloudFront"だけで、いけるんじゃないかなー...
--------
http://www.suz-lab..com

2010年9月3日金曜日

CloudFrontでInvalidation

スズキです。

ぜんぜんクイックではありませんが、AWS情報のクイックレビューです

2010/08/31のオフィシャルブログの記事にCloudFrontのInvalidation機能が
新機能として紹介されてました。

Invalidation機能とは、すべてのエッジサーバから指定したオブジェクト(ファイル)を
削除する機能で、要は、キャッシュクリアです。
(削除の反映は10分から15分程度かかるようです)

APIとして提供はされているのですが、機能が利用できるツールは、
今のところ、下記の二つのようです。

- CloudBuddy Personal
- CloudBerry Explorer

今回は、"CloudBerry Explorer"で試してみました。

下記のように、適当なオブジェクト(ファイル)を右クリックすると、
メニューから"CloudFront Invalidation"が選択できることが確認できます。


実際に、オブジェクト(ファイル)を上書きして、Invalidationすると、
10分程度で上書きしたものに、CloudFront上のキャッシュも変更されていることが確認できます。

最後にコストに関してですが、月当たり、最初の1000回は無料で利用できますが、
それ以降は、$0.005/回かかるので、乱用すると痛い目にあうかもしれません。

CloudFront、充実してきたなー...
--------
http://www.suz-lab.com

2010年9月2日木曜日

CentOSにOracle(10)が使えるPHP(4)をインストール

スズキです。

まずは下記より、Oracleの"Instance Client"をダウンロードします。
(RPM版があるので、そちらをダウンロードします)
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

PHPのビルドに必要なのは下記となります。

▼Instant Client Package - Basic
All files required to run OCI, OCCI, and JDBC-OCI applications

▼Instant Client Package - SDK
Additional header files and an example makefile
for developing Oracle applications with Instant Client

ダウンロードしたら、RPMのインストールです。

# rpm -Uvh oracle-instantclient-basic-10.2.0.4-1.x86_64.rpm
# rpm -Uvh oracle-instantclient-devel-10.2.0.4-1.x86_64.rpm

PHPのビルドは基本的に下記で紹介したとおりです。
http://blog.suz-lab.com/2010/09/centosphp4449.html

ただし、"configure"のオプションは下記のようにします。

# ./configure ¥
--with-apxs2=/usr/sbin/apxs ¥
--with-oci8-instant-client=/usr/lib/oracle/10.2.0.4/client64/lib

ただし、このままだと、次のようなエラーが発生してしまいます...
"Oracle Instant Client SDK header files not found"

これは、RPMでインストールした、"oracle-instantclient-devel"の
インストールパスの整合性が取れてないからなので、
下記のように整合性を取ります。

# cd /usr/lib/oracle/10.2.0.4/client64/lib/
# mkdir sdk
# cd sdk
# ln -s /usr/include/oracle/10.2.0.4/client64 include

この状態で再度"configure"すると問題なくインストールまでできるようになります。

APACでLARGEインスタンスが作れない...
--------
http://www.suz-lab.com

CentOSにPHP4(4.4.9)をインストール

スズキです。

古い環境をAWSに移行するので...

"apxs"が必要なので、"httpd-devel"をインストールします。

# yum -y install httpd-devel

下記より、"php-4.4.9"を見つけてダウンロードします。
http://www.php.net/releases/

そして、いつものお約束です。
# tar xvzf php-4.4.9.tar.gz
# cd php-4.4.9
# ./configure --with-apxs2=/usr/sbin/apxs
# make
# make install

"/etc/httpd/conf/httpd.conf"に下記を追記します。

--------【httpd.conf】--------
...
# For PHP4
LoadModule php4_module modules/libphp4.so
AddType application/x-httpd-php .php
--------
※ 以前にも調べてました...
http://blog.suz-lab.com/2009/05/phphttpdconf.html

ドキュメントルートに、以下のようなPHPを置いて、
PHPの情報が表示すれば、無事インストール完了です。

--------【PHP】--------
<?php phpinfo(); ?>
--------

次はOracleクライアントだー...
--------
http://www.suz-lab.com

2010年9月1日水曜日

NRPEの設定(監視側)

スズキです。

リモートホスト側に引き続き、監視側の設定です。
http://blog.suz-lab.com/2010/08/nrpe.html

とりあえず、Nagiosのインストールです。

# yum -y install nagios
# yum -y install nagios-plugins-all

NRPEプラグインもインストールしておきます。

# yum -y install nagios-plugins-nrpe

そして、NRPEプラグインが利用できるように、
設定ファイル(/etc/nagios/objects/commands.cfg)に下記を記述します。

--------【commands.cfg】--------
...
# 'check_nrpe' command definition
    define command {
    command_name check_nrpe
    command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$
}
...
--------

最後に、下記のように監視設定を記述すれば、NRPE経由で取得した、
ローカル情報に対して、監視ができるようになります。

--------
define service {
    use suz-service
    host_name suz-master
    service_description Current Load
    check_command check_nrpe!check_load!5,4,3 10,6,4
}
--------

監視設定も、あと二つ...
--------
http://www.suz-lab.com

2010年8月31日火曜日

passwd: Authentication token manipulation error (Linux)

スズキです。

Linuxでパスワード変更しようとしたときのエラーです...

以下に原因と対策が詳しく紹介されていました。
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/428errpasswdcmd.html

実際は、こんな感じに、コマンド打ってます。

# passwd
Changing password for user root.
passwd: Authentication token manipulation error
# pwconv
# passwd
Changing password for user root.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

でも、SSHの認証で"root"がパスワード入力でログインできるようになってしまった...
--------
http://www.suz-lab.com

2010年8月30日月曜日

Linux(CentOS)でCPUとメモリの情報を取得

スズキです。

"/proc/cpuinfo"と"/proc/meminfo"に書いてあります。

シンガポールのEC2(Smallインスタンス)で試してみました。

# cat /proc/cpuinfo
--------
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Xeon(R) CPU E5430 @ 2.66GHz
stepping : 10
cpu MHz : 2666.666
cache size : 6144 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu tsc msr pae mce cx8 apic mca cmov pat pse36
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni
monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm
bogomips : 5336.03

# cat /proc/meminfo
--------
MemTotal: 1740944 kB
MemFree: 1018876 kB
Buffers: 29432 kB
Cached: 549724 kB
SwapCached: 0 kB
Active: 345108 kB
Inactive: 312048 kB
HighTotal: 1003528 kB
HighFree: 366780 kB
LowTotal: 737416 kB
LowFree: 652096 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 128 kB
Writeback: 0 kB
Mapped: 10856 kB
Slab: 39532 kB
CommitLimit: 870472 kB
Committed_AS: 11952 kB
PageTables: 320 kB
VmallocTotal: 118776 kB
VmallocUsed: 248 kB
VmallocChunk: 118512 kB

8月も終わってしまう...
--------
http://www.suz-lab.com

2010年8月27日金曜日

(書評) Amazon EC2クラウドWindows2003 Server構築ガイド

スズキです。

目次は下記の通りです。
========
1. Amazon EC2って何?
2. アカウントの作成
3. 仮想マシンの設定と起動
4. 保存用ドライブEBSの設定
5. 日本語化と実用的設定
6. バンドルとAMIの作成
7. EC2その他の機能
8. AWS登録内容の確認と変更
9. IISのインストール
10. Apacheのインストール
11. PHPのインストール
12. MySQLのインストール
13. phpMyAdminのインストール
14. FileZillaのインストール
15. Mercuryのインストール
16. XAMPPのインストール
17. WordPressのインストール
18. FileMaker Serverのインストール
========

Windowsに特化した、現在、唯一のEC2(AWS)本です。

ただ、「Windows & EC2」の内容は、以下の部分で、
それほどボリュームがあるわけではありません。

3.03(P.36) Administrator用Passwordの発行

4.01(P.44) サーバへVolumeを追加する

4.03(P.54) Windowsインストールディスクを準備する

6.05(P.91) バンドルを行う(インスタンスのバックアップ)

それ以外は、はじめの方は、クラウド/AWS/EC2の概論的な話、
おわりの方は、むしろWindows上でのサーバ構築の話になっています。

EC2本というよりも、Windows上でのサーバ構築本として、
購入したほうが、気分的にいいかもしれません。

AWS系の和書はコンプリートかな?
--------
http://www.suz-lab.com

NRPEの設定(リモートホスト側)

スズキです。

NRPEとは、Nagiosのコマンドをリモートホスト上で実行する仕組みです。
SNMPなどを使わずに、
リモートホストのロードアベレージなどの監視ができるようになります。

インストールはこんな感じです。

# yum install nagios-nrpe rpmforge
※ rpmforge


# yum install nagios-plugins-all
※ epel

そして"/etc/nagios/nrpe.cfg"を下記のように適当に修正します。

allowed_hosts=127.0.0.1
→ #allowed_hosts=127.0.0.1
※どこからでもアクセス可能にします。(EC2なんで…)

dont_blame_nrpe=0
→ dont_blame_nrpe=1
※実行するコマンドに引数を使えるように

コマンドの登録も適当にしておきます。
command[check_users]=/usr/lib/nagios/plugins/check_users -w $ARG1$ -c $ARG2$
command[check_load]=/usr/lib/nagios/plugins/check_load -w $ARG1$ -c $ARG2$
command[check_disk]=/usr/lib/nagios/plugins/check_disk -w $ARG1$ -c
$ARG2$ -p $ARG3$
command[check_procs]=/usr/lib/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$

これで、下記のようにNRPEサービスを開始すれば、Nagiosから利用できます。
# /etc/init.d/nrpe start

起動時に開始するようにするには、こちらです。
# chkconfig nrpe on

次は、Nagios側の設定…
--------
http://www.suz-lab.com

2010年8月24日火曜日

SUZ-LAB謹製 CentOS AMI アップデート (ap-southeast-1)

スズキです。

"ap-southeast-1"でも公開しました。

Manifestは下記となります。

64bit: 811118151095/suz-lab_ebs_centos-core-x86_64-5.5.2
32bit: 811118151095/suz-lab_ebs_centos-core-i386-5.5.1

そろそろ、下記にも登録しようかなー...
http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=171
--------
http://www.suz-lab.com

"hostname"を変更したらProFTPDが動かなくなった

スズキです。

以下のように"hostname"を変更したら、

# hostname suz-lab

ProFTPDが動作しなくなってしまいました...

実際に下記のように"proftpd"コマンドを実行してみると、
"hostname"に指定した"suz-lab"から
IPアドレスを決定できないことが原因のようです。

# proftpd
- warning: unable to determine IP address of 'suz-lab'
- error: no valid servers configured
- Fatal: error processing configuration file '/etc/proftpd.conf'

なので、"suz-lab"でIPアドレスが決定できるように、
下記のように、"/etc/hosts"ファイルに記述します。

--------【hosts】--------
127.0.0.1 localhost suz-lab
--------

これで、ProFTPDを再起動すると、無事、動作することが確認できました。

エラー系のログが無くて、解決に時間がかかってしまった...
--------
http://www.suz-lab.com

2010年8月23日月曜日

MySQLのメモリ関係のパラメータとRDSのデフォルト値

スズキです。

メモリ関係のパラメータは、下記のように"/etc/my.cnf"で指定できます。

--------【my.conf】--------
...
key_buffer = 1024M
sort_buffer_size = 8M
read_buffer_size = 8M
--------

【key_buffer】
MyISAM テーブルのインデックスを保存しておくバッファの大きさ。
サーバ全体で共有。

【sort_buffer_size】
sort時に使用されるバッファの大きさ。
"ORDER BY"や"GROUP BY"のパフォーマンスに影響。

【read_buffer_size】
テーブルを順次読み込んでいく時に使用されるバッファの大きさ。
INDEXが使用されない場合のパフォーマンスに影響。

そして、RDS(LARGE)では、デフォルトで下記のように設定されています。

sort_buffer_size: 2097144
key_buffer_size: 16777216
read_buffer_size: 262144

パラメータ関係はもっと調べておかないと...
--------
http://www.suz-lab.com

2010年8月19日木曜日

CentOSにUserminの導入

スズキです。

いつもの"yum"頼みです。

# yum install usermin
※リポジトリは"webmin"です。

...
Usermin install complete. You can now login to http://xxx.xxx.xxx.xxx:20000/
as any user on your system.
...

これで、 http://xxx.xxx.xxx.xxx:20000/ でUserminにアクセスできます。

言語の変更は"/etc/usermin/config"で設定します。

--------【config】--------
...
lang=ja_JP.UTF-8
--------

HTTPSでアクセスしたい場合は、Net::SSLeay(Perlモジュール)をインストールし、

# yum install perl-Net-SSLeay
※リポジトリは"rpmforge"です。

"/etc/usermin/miniserv.conf"の"ssl=0"を"ssl=1"に変更します。

--------【miniserv.conf】--------
...
ssl=1
...
--------

これで、 https://xxx.xxx.xxx.xxx:20000/ でUserminにアクセスできます。

ApacheやMySQLとの連携も調査しないと...
--------
http://www.suz-lab.com

"us-west-1"のAMI(EBS)を"ap-southeast-1"に

スズキです。

結局、かなりベタな方法になってしまいました。

【us-west-1】

1. AMIのスナップショットからEBSボリュームを作成

"AWS Management Console"などの適当なツールで簡単にできます。

2. 適当なインスタンス(Linux)を立ち上げ、上記のEBSボリュームをアタッチ

これも適当なツールで簡単にできます。

3. インスタンスにログインしてEBSボリュームの内容からイメージファイルを作成

下記コマンドでできます。(EBSボリューム"/dev/sdb1"は10Gを想定)
# dd if=/dev/sdb1 of=suz-lab.img count=10240 bs=1M

4. イメージファイルを"ap-southeast-1"のインスタンス(Linux)に転送

"ap-southeast-1"にインスタンスを用意した後、"scp"などで転送します。

【ap-southeast-1】

1. 適当なインスタンス(Linux)を立ち上げ、新規のEBSボリュームをアタッチ

"us-west-1"からイメージファイルを"scp"する前に立ち上げときます。

2. イメージファイルの内容をEBSボリュームにコピー

下記コマンドでできます。(EBSボリューム"/dev/sdb1"は10Gを想定)
# dd if=suz-lab.img of=/dev/sdb1 count=10240 bs=1M

3. EBSボリュームをデタッチしたスナップショットを作成

"AWS Management Console"などの適当なツールで簡単にできます。

4. スナップショットをAMIとして登録

下記コマンドでできます。("--region"の指定に注意です)
# ec2reg \
-K /mnt/pk.pem \
-C /mnt/cert.pem \
-s snap-xxxxxxxx \
-a i386 \
--region ap-southeast-1 \
-d suz-lab \
-n suz-lab

これで、"ap-southeast-1"にもSUZ-LAB謹製AMIが整ったぞ。
--------
http://www.suz-lab.com

iPhone 4 & RBK-2000BTII

スズキです。

一時期、どこにも売ってなかったんですが、
ついに購入することができました。

ペアリングも簡単に問題なく完了しました。

現在、キーボードのある"iPhone 4"生活を試しているところです。

とりあえず、仕事でも使っているメッセンジャー系は、BeejiveIMを利用して、
iPhoneで受けることにしました。

机にいるときは、このキーボードで操作するようにしているのですが、
アプリとともに、なかなか実用的じゃないか?、と思っています。
(机にいるときは、ついでにSMS/MMSも、このキーボードで操作しています...)

次はポメラ的な使い方に挑戦してみようと思います。

メモアプリは何にしよう...
--------
http://www.suz-lab.com

(献本御礼) 間違いだらけのソフトウェア・アーキテクチャ

スズキです。

訳者、出版社より、献本いただきました。

目次は以下の通りです。
========
第1章 アーキテクト入門―長い道のりの最初の一歩

プロローグ ─ 最後のセミナー
セミナーの始まり

第2章 アーキテクチャという名の歴史と思想―僕の偏った歴史観
コンピュータとアーキテクチャの歴史
休憩時間に……その1「アジャイルについて」

第3章 アプリケーションアーキテクチャへようこそ―もしくは勝手な思いつき
アーキテクチャ概要
休憩時間に……その2「製造業と開発プロセスについて」

第4章 品質特性シナリオ―ようやくアーキテクトの仕事っぽくなってきた
品質特性を見つける
休憩時間に……その3「認証について」

第5章 ビジネスロジックと形式手法―人間の仕事という不可解な部分を考察する
人間の仕事ってヤツは
形式主義者
休憩時間に……その4「見積もりと経験について」

第6章 ATAM による分析評価―アーキテクチャを丸裸にする話
アーキテクチャの分析/評価
休憩時間に……その5「派生開発とアーキテクチャの分析と評価」

第7章 メトリクスとDSM―俺の考えたアーキテクチャを壊すヤツは許さん
アプリケーションの分析/評価

第8章 アーキテクトへの長い道のりの次の一歩―ここで崖に落ちなきゃいいんだけど
セミナーのおわり
おわりに

訳者あとがき
参考文献
========

本書は、アプリケーションアーキテクチャ(特に非機能要件)の開発と評価の方法と、
それを行うアーキテクトの役割を、セミナー形式で少しくだけた感じに紹介しています。

セミナーには、下記のような職種の参加者おり、それぞれの視点で、
著者に「つっこみ」をいれています。

- シニア・マネージャー
- 宇宙人
- アジャイル教の教祖
- IT雑誌の記者
- SE
- 新人

上記の参加者は、それぞれの職種での立場をかなり誇張した形で書かれていますが、
「あー、そんな人いたなー」
「自分も、そんな風に考えてたことがあったなー、」
など思い当たる節も多々あり、つい、昔をふりかえながら読んでしまいました。

本書で、アプリケーションアーキテクチャが、どのように紹介されているか、
簡単にメモしてみました。(詳しくは書籍を読んでください!)

▼ アーキテクチャは下記より決定

- 機能要件 & 非機能要件
- 制約条件 & 前提条件

▼ アーキテクチャが提供するもの
-システムの理解を助ける
-組織の構造に影響を与える
-将来の見通しを良くする
-ソースコードの実装ルールを提供する
-システムの品質

▼ アプリケーションアーキテクチャー → 論理層 + 物理層

論理層: ビジネスロジック部分、表示部分、永続化部分、...
物理層: 各種フレームワーク、共通ライブラリ、...

▼ アーキテクトの作業
1. 要件定義
2. アーキテクチャの構築
3. 実装環境の準備
4. アーキテクチャ管理

最後に、心に残ったフレーズを、いくつか紹介しておきます。

「見積は経験で出すのが一番。」
※巷の見積もり手法は、あくまで参考値として...

「アーキテクトは月に一回電車を乗り間違える。」
※いつもアーキテクチャのことを考えてるから...(近頃、乗り間違えないなー...)

「一匹の羊に率いられた百匹の狼は、一匹の狼に率いられた百匹の羊に敗れる。」

※チームリーダークラスを充実させるのが効率いいのでは?

「完璧とは、何かを足せない状態になることではない。何も削るものがなくなった状態のことだ。」
※(これは、これから、いつも意識するようにしよう...)

献本、大歓迎!(ご相談は suzuki@suz-lab.com まで)
--------
http://www.suz-lab.com

2010年8月13日金曜日

(書評) Amazon EC2/S3/EBS クラウドコンピューティングによる仮想サーバ構築

スズキです。

目次はこちらです。
========
1. クラウドコンピューティングの概要
2. Amazon Web Serviceの利用
3. Amazon EC2の利用
4. Amazon S3の利用
5. Amazon EBS(Elastic Block Store)の利用
6. Elasticfox
7. AWS Management Console
8. Windowsサーバの使用
9. Amazon CloudFront
10. Amazon Elastic MapReduce
11. AmazonEC2、S3、CloudWatchツールコマンド
========

本書は、こちらでまとめたものの中での最後の紹介となります。

他の書籍と違って特徴的なところは、コマンドラインの操作方法を、
多めに掲載しているというところでしょうか?

特に、第3章、第4章、第5章に関しては、EC2を利用するために、
コマンドラインのツールのインストールから紹介し、
実際のコマンドラインの利用、SSH(Putty)でのログイン、
Apacheの動作確認まで、コマンドライン(シェル)での操作を中心に、
解説されています。

当然、クラウド、AWSサービスに関する説明も、第1章、第2章で
しっかりとされており、また、S3Fox、Elasticfox、
"Amazon Management Console"のようなGUIに関しても、
使い方まで、しっかりと言及されています。

基本的にはLinux中心で書かれていますが、第8章では、
一章まるまる、EC2のWindowsインスタンスを扱っており、
日本語化の方法まで解説されています。

個人的に読み込んだところは、第10章のMapReduceのところでしょうか?
MapReduceに関しては、未だほとんど経験がないのですが、
本書を読むことで、ぐっとハードルを下げることができたような気がします。

とりあえず、簡単にAWSを一通り使ってみたい人にとっては、
最適な一冊ではないでしょうか?

EC2のWindows本を見つけてしまった...
--------
http://www.suz-lab.com

2010年8月12日木曜日

iPhone 4 & MW600/B

スズキです。

個サルの帰りに、錦糸町のヨドバシカメラで購入してしまいました。

せっかくのiPhoneなので、自転車や電車などの移動時間にオーディオブックでも聞こうと思っての購入です。

今までも、この手のものはいろいろ検討してきたのですが、「ディスプレイ付き」というのが決定的でした。

ペアリングも簡単にでき、通話や音楽など、問題なく利用できています。

iOS4.1ではAVRCPにも対応するようなので、今は利用できない曲送りや曲戻しなども可能になります!

でも、RBK-2000BTIIがどこにも売ってない...
--------
http://blog.suz-lab.com

http://blog.suz-lab.com/2010/07/iphone-4_30.html


Openswanのインストール(tarボール)

スズキです。

依存パッケージを"yum"でインストールした方法は下記ですが、
http://blog.suz-lab.com/2010/06/ec2-l2tpipsec-iphone_02.html
今回はtarボールからのインストールです。

いきなり、Openswanをインストールしようとすると、
gmp, bison, flex, が無いと怒られるので、
下記のように、それぞれインストールします。

▼gmp
$ curl -OL ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.gz
$ tar xvzf gmp-5.0.1.tar.gz
$ cd gmp-5.0.1
$ ./configure
$ make
$ make check
$ make install

▼bison
$ curl -OL http://ftp.gnu.org/gnu/bison/bison-2.4.3.tar.gz
$ cd bison-2.4.3
$ ./configure
$ make
$ make install

▼flex
$ curl -OL http://downloads.sourceforge.net/project/flex/flex/flex-2.5.35/flex-2.5.35.tar.gz
$ tar xvzf flex-2.5.35.tar.gz
$ cd flex-2.5.35
$ ./configure
$ make
$ make install

そして、Openswanのインストールです。

$ curl -OL http://www.openswan.org/download/openswan-2.6.28.tar.gz
$ tar xvzf openswan-2.6.28.tar.gz
$ cd openswan-2.6.28
$ make programs install

でも、カーネルが対応してなかった...
--------
http://www.suz-lab.com

2010年8月11日水曜日

Openswanには"ipsec-tools"が必要!?

スズキです。

Openswan(ipsec)実行時に、下記のよな警告が出力される場合があります。

ipsec_setup: ipsec_setup: WARNING: cannot flush state/policy database
-- `%defaultroute'. Install a newer version of iproute/iproute2
or install the ipsec-tools package to obtain the setkey command.

そんな時は、下記のように"ipsec-tools"をインストールすれば解決です。

# yum install ipsec-tools

これから当分VPNモードか!?
--------
http://www.suz-lab.com

MySQLのシステム変数を確認

スズキです。

下記のように"show variables"で確認できます。

mysql> show variables;

特定の変数(最大同時接続数)のみ表示したい場合は、
こんな感じです。

mysql> show variables like 'max_connections';

RDS最高!
--------
http://www.suz-lab.com

2010年8月10日火曜日

CentOSでNFSの設定(改)

スズキです。

下記のリファイン版です。
http://blog.suz-lab.com/2009/09/centosnfs.html

▼サーバ側

まずは、インストールです。

# yum install nfs-utils

次に、"/etc/exports"に公開したいディレクトリを記述します。

-------- 【exports】--------
/export/suz-lab *(rw,no_root_squash)
--------

EC2の場合、起動するたびにIPが変わるので、
接続元は*にしておきます。

そして、"/etc/fstab"には下記を記述し、マウントします。
※起動時には自動でマウントされます。

--------【fstab】--------
...
rpc_pipefs /var/lib/nfs/rpc_pipefs rpc_pipefs defaults 0 0
--------

# mount /var/lib/nfs/rpc_pipefs

最後に"nfs"、"portmap"を起動します。

# /etc/init.d/portmap start
# /etc/init.d/nfs start

念のため、起動時でも有効になりようにしておきます。

# chkconfig portmap on
# chkconfig nfs on

▼クライアント側

まずは、インストールです。

# yum install nfs-utils

そして、"/etc/fstab"には下記を記述し、マウントします。
※起動時には自動でマウントされます。

--------【fstab】--------
...
xxx.xxx.xxx.xxx:/export/suz-lab /mnt/suz-lab nfs defaults 0 0
--------

# /etc/init.d/netfs start

念のため、起動時でも有効になりようにしておきます。

# chkconfig netfs on

同じ内容をどんどんリファインして再度エントリにするのは、ありだなー...
--------
http://www.suz-lab.com

SwitchHostsでHostsファイルの管理(Firefox)

スズキです。

以下で紹介したように、
http://blog.suz-lab.com/2008/11/vistaapache.html
Apacheなどのバーチャルホストのテストをする場合は、
Hostsファイルを調整してテストすることになると思います。

実はこの調整は、結構UACが有効な場合など結構面倒な作業です。

また、テストは当然ブラウザを主に行うので、ブラウザの機能で調整できたら、
さらに効率的になるはずです。

以上を実現するのが、Firefoxのアドオンである"SwitchHosts"です。
https://addons.mozilla.org/ja/firefox/addon/14258/

ただし、やはり、UACが有効な場合は下記で紹介されている、
Hostsファイルのパーミッションをフルコントロールにする作業が必要になります。
http://switchhosts.mozdev.org/faq.html

Firefoxのアドオン、作ってみたいなー...
--------
http://www.suz-lab.com

(書評) クラウド Amazon EC2/S3のすべて

スズキです。

目次は以下の通りです。

========
1章 クラウドコンピューティングAmazon Web Servicesの概要
2章 Amazon EC2/S3とその関連サービス
3章 SKIPaaSがAmazon EC2を利用した理由
4章 Amazon EC2を活用したシステムの設計ポイント
5章 Amazon EC2でのテスト/保守/運用のポイント
6章 Amazon EC2/S3の基本的な使い方
7章 Amazon EC2/S3の実践的な使い方

========

著者は、AWS関係の調査でいつもお世話になっている、
こちらのブログと、こちらのブログを書かれている方たちです。

本書も他のAWS本と同様、クラウド(SaaS/PaaS/IaaS/...)の説明、
AWSサービス(EC2/S3/...)の紹介と利用方法などに対して詳しく説明されていますが、
特に、4章の「Amazon EC2/S3を活用したシステムポイント」に関しては、
AWSの制約を確認し、それに対する解決策を、あれば提案する形になっており、
非常に具体的で有用な情報になっています。

例えば、

制約: 日本に稼動ロケーションが無い
解決策: CloudFront(CDN)の活用

といった感じです。

また、負荷分散や冗長化にも言及しており、AWS上で複数のサーバを利用した
システム構築をする上では必読の一冊ではないでしょか?


AWS本、残り、あと一冊...
--------
http://www.suz-lab.com

2010年8月9日月曜日

"iptables(nat)"の設定

スズキです。

下記で"iptables"でNATの設定を紹介したのですが、
http://blog.suz-lab.com/2010/07/ec2ipweb.html
ちょっと場当たりだったので、ちゃんとまとめておきます。

まず、以下で紹介したように、カーネルパラメータ"ip_forward=1"を設定します。
http://blog.suz-lab.com/2010/08/ipforward.html

次に、"iptables"を起動してルールを設定できる状態にします。

# /etc/init.d/iptables start

そして、ルールを設定します。

# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to
xxx.xxx.xxx.xxx:80
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT
--to xxx.xxx.xxx.xxx:443

※EC2では起動するたびにIPアドレスが変わるので、以下で紹介したような、
"-d"オプションは省くことにしています。
http://blog.suz-lab.com/2010/07/ec2ipweb.html

最後にルール保存して、次回からも、このルールが有効になるようにします。

# /etc/init.d/iptables save
ファイアウォールのルールを /etc/sysconfig/iptables に保存中[ OK ]

"iptables"関係は、とりあえず、こんな感じかな?
--------
http://www.suz-lab.com

カーネルパラメータ(ip_forward)の変更方法

スズキです。

iptables(nat)の設定で、
http://blog.suz-lab.com/2010/07/ec2ipweb.html
"ip_forward = 1"にする機会が多いので、まとめみました。

1. "/proc/sys"ディレクトリに直接書き込み

# echo 1 > /proc/sys/net/ipv4/ip_forward

※再起動時には元に戻ってしまいます。(一時的)

2. "sysctl"コマンドを使用

# sysctl -w net.ipv4.ip_forward=1

※再起動時には元に戻ってしまいます。(一時的)

3. "/etc/sysctl.conf"に設定

--------【sysctl.conf】--------
...
net.ipv4.ip_forward = 1
...
--------

# sysctl -p

※再起動しても反映しています。(永続的)

こちらにも詳しく紹介されています。
http://thinkit.co.jp/free/tech/23/5/

"mod_proxy"より"iptables"?
--------
http://www.suz-lab.com

"s3cmd"で同期

スズキです。

こちらで"s3cmd"の導入を紹介したので、
http://blog.suz-lab.com/2010/07/s3cmd.html
次は、多分、一番良く使うであろう、S3との同期のやり方です。

詳しい説明は、こちらにありますが、
http://s3tools.org/s3cmd-sync
使い方は簡単で、下記のように行ないます。

# s3cmd sync /tmp/suz-lab/ s3://cdn.suz-lab.com/tmp/

見ての通り、"s3cmd sync 同期元 同期先"となっています。
※S3の指定は、"s3://バケット名/パス"となっています。

CloudFrontを前提とした同期スクリプトは、下記のようになるかもしれません。

--------【shell】--------
#!/bin/sh
date >> /var/log/s3sync.log 2>&1
s3cmd -c /root/.s3cfg -P sync /tmp/suz-lab/ s3://cdn.suz-lab.com/tmp/
>> /var/log/s3sync.log 2>&
exit 0
--------
※"-c"で設定ファイルを指定し、"-P"でパーミッションを公開モードにします。

AWS+もろもろは、今日で一旦、落ち着けよう。
--------
http://www.suz-lab.com

2010年8月7日土曜日

MySQLのバックアップ&リストア

スズキです。

以前にも紹介しましたが、
http://blog.suz-lab.com/2009/07/mysqlmysqldump.html
こちらはデータベース全体のダンプだけだったので...

特定DB(db)のバックアップはこんな感じです。

# mysqldump -u user -p db > db.sql

リストアはこんな感じです。

# mysql -u user -p db < db.sql

近頃の業務は、80%、このブログみながらやってるなー。
--------
http://www.suz-lab.com

MySQLのバイナリログの自動削除

スズキです。

下記の手動削除に続き、今度は自動削除です。
http://blog.suz-lab.com/2010/06/mysql.html

以下の情報が非常に参考になりました。
http://wiki.bit-hive.com/tomizoo/pg/MySQL%20%A5%D0%A5%A4%A5%CA%A5%EA%A5%ED%A5%B0%A4%CE%BA%EF%BD%FC

実際には"my.cnf"の設定になります。

次のようにすることで、バイナリログを14日間残し、
あとは自動に削除されるようになります。

--------【/etc/my.cnf】--------
[mysqld]
...
set-variable = expire_logs_days=14
...
--------

AWS上のMySQLはすべてRDSにしたいなー...
--------
http://www.suz-lab.com

"us-west-1"でのゾーン間の転送速度(AWS)

スズキです。

ゾーン間NFSがボトルネックになってるような気がして、
簡単に調べてみました。

xxx.xxx.xxx.xxx: a zone
aaa.aaa.aaa.aaa: a zone
bbb.bbb.bbb.bbb: b zone

▼ゾーン内
# ping xxx.xxx.xxx.xxx
PING xxx.xxx.xxx.xxx (aaa.aaa.aaa.aaa) 56(84) bytes of data.
64 bytes from aaa.aaa.aaa.aaa: icmp_seq=1 ttl=63 time=0.350 ms
64 bytes from aaa.aaa.aaa.aaa: icmp_seq=2 ttl=63 time=0.317 ms
64 bytes from aaa.aaa.aaa.aaa: icmp_seq=3 ttl=63 time=0.373 ms
64 bytes from aaa.aaa.aaa.aaa: icmp_seq=4 ttl=63 time=0.722 ms

▼ゾーン間
# ping xxx.xxx.xxx.xxx
PING xxx.xxx.xxx.xxx (bbb.bbb.bbb.bbb) 56(84) bytes of data.
64 bytes from bbb.bbb.bbb.bbb: icmp_seq=1 ttl=58 time=2.26 ms
64 bytes from bbb.bbb.bbb.bbb: icmp_seq=2 ttl=58 time=2.15 ms
64 bytes from bbb.bbb.bbb.bbb: icmp_seq=3 ttl=58 time=2.17 ms
64 bytes from bbb.bbb.bbb.bbb: icmp_seq=4 ttl=58 time=2.18 ms

10倍程度違うってことでしょうか?

アクセスの多いNFSは、下手に冗長化考えずに、
ゾーン内で展開しないといけませんね...

そろそろ、安定してきたか?
--------
http://www.suz-lab.com

2010年8月5日木曜日

UTCとJST

スズキです。

"AWS Management Console"でRDSの設定をするときに、
"Backup Window"と"Maintenance Window"で、その時刻(時間)を設定するのですが、
UTCで設定しなければならないので、直感的に行うことができません。

そのような時に、下記のサイトが参考になります。

▼PST/PDT/UTCからJST変換表
http://www.vwnet.jp/Windows/PST2JST/PST2JST.htm

なので、

Backup Window: 04:00-06:00 (JST)
Maintenance Window: sun:06:00-sun:10:00 (JST)

としたい場合は、

Backup Window: 19:00-21:00 (UTC)
Maintenance Window: sat:21:00-sun:01:00 (UTC)

といった感じになります。

AWSビジネスは、結構きそうだなー...
--------
http://www.suz-lab.com

2010年7月30日金曜日

"s3cmd"の導入

スズキです。

"s3cmd"とは、下記で公開されているS3に関するユーティリティコマンドです。
http://s3tools.org/s3cmd

インストールは下記のように"yum"で簡単にできます。
(リポジトリは"epel"です)

# yum install s3cmd

次に、S3情報の設定です。

# s3cmd --configure
--------
Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.
Access key and Secret key are your identifiers for Amazon S3
Access Key: XXXXXXXX #Amazonのサイトで入手したものを入力
Secret Key: YYYYYYYY #Amazonのサイトで入手したものを入力
Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password:
Path to GPG program:
When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP and can't be used if you're behind a proxy
Use HTTPS protocol [No]:
On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't conect to S3 directly
HTTP Proxy server name:
New settings:
Access Key: XXXXXXXX
Secret Key: YYYYYYYY
Encryption password:
Path to GPG program: None
Use HTTPS protocol: False
HTTP Proxy server name:
HTTP Proxy server port: 0
Test access with supplied credentials? [Y/n] Y
Please wait...
Success. Your access key and secret key worked fine :-)
Now verifying that encryption works...
Not configured. Never mind.
Save settings? [y/N] y
Configuration saved to '/root/.s3cfg'
--------
※とりあえず、暗号化関係はスキップしています。

そして、下記のように実行すると、バケット一覧が表示されます。

# s3cmd ls
2010-04-23 05:39 s3://test1.suz-lab.com
2010-04-23 06:05 s3://test2.suz-lab.com
2010-07-28 07:06 s3://test3.suz-lab.com

M2だ...
--------
http://www.suz-lab.com

"iptables"のルールを表示

スズキです。

下記で表示できます。
# iptables -L

NAT(テーブル)のルールは下記となります。
# iptables -L -t nat

以下で紹介したルールの場合は、
http://blog.suz-lab.com/2010/07/ec2ipweb.html

# iptables -L -t nat
--------
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere xxx.xxx.xxx.xxx tcp dpt:http to:yyy.yyy.yyy.yyy:80
DNAT tcp -- anywhere xxx.xxx.xxx.xxx tcp dpt:https to:yyy.yyy.yyy.yyy:443

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
--------

といった感じで出力されます。

M3だ...
--------
http://www.suz-lab.com

SUZ-LAB謹製 CentOS AMI アップデート (5.5.2)

スズキです。

とりあえず、"us-west-1"に、64bit、EBS版のみでリリースです。

Manifestは下記となります。
811118151095/suz-lab_ebs_centos-core-x86_64-5.5.2
("suz"で検索したら、見つかると思います)

アップデート内容は下記です。

▼CentOSを5.5ベースにアップデート

# yum install update
# cat /etc/redhat-release
CentOS release 5.5 (Final)

▼cronのインストール
http://blog.suz-lab.com/2010/03/yumcroncentos.html

▼"Nagios nrpe"関係のインストール

# yum install nagios-nrpe
# yum install nagios-plugins-all
※Nagios監視は必須になってきたので...

▼Monitの導入
http://blog.suz-lab.com/2010/06/monit.html

--------【/etc/monit.conf】--------
set daemon 60
set logfile syslog facility log_daemon
include /etc/monit.d/*.conf
--------
※"chmod 0700 /etc/monit.conf"を忘れない!

# chkconfig monit on
※Init起動にしたらsshがつながらなくなってしまったので...

▼Monitで"crond/syslog/sshd"の監視
http://blog.suz-lab.com/2010/06/monitcrondsyslogsshd.html

Enjoy!
--------
http://www.suz-lab.com

iPhone 4 購入!

スズキです。

以前、iPhone4の予約をしたのですが、今日、ようやく届きました。

やはり、"iPhone 3G"に比べると、動きが軽快です。

明日、リュウドの折りたたみワイヤレスキーボード(RBK-2000BTII)を購入します。


ポメラみたいな使い方ができることに期待しています。
(メモアプリは何にするのがいいのかなー...)

帰ったら、アプリの整理しよう...
--------
http://www.suz-lab.com

(書評) AmazonCloudテクニカルガイド

スズキです。

目次は以下のとおりです。

========
Chapter 1 アマゾンクラウドの概要
1.1 クラウドコンピューティング
1.2 アマゾンクラウドコンピューティング
1.3 Amazon EC2
1.4 Amazon S3
1.5 Amazon CloudFront とエッジロケーション
1.6 AWSのセキュリティ資格証明書
1.7 Amazon VPC
1.8 利用料金の見積りと請求
1.9 AWSのサポート

Chapter 2 アマゾンクラウドの準備
2.1 AWSアカウント
2.2 AWS管理サーバの構築
2.3 AWSのセキュリティ資格証明書の取得

Chapter 3 Amazon EC2
3.1 Amazon EC2の概念
3.2 Amazon EC2の準備
3.3 Amazon EC2インスタンス
3.4 Amazon EBS
3.5 利用可能リージョンとゾーン
3.6 Elastic IPアドレス
3.7 セキュリティグループ
3.8 3層構造のシステム構成
3.9 Amazon EC2 API

Chapter 4 Load Balancing、Auto Scaling、CloudWatch、バックアップ&リカバリ
4.1 Elastic Load Balancing
4.2 Auto Scaling
4.3 Amazon CloudWatch
4.4 バックアップとリカバリ

Chapter 5 Amazon S3
5.1 Amazon S3の概念
5.2 Amazon S3の実装例
5.3 Amazon S3 API

Chapter 6 Amazon CloudFront
6.1 Amazon CloudFrontの概念
6.2 Amazon CloudFrontの技術
6.3 Amazon CloudFrontの実装例
6.4 Amazon CloudFront API

Chapter 7 Amazon VPC
7.1 Amazon VPCの概念
7.2 Amazon VPCの準備
7.3 Amazon VPCの実装例
========

本書も他のAWS本と同じく、はじめての人でもわかるように、AWSについて解説されてますが、
350ページもあり、その分、"Auto Scaling"や"VPC"などの、
さらに込み入ったプロダクトに関しても詳しく解説されています。

僕は、ある程度AWSをいじっている人間なので、この手の本を読むと、
だいたい、あー、知ってるよー、といった感じになるのですが、
下記に関しては、自分の知らなかった、そして知りたかった情報だったので、
読みいってしまいました。

【4.2 Auto Scaling】

"Auto Scaling"の仕組みから利用の仕方まで、丁寧に解説されています。

スケーリングするインスタンスのグループである"Auto Scaling Group"や、
EC2起動時の条件である"開始構成"、そして、スケーリングの作動基準である、
"トリガ"など、"Auto Scaling"の細かな概念まで把握することができました。

【5.2.11 BitTorrent URL】

S3でBitTorrentが使えるなんて、知りませんでした。
S3の対象オブジェクトのURLに"?torrent"をつけると、Torrentファイルになるようです。

【7.1.3 Amazon VPC の制限】

これ、結構重要です。特に下記はおさえておく必要があると思います。

* VPCから直接インターネットに接続することはできない。VPCからのインターネット接続は、
既存のネットワークを通して行われる。

* EBSとCloudWatchはすべてのEC2インスタンスで利用可能だか、"Elastic IP アドレス"、
"セキュリティグループ"、"Elastic Load Balancing"、"Auto Scaling"は使用できない。

現在出版されているAWS本で、最も詳しい書籍ではないでしょうか?


来週は、何を紹介しよう...
--------
http://www.suz-lab.com

AWS+で職人募集中!

スズキです。

そろそろ、クラウド(AWS)も、実際の案件で利用され始めたようで、
AWS+にも問い合わせなどが殺到しています...

ということで、お手伝いいただける職人さんを募集しています!
http://www.aws-plus.com/recruit/

職人でなくても、クラウド(AWS)のビジネスに興味のある方なら、
スキルを問わず、募集している感じです。

よろしくお願いします。

土日、休めるようにしたい...
--------
http://www.suz-lab.com

2010年7月27日火曜日

EC2上でのOracle(Standard Edition)のライセンス

スズキです。

以前、少しだけ紹介しましたが、
http://blog.suz-lab.com/2010/01/ec2oracle.html
日本語の公式情報も見つけたのでまとめなおしておきます。
http://www.oracle.com/lang/jp/corporate/pricing/doc/cloud_lic.pdf

"Standard Edition"には2ソケットの"Standard Edition One"ろ
4ソケットの"Standard Edition"があります。

Oracleの1ソケットは、EC2の4バーチャルコアをとして
計算することができます。

最近、利用できるようになった、
Cluster Compute Quadruple Extra Large Instance
を除く、最高のインスタンスである、
High-Memory Quadruple Extra Large Instance
でも、8バーチャルコアなので、現状、"Standard Edition One"で、
ほぼすべてのインスタンスが利用できることになります。

こちらも参考にしています。
http://www.bluegecko.net/oracle/oracle-processor-licensing-on-amazon-ec2/

どっちかというと、"EC2 Compute Unit"の勉強になったなー。
--------
http://www.suz-lab.com

2010年7月26日月曜日

EC2でマシンのIPアドレスで利用制限かけているWebアプリを利用

スズキです。

マシンに振られているIPアドレスで利用制限(Permission)をかけている、
Webアプリ(プログラム)ってあると思います。

そんなWebアプリをEC2上で利用するときのノウハウです。
EC2では、再起動するだけで、IPアドレスが変わってしまうので、
基本的に上記の用途で利用するのは難しい環境です。

まず、やらないといけないことは、下記の方法で、
Webアプリを利用できるIPアドレス(10.y.y.y)を、
仮想インターフェースに振ります。

▼仮想インターフェース(IPエイリアス)の作成(Linux)
http://blog.suz-lab.com/2010/03/iplinux.html
▼仮想インターフェース(IPエイリアス)の作成(Linux)の続き
http://blog.suz-lab.com/2010/03/iplinux_11.html
▼仮想インターフェースの作成
http://blog.suz-lab.com/2009/02/blog-post.html

実際に設定ファイル(/etc/sysconfig/network-scripts/ifcfg-eth0:1)は、
こんな感じになると思います。

--------【ifcfg-eth0:1】--------
DEVICE=eth0:1
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
NETWORK=10.y.y.y
BROADCAST=10.y.y.y
IPADDR=10.y.y.y
NETMASK=255.255.255.255
USERCTL=yes
PEERDNS=yes
IPV6INIT=no
--------

そして、EC2に振られたIPアドレス(10.x.x.x)を10.y.y.yに転送するようにします。
この転送に関しては、いろんなレイヤーで、様々なやり方があると思います。

最初は、Apacheのmod_proxy系でいろいろ試したのですが、
SSLとかCookieの話などで、結局"iptables"を利用することで落ち着きました。

"iptables"の設定は下記のようになります。
(iptablesを再起動すると設定がクリアされてしまうので注意です)

# iptables -t nat -A PREROUTING -d 10.x.x.x -i eth0 -p tcp --dport 80
-j DNAT --to 10.y.y.y:80
# iptables -t nat -A PREROUTING -d 10.x.x.x -i eth0 -p tcp --dport 443
-j DNAT --to 10.y.y.y:443

これで、Webアプリは"10.x.x.x"でのアクセスを"10.y.y.y"でのアクセスと認識し、
制限が解除された状態で利用することができます。

大変だったなー...
--------
http://www.suz-lab.com