Browse Month: July 2009

zsh であるコマンドを履歴に登録しない方法

サーバをメンテナンスするとき、シェル経由で作業することが多いのですが、rm や sudo のコマンドが履歴に登録されてしまうと誤って使ってしまう可能性があります。

そこで、zsh であるコマンドを履歴に登録しない方法を調査してみました。

具体的には、HIST_IGNORE_SPACE というオプションをするこで、先頭がスペースで始まるコマンドは履歴に登録しない設定ができます。

この設定をして、さらに次のようにエイリアスを設定してみました。

alias rm=’ rm -i’

alias sudo=’ sudo -H’

こうすることで、rm と sudo コマンドは履歴に登録しないようになります。意図的にコマンドを履歴に登録させないようにするには、先頭にスペースを入れるだけでいいのですが、忘れてしまうこともあるのでエイリアスを設定しておくと便利です。

sudo コマンドは微妙なところですが、sudo コマンドでオペミスをしてしまったときの影響を考えると、サーバでは設定しておくが無難なのかなぁと思います。

サーバをメンテナンスするとき、誤ってコマンドを実行してしまったオペミスが発生することがよくあることなので、できる限りオペミスをなくす環境を作りつづけていくことは重要なことだと思います。

とは、いってもなるべく実サーバにログインしないように自動設定やリモート管理を行うというがサーバを運用する上で大事なことだと思います。

LVS DSR の環境で、複数の SSL 証明書を設定する方法

LVS DSR の環境で、複数の SSL 証明書を設定しようとして、かなりはまってしまったのでその方法を書いておきます。

リアルサーバ側の環境はいつものとおり、OS は CentOS 5.3 x86_64、Apache HTTP Server 2.2.11 with mod_ssl です。
LVS DSR を実現する場合、リアルサーバ側にグローバル VIP の宛先でパケットが届くので、リアルサーバ側で lo:0 でエイリアスするか、iptables -j REDIRECT でリアルサーバでパケットを受け入れる必要があります。詳しくは、DSAS 開発者の部屋を参照してください。

僕の環境の場合、LVS DSR を実現するために後者の iptables を使っています。今回設定する複数のサイトの VIP を IP アドレス 1.2.3.4 と 5.6.7.8 とすると、リアルサーバ側の iptables の NAT ルールは次のようになります。

*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -d 1.23.4 -j REDIRECT -p tcp
-A PREROUTING -d 5.6.7.8 -j REDIRECT -p tcp
COMMIT

そして、Apache 側の設定にうつります。

まず、次のようにデフォルトの mod_ssl の設定ファイル /etc/httpd/conf/extra/httpd-ssl.conf はそのまま読み込んでおきます。

Include conf/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
#       starting without SSL on platforms with no /dev/random equivalent
#       but a statically compiled-in mod_ssl.
#
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

BrowserMatch “MSIE” AuthDigestEnableQueryStringHack=On

次に、複数の SSL 証明書を1台のウェブサーバで設定するには、IP アドレスベースの VirtualHost で設定する必要があります。SSL 証明書を設定したい場合には、次のように  VirtualHost を設定する必要があります。サイトの URL は、example1.com と example2.com にしています。すこし脱線しますが、SetEnvIf User-Agent の設定は、IE6 向けの設定なのでおまじないとして入れておきましょう(とはいってももうかなり少ないかもしれませんが。。。)。

<VirtualHost 1.2.3.4:443>
ServerName example1.com

DocumentRoot /var/www/html/example1

# SSL
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/example1.com.crt
SSLCertificateKeyFile /etc/pki/example1.com-nopass.key
SetEnvIf User-Agent “.*MSIE.*” \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>

<VirtualHost 5.6.7.8:443>
ServerName example2.com

DocumentRoot /var/www/html/example2

# SSL
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/example2.com.crt
SSLCertificateKeyFile /etc/pki/example2.com-nopass.key
SetEnvIf User-Agent “.*MSIE.*” \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>

そして、この状態で Apache を再起動して https://example1.com、https://example2.com にアクセスしてみると、なぜかデフォルトの httpd-ssl.conf で読み込んでいる自動生成された SSL 証明書になってしまい、複数の SSL 証明書を切り替えることができません。

DSR なので、グローバル VIP 1.2.3.4、5.6.7.8、でちゃんとパケットが届いているので、この設定であっていると思っていましたが、うまくいきません。

調査したところ、iptables -j REDIRECT していると eth0 の IP アドレスにマッピングされてしまうため、Apache 側でグローバル VIP を認識できないのが原因のようです。これが原因と分かった理由は、さきほどの IP ベースの VirtualHost に eth0 の IP アドレスを指定して、その VirtualHost で指定されている SSL 証明書に切り替わったからです。

この場合は、それぞれのポートごとに SSL 証明書を設定することで、複数の SSL 証明を切り替えることができます。

具体的には、リアルサーバ側の iptables の NAT ルールを、次のように変更します。

*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -d 1.2.3.4 -j REDIRECT -p tcp –dport 80
-A PREROUTING -d 5.6.7.8 -j REDIRECT -p tcp –dport 80
-A PREROUTING -d 1.2.3.4 -j REDIRECT -p tcp –dport 443 –to-port 12340
-A PREROUTING -d 5.6.7.8 -j REDIRECT -p tcp –dport 443 –to-port 56780
COMMIT

多少、iptables のルールが複雑になっていますが、説明すると次のようになります。

  • グローバル VIP の HTTP のパケットは、そのまま受け入れる
  • グローバル VIP の HTTPS のパケットは、1.2.3.4 の IP アドレスのときは 12340 ポートへリダイレクトして、5.6.7.8 の IP アドレスのときは 56780 ポートへリダイレクトする

そして、Apache 側の IP ベース VirtualHost を、次のように変更します。ポイントは、それぞれのポートで Apache を起動すること、IP ベースの VirutalHost ではなくそれぞれのポートのデフォルトの VirutalHost とすることです。

Listen 12340
NameVirtualHost *:12340

<VirtualHost *:12340>
ServerName example1.com

DocumentRoot /var/www/html/example1

# SSL
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/example1.com.crt
SSLCertificateKeyFile /etc/pki/example1.com-nopass.key
SetEnvIf User-Agent “.*MSIE.*” \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>

Listen 56780
NameVirtualHost *:56780

<VirtualHost *:56780>
ServerName example2.com

DocumentRoot /var/www/html/example2

# SSL
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/example2.com.crt
SSLCertificateKeyFile /etc/pki/example2.com-nopass.key
SetEnvIf User-Agent “.*MSIE.*” \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>

このように設定することで、https://example1.com と https://example2.com の SSL 証明書を正しく切り替えることができます。

1台のサーバで複数の SSL 証明書を扱うのはすこしめんどうなのですが、これで実現することができました。

Adaptec ハードウェア RAID で状態を取得する方法

とあるサーバで Adaptec 製のハードウェア RAID を使っているけれど、そのハードウェア RAID の状態を取得するツールは Adaptec から Adaptec Storage Manager というツールが提供されています。Windows/Linix/Solaris 版とさまざまなプロットフォーム向けに提供されています。

Linux 版ではちゃんと RPM が提供されていて、RPM をインストールしたあと、次のコマンドでハードウェア RAID の状態を取得することができます。ただし、次のコマンドを実行するには「 compat-libstdc++-33」というパッケージをインストールしておく必要があります。Adaptec Storage Manager の RPM には依存関係が定義されていないので注意してください。

$ sudo /usr/StorMan/arcconf getstatus 1
Controllers found: 1
Current operation              : None
Command completed successfully.

で、この /usr/StorMan/arcconf は、デフォルトの状態では root ユーザでの実行権限がなぜか付与されていません。SRPM があると直せそうだが、RPM しかないので、puppet manifest で次のようなルールを書いて回避するようにしました。

if $is_virtual == “false” {
exec { “arcconf-add-exec”:
command => “chmod 770 /usr/StorMan/arcconf”,
unless  => “test -x /usr/StorMan/arcconf”,
}
}

これは公式 RPM で修正してほしいと思ったので、がんばって Adaptec のサポートから問い合わせをしておいた。

ssh tips

たくさんのサーバを運用していると、サーバをメンテナンスすることが多々あります。通常は ssh 経由でログインして、サーバをメンテナンスするのは当たり前だと思っています。

ssh 経由でメンテナンスしていると、.ssh/know_hosts に fingerprint 情報が表示されるのでうざいなぁと思って、.ssh/config を次のように設定してみた。

Host *
Compression yes
UserKnownHostsFile /dev/null
StrictHostKeyChecking no

UserKnownHostsFile という設定で、fingerprint 情報を入れるファイルを設定できるので、/dev/null に設定した。それ以外の設定はおまけ。

DELL OMSA

DELL から OMSA(OpenManage Server Administrator) という Linux 向けに DELL サーバを管理ツールがあるが、CentOS 5.3 x86_64 でインストールできる人がいるので、もう一度初心に返って試してみた。

まず、セットアップする方法は、DellLinuxWiki を参照した。この Wiki をみると、CentOS は「You must have missed the note under “Supported Operating Systems” 🙂 」とあるが RHEL 5 Update 2 がサポートされているので動くはず。

$ wget -q -O – http://linux.dell.com/repo/hardware/latest/bootstrap.cgi | sudo bash

srvadmin-all というパッケージがあるはずなので、確認してみる。

$ sudo yum install srvadmin-all

No package srvadmin-all available.
Nothing to do

OMSA のパッケージがない、bootstrap.cgi を実行すると GPG キーや yum リポジトリが定義されているので、yum リポジトリを見てみる。

$ sudo cat /etc/yum.repos.d/dell-omsa-repository.repo

[dell-omsa-indep]
name=Dell OMSA repository – Hardware independent
type=rpm-md
mirrorlist=http://linux.dell.com/repo/hardware/latest/mirrors.cgi?osname=el$releasever&basearch=$basearch&dellsysidpluginver=$dellsysidpluginver
gpgcheck=1
gpgkey=http://linux.dell.com/repo/hardware/latest/RPM-GPG-KEY-dell
http://linux.dell.com/repo/hardware/latest/RPM-GPG-KEY-libsmbios
enabled=1
failover=priority
bootstrapurl=http://linux.dell.com/repo/hardware/latest/bootstrap.cgi

[dell-omsa-specific]
name=Dell OMSA repository – Hardware specific
type=rpm-md
mirrorlist=http://linux.dell.com/repo/hardware/latest/mirrors.cgi?osname=el$releasever&basearch=$basearch&sys_ven_id=$sys_ven_id&sys_dev_id=$sys_dev_id&dellsysidpluginver=$dellsysidpluginver
gpgcheck=1
gpgkey=http://linux.dell.com/repo/hardware/latest/RPM-GPG-KEY-dell
http://linux.dell.com/repo/hardware/latest/RPM-GPG-KEY-libsmbios
enabled=1
failover=priority
bootstrapurl=http://linux.dell.com/repo/hardware/latest/bootstrap.cgi

mirrorlist の URL 脳内補完してブラウザで「http://linux.dell.com/repo/hardware/latest/mirrors.cgi?osname=el5&basearch=x86_64&dellsysidpluginver=1」としたら、「http://linux.dell.com/repo/hardware/latest/platform_independent/rh50_64/」が返ってきた。たしかに RPM がいくつかあるけれど、srvadmin-all という RPM がない。

さらに調べてみると、どうやらサーバを買ったときに付属していた CD-ROM に入っているっぽい。CD-ROM なんて捨ててしまったよと思ったら、どうやら DELL のサポートサイトからダウンロードできるらしい。http://ftp.us.dell.com/sysman/ をブラウザでみてみると、ファイル一覧が表示された。OM_* で探してみると、最新版は 6.1.0 だったのでダウンロードした。

$ mkdir om

$ cd om

$ wget http://ftp.us.dell.com/sysman/OM_6.1.0_ManNode_A00.tar.gz

$ tar xf OM_6.1.0_ManNode_A00.tar.gz

$  sudo ./setup.sh

Unsupported Operating System. Can not proceed….

うーん、だめか。もしかして別の方法があるのかもと思って調べてみると、こんな情報があった。

$ wget -q -O – http://linux.dell.com/repo/software/bootstrap.cgi | sudo bash
$ wget -q -O – http://linux.dell.com/repo/hardware/bootstrap.cgi | sudo bash

$ sudo yum install srvadmin-all

No package srvadmin-all available.
Nothing to do

やはり、該当パッケージがない。このメールと同じ現象なんだけれど。

CentOS で DELL OMSA をインストールできる方法を教えてほしい!!!

DELLサーバのハードウェア RAID カードの状態を取得する方法

DELL サーバのハードウェア RAID カード (SAS6iR) の状態を CentOS 5.3 x86_64 で取得する方法を調査してみてやっとできたのでブログに公開しておきます。

まず、試したサーバは DELL PowerEdge R300 という Xeon L5410 x 1、8GB RAM です。このサーバに DELL 製のハードウェア RAID カードが搭載されています。

いろいろとネット情報の調査したところ、やっとこのブログが見つかりました。まさにピンポイントで、mpt-status コマンドをインストールすればよいみたいでした。

まず、mpt-status をコンパイルするには、カーネルの SRPM が必要なのでダウンロードしてきてインストールします。updates に該当するカーネルがない場合は kernel パッケージをアップグレードしておきます。

$  wget http://mirror.centos.org/centos/5/updates/SRPMS/kernel-`uname -r`.src.rpm

$ sudo rpm -i kernel-`uname -r`.src.rpm

そうすると、/usr/src/redhat/SPECS/kernel-2.6.spec がインストールされます。kernel をビルドするために必要なパッケージをインストールしてからビルドします。

$ sudo yum -y install gcc rpm-build redhat-rpm-config unifdef

$ sudo rpmbuild -bp –target=$(uname -m) /usr/src/redhat/SPECS/kernel-2.6.spec

ビルドが終了したら、mpt-status をダウンロードして展開します。

$ wget http://www.drugphish.ch/~ratz/mpt-status/mpt-status-1.2.0.tar.bz2

$ tar jxf mpt-status-1.2.0

mpt-status をビルドするために Makefile を次のように変更します。

— ./Makefile-org      2009-07-13 12:10:14.000000000 +0900
+++ ./Makefile  2009-07-13 12:10:37.000000000 +0900
@@ -4,6 +4,7 @@
KERNEL_PATH_B  := /lib/modules/`uname -r`/build
KERNEL_PATH_S  := /lib/modules/`uname -r`/source
CFLAGS         := -Iincl -Wall -W -O2 \
+                       -I${KERNEL_PATH}/include \
-I${KERNEL_PATH}/drivers/message/fusion \
-I${KERNEL_PATH_B}/drivers/message/fusion \
-I${KERNEL_PATH_S}/drivers/message/fusion

mpt-status をビルドします。

$  make KERNEL_PATH=/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.`uname -i`

ビルドしたら、make install して mpt-status コマンドをインストールして modprobe mptctl すれば使えるようになりますが、他にも RAID が組んであるサーバがあったので RPM にしてみました。

mpt-status の配布サイトに昔のバージョンの SRPM があるのでこれをダウンロードしてきて、インストールします。

$  wget http://www.drugphish.ch/~ratz/mpt-status/RPMS/1.1.6/mpt-status-1.1.6-0.el4.src.rpm

$ sudo rpm -i mpt-status-1.1.6-0.el4.src.rpm

インストールされた mpt-status の SPEC ファイルを次のように変更します。

— mpt-status.spec-org 2006-03-08 17:44:30.000000000 +0900
+++ mpt-status.spec     2009-07-13 21:44:32.000000000 +0900
@@ -1,7 +1,7 @@
Summary: MPT Fusion raid inquiry tool
Name: mpt-status
-Version: 1.1.6
-Release: 0.el4
+Version: 1.2.0
+Release: 0
License: GPL
Group: Applications/System
URL: http://www.drugphish.ch/~ratz/mpt-status/
@@ -13,14 +13,18 @@
Source: http://www.drugphish.ch/~ratz/mpt-status/mpt-status-%{version}.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root

+Patch0: mpt-status-makefile.patch
+
%description
mpt-status give informations about raid status for LSI Fusion controllers.
This is quite a modified version to the original mpt-status-1.0 package.
%prep
-%setup
+%setup -q
+
+%patch0 -p1

%build
-%{__make}
+%{__make} KERNEL_PATH=/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.%{_arch}

%install
%{__rm} -rf %{buildroot}
@@ -34,8 +38,18 @@
%doc doc/*
%{_sbindir}/mpt-status

+%post
+lsmod | grep mptsas >/dev/null
+if [ “$?” = “0” ]; then
+    echo modprobe mptctl >> /etc/rc.modules
+    chmod +x /etc/rc.modules
+fi
+

mpt-status-makefile.patch というパッチは、さきほど作成した mpt-status の Makefile 用のパッチです。さらに自動的に mpt-status を認識させるために post セクションも追加しています。mpt-status の RPM を作成したらサーバを再起動します。

さっそく、mpt-status を実行してみます。

$ sudo mpt-status

ioc0 vol_id 0 type IM, 2 phy, 465 GB, state OPTIMAL, flags ENABLED
ioc0 phy 1 scsi_id 9 ATA      ST3500320NS      MA08, 465 GB, state ONLINE, flags NONE
ioc0 phy 0 scsi_id 1 ATA      ST3500320NS      MA08, 465 GB, state ONLINE, flags NONE

$ sudo mpt-status -n -s

vol_id:0 OPTIMAL
phys_id:1 ONLINE
phys_id:0 ONLINE
scsi_id:1 100%
scsi_id:0 100%

ちゃんと動いているようです。あとは、実際にホットスワップのハードディスクをファイルオーバーさせて mpt-status の状態がどう変わればよいかをチェックすればよさそうです。

mpt-status.c を見ると、次の状態が定義されています。

  • MISSING
  • NOT_COMPATIBLE
  • FAILED
  • INITIALIZING
  • OFFLINE_REQUESTED
  • FAILED_REQUESTED
  • OTHER_OFFLINE
  • UNKNOWN

念のため、mpt-status の README を読んでおくといいと思います。

あとは、自動的に監視できるように cron や snmp や nagios-nrpe でチェックするのがいいと思います。

ハードウェア RAID も壊れることがあるので、どのメーカーのハードウェア RAID を使っていてもちゃんと監視するように設定したいものです。

他にも DELL から提供されている OMSA (Open Manage Server Administrator) というパッケージを使うとできるらしいのですが、CentOS 5.3 x86_64 ではインストールすることができませんでした。

ruby/rails for REE のオフライン環境を整える

ruby/railsでオフライン環境を整える – p0t にある方法を REE(Ruby Enterprise Edition)  20090610 版で試してみた。

前提として、REE は /opt/local/ruby-enterprise-1.8.6-20090610/ にインストールされていて、/opt/ruby にシンボリックリンクをはっている。通常のユーザのパスは /opt/local/bin/ruby が最優先になっている。

まずは Ruby。基本的に p0ts さんの方法でよいが念のためというか、そのままオンラインになることも多いので localhost からのみ接続を許可するようにした。

<VirtualHost * *:443>
ServerName ruby
DocumentRoot “/Users/naoya/w/help/ruby-man-html”

ErrorLog “logs/ruby-error_log”
CustomLog “logs/ruby-access_log” combined

<Location />
Order Deny,Allow
Allow from 127.0.0.1
Deny from All
</Location>
</VirtualHost>

次に gem server は、p0t さんの方法と同じだけど、mislav-hanna は github の rubygems にあるので、次のコマンドでインストールする。

$  sudo gem install mislav-hanna –source http://gems.github.com

ただし、rdoc 2.4 でなく、2.3 を必要するので、rdoc を本家からダウンロードしてインストールする。

$ wget http://rubyforge.org/frs/download.php/50957/rdoc-2.3.0.gem

$  sudo gem install -f rdoc-2.3.0.gem

$ /opt/ruby/bin/rdoc –version

rdoc 2.3.0

そして、hanna テンプレートの設定は root ユーザの .gemrc を変更した。理由は、ローカルに rubygems リポジトリのミラーが作ってあるから。

$ sudo vi ~root/.gemrc

rdoc: –inline-source –line-numbers –format=html –template=hanna
gem: –backtrace –source http://rubygems/

rdoc を再生成する。

$  sudo gem rdoc –all –no-ri

Installing RDoc documentation for merb-slices-1.0.11…
Installing RDoc documentation for actionmailer-2.0.2…
Installing RDoc documentation for memcached-0.14…
error while writing to #<File:classes/Rlibmemcached/MemcachedSt.html>
ERROR:  While executing gem … (NoMethodError)
private method `sub’ called for nil:NilClass

ちょっとエラーが出ているが気にしない方向で。。。

gems もローカルからのみ接続許可する。インクリメンタル検索がかなりよさげ。

<VirtualHost * *:443>
ServerName gems
DocumentRoot “/Users/naoya/prj/htdocs/sinatra-rubygems/public”

<Directory /Users/naoya/prj/htdocs/sinatra-rubygems/public*>
Allow from All
</Directory>

ErrorLog “logs/gems-error_log”
CustomLog “logs/gems-access_log” combined

<Location />
Order Deny,Allow
Allow from 127.0.0.1
Deny from All
</Location>
</VirtualHost>

最後に gem ミラーを作る。まず、builder が必要なのでインストールする。

$ sudo /opt/ruby/bin/gem install builder

そして、設定ファイルを記述する。gem のミラーには時間がかかる。

$ sudo vi ~root/.gemmirrorrc


– from: http://gems.rubyforge.org
to: /opt/rubygems/rubyforge/

$ sudo mkdir /opt/rubygems

$  sudo /opt/ruby/bin/gem mirror && sudo gem generate_index -d /opt/rubygems

github の rubygems もミラーしようとしたがエラーが出てしまいうまくいかなかった。

$  sudo vi ~root/.gemmirrorrc


#- from: http://gems.github.com/
#  to: /opt/rubygems/github/
– from: http://gems.rubyforge.org
to: /opt/rubygems/rubyforge/

$ sudo /opt/ruby/bin/gem mirror

fetching: http://gems.github.com//Marshal.4.8.Z
ERROR:  While executing gem … (ArgumentError)
comparison of String with 3 failed

よし、これで環境が整ったはずなので、いつでもオフライン環境になれる。

ネットワークの基礎を復習した

インフラエンジニアは、ネットワークの設定は朝飯前でできなければいけないと思う。なんとなく、ネットワークの基礎(IP とかスイッチとか)をもう一度復習したいと本屋にいったらちょうど「ネットワークの基礎がばっちりわる本」があったので購入して読んだ。

この本はタイトルのとおり、ネットワークの基礎がとても分かりやすくてよいのでおすすめ。

この本では、LAN ケーブル、IP、無線 LAN、スイッチ、 NAC まで幅広い内容でカバーされているので、もう一度ネットワークまわりを復習したい人、あまりネットワークの設定経験がない初心者におすすめ。(ちょっと古い本でかつムックなので Amazon では中古しかないです)

前半では、IP アドレスが重複した場合どうなるか、LAN ケーブルが 100m より長いとき通信の挙動はどうなるか、デフォルトゲートウェイの設定を間違えるとどうなるか、など実験もたくさんあって読み物としても面白い。

姉妹本で、TCP/IP 復習もあったので、さっそく購入してこれから復習しようと思います。

写真で振り返る Velocity 2009

Velocity 2009 – O’Reilly Conferences, June 22 – 24, 2009, San Jose, CA を写真で振り返りたいと思います。

まず、会場は San Jose Hotel: The Fairmont San Jose Luxury Hotel in Northern California で開催されました。

DSC_0183

ホテルの前に San Jose の中心的な噴水があり、とても開放的な雰囲気でした。

DSC_0185

ホテルの中に入ってみると、とても豪華なホテルでした。このホテルは通常 $200 くらいの宿泊料金ですが、Velocity に参加している人は $180 で宿泊できるとのことでした。僕の場合はそれでも高いと思ってので、近場のホテルに宿泊しました。

DSC_0187

ホテルの近くを散策していたら、Ruby というお店を見つけました。プログラミング言語ではないですよ。

DSC_0208

会場には、無線 LAN があって、その無線 LAN のアンテナっぽいです。それにしてもでかい。。。

DSC_0224

会期中は、ランチやおやつが出たのですが、ホテル専用のミネラルウォーターまでありました。

DSC_0237

会期中の様子です、おおよそ500名くらいの参加したのはないでしょうか?
マック率が高かったです。そして、TweetDeck という Twitter クライアントを使っている人が多数いました。AIR でできるっぽく、日本語が表示できないので使うのをやめておきました。

IMG_0250.JPG

セッションの間には、ネットワーキングを促していました。

DSC_0227

初日の Puppet Workshop です。普段から愛用している Puppet を開発している Luke さんと握手することができてよかったです。

初日に開催された Ignite です。varnish の話がよかったです。

DSC_0238

最終日の基調講演の Mayer 氏です。

DSC_0241

基調講演の途中で T シャツ姿になりました。

DSC_0281

早朝のホテルです。この時期の San Jose の早朝は、とても気持ちがいい気候でした。

IMG_0284

その他の写真は、ここにあるので興味がある人は見てください。

今回は、始めての海外のカンファレンスに参加したということで、すばらしい体験でした。

海外のカンファレンスに参加するポイントをまとめてみました。

  • 参加費用は高額になるので、なるべく会社に負担してもらえるように説得する(僕の場合は、カンファレンス参加費用だけ会社に負担していただきました)
  • セッションのときには、なるべく最前列に座る(この方はよくスライドが見えるし、セッションを聞いている他の人があまり気にならない)
  • セッションの内容をメモするときには、なるべく簡潔にする(あまりちゃんとメモしようとすると、ついていけない)

そして、何より英語力。正直なところ、頭の中で英語を日本語で翻訳するような英語力ではまったく太刀打できません。さらにネットワーキングの場所でもあるので、自己紹介する英語力も必要です。

ということで、来年もリベンジということで参加したいと思っています。来年の目標は、次のとおりです。

  • BOF に参加して、当地のインフラエンジニアと議論する
  • ネットワーキングして、さまざまなインフラエンジニアと知り合う

A Special Thank You! Vecloty 2009!


Velocity, the Web Performance and Operations Conference 2009