From the yearly archives: 2011

vSphere 5 から Image Builder という機能が増えました。
ドライバーやパッチをプリインストールしたブータブル ESXi イメージが作れるという機能です。

何台も ESXi を立てる時に Ethernet や HBA の最新ドライバーを入れたり、VMware のパッチを
当てたりするのが面倒なので、動作確認をしてみました。
# vCenter があれば Update Manager が使えるって話もあるけど、使えない時もあるよね。

とりあえず、PowerCLI が入ってるものとして話を進めます。

まず VMware から素の ESXi5 ImageProfile を持ってきます。マニュアルには書いてないけど、
海外のブログを参考にしました。

PowerCLI D:\> Add-EsxSoftwareDepot -DepotUrl https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml

Depot Url
---------
https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml

これでローカルの作業領域に ESXi5 ImageProfile が作られるので内容とかを確認します。

PowerCLI D:\> Get-EsxImageProfile

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
ESXi-5.0.0-20110904001-notools VMware, Inc.    2011/08/26 1... PartnerSupported
ESXi-5.0.0-469512-no-tools     VMware, Inc.    2011/08/19 1... PartnerSupported
ESXi-5.0.0-20110904001-stan... VMware, Inc.    2011/08/26 1... PartnerSupported
ESXi-5.0.0-469512-standard     VMware, Inc.    2011/08/19 1... PartnerSupported

2011/09/20 時点では下記のものが登録されています。

  • ESXi-5.0.0-469512-standard
  • ESXi-5.0.0-469512-no-tools
  • ESXi-5.0.0-20110904001-standard
  • ESXi-5.0.0-20110904001-notools

469512 は 8/24 にリリースされた最初の 5.0.0 ですね。20110904001 は 9/4 に出たパッチが
適応されたものです。

standard/notools となっているのは VMware Tools の有無です。VMware Tools を含まない
イメージは PXE boot などで利用するようです。詳細は KB2004018 参照。

今回は Image Builder を使って作ったカスタムイメージで普通にインストールしたいだけなので
standard をベースにして、クローンします。

PowerCLI D:\> New-EsxImageProfile -CloneProfile ESXi-5.0.0-20110904001-standard -Name MyProfile -AcceptanceLevel CommunitySupported

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
MyProfile                      VMware, Inc.    2011/08/26 1... CommunitySupported

ドライバーやパッチを入れる場合は、この Image Profile に offline-bundle を適応します。

ここでは試しに Brocade の HBA のドライバーを入れてみましょう。Brocade のサイトから
HBA のドライバーを落とします。BCD-bfa-3.0.0.0-00000-offline_bundle-465342.zip です。

で、こんな感じでインストールします。

PowerCLI D:\> Add-EsxSoftwareDepot D:\BCD-bfa-3.0.0.0-00000-offline_bundle-465342.zip

Depot Url
---------
zip:D:\BCD-bfa-3.0.0.0-00000-offline_bundle-465342.zip?index.xml


PowerCLI D:\> Get-EsxSoftwarePackage -Vendor Brocade

Name                     Version                        Vendor     Release Date
----                     -------                        ------     ------------
scsi-bfa                 3.0.0.0-1OEM.500.0.0.406165    Brocade    2011/07/22 23...


PowerCLI D:\> Add-EsxSoftwarePackage -ImageProfile MyProfile -SoftwarePackage scsi-bfa

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
MyProfile                      VMware, Inc.    2011/09/20 1... CommunitySupported

途中、Get-EsxSoftwarePackage で -Vendor Brocade を指定していますが、指定しないと
VMware の VIBs もズラズラと表示されてアレなので便宜上こうしてます。

vihostupdate.pl のように追加で投入したドライバーやパッチだけ表示してほしいですね。
まぁ、なんかやり方があるのかもしれませんが。

こんな感じでどんどん必要なドライバーやパッチを適応したら、最後に書き出して使います。
書き出し方法は ZIP と ISO が選べます。

ZIP のほうが、後で Add-EsxSoftwareDepot してパッチを足したりできるようなので、
ISO だけ必要な場合でも作っておくとメンテナンスが楽かも。

PowerCLI D:\> Export-EsxImageProfile -ImageProfile MyProfile -ExportToBundle D:\ESXi-5.0.0-474610+BCD-bfa.zip

ISO はブータブルになるので、これでインストールするとドライバーやパッチが適応された状態で
インストールされます。

PowerCLI D:\> Export-EsxImageProfile -ImageProfile MyProfile -ExportToIso D:\ESXi-5.0.0-474610+BCD-bfa.iso

完成後のサイズはこんな感じ。

PowerCLI D:\> dir
    ディレクトリ: D:\
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2011/09/20     14:38    1091422 BCD-bfa-3.0.0.0-00000-offline_bundle-465342.zip
-a---        2011/09/20     15:07  306077696 ESXi-5.0.0-474610+BCD-bfa.iso
-a---        2011/09/20     15:05  296550093 ESXi-5.0.0-474610+BCD-bfa.zip

ドライバーやパッチがキチンと適応されているかどうかは色々と確認方法がありますが、
今回は Local ESXi Shell で確認しました。

~ # esxcli software vib list | grep Brocade
scsi-bfa              3.0.0.0-10EM.500.0.0.406165        Brocade  VMwareCertified   2011-09-20

日付は Release Date ではなく、イメージを作った日付になってしまうので使い勝手が微妙。

 

Flickr + Highslide encountered an error

Error: Photoset not found

店舗情報

petit restaurant tomy

前から通る度に気になっていたオサレっ気のあるお店に突撃してみた。

店内は10席ほどでカウンターのみ。店員はシェフ1人なので、こちらから
話し掛けない限りは黙々と調理していて、皿が空いたころにスッと出てる。
1人で飯を食う時はキッチンで調理しているのを見ながら自分のペースで
食べたいので、この辺はありがたい。
# ただし、混んでいる場合には若干待たされるかも。

コースは3800円から、アラカルトも1皿概ね1000~2000円程度で、飲み物も
グラスの赤白スパークリングが500~1000円程度なので大変リーズナブル。

1人で調理されている都合上、メニューがある程度パターン化しているので、
近い頻度で再訪問する場合にはその旨を伝えるか、アラカルトにしよう。

場所

 

WordPress の入れ替えのため、何かしらの最適化プラグインを
入れようということで、色々調べた結果、一番ナウい(古)と噂の
W3 Total Cache を入れてみた。

どれぐらい効果があるの?

実際に計ってみた。

W3 Total Cache の効果

WebpageTest で調べた Before/After がコレ。
※CDN は CloudFlare を利用しているが、今回は割愛する。

インストール方法

管理画面から、

[プラグイン/新規追加]→[検索 "W3 Total Cache"]→[インストール]

簡単だね!

…というだけではアレなので。

W3 Total Cache は Apache2 のモジュールの機能を色々と利用しているので、
下記のようなモジュールは入れておいたほうがよい。といっても、殆どの
ディストリビューションでデフォルトで有効になってそうなものばかり。

  • mod_mime
  • mod_headers
  • mod_deflate
  • mod_expires

唯一、例外なのは mod_expires だろう。コイツはキャッシュに関する
ヘッダを色々とアレするせいか、コンテンツを激しく変更している最中に
弄ると、ブラウザや環境によっては副作用があるので、この時点で導入して
いないのであれば、一通りデザインやプラグイン、W3 Total Cache 自体の
設定が終わって落ち着いた後に導入するのがオススメである。

尚、[Performance / FAQ] にも記載がある通り、mod_rewrite は必須である。

あとは管理画面の左側メニューに[Performance]という項目が現れるので、
Installのところをクリックすると .htaccess に書き込まれた内容が見れる。

それから、これは optional な機能だが、W3 Total Cache はキャッシュの
バックエンドとして Memcached, XCache, Alternative PHP Cache (APC),
eAccelerator と連携ができるので必要な方はインストールしておくとよい。

一番安定していて、かつインストールが楽なのは APC である。多分、
効果もその分たかが知れているのだろうが、黙って入れておけばよい。
Debian あたりだと apt-get/aptitude で php-apc を一発インストール可能、
あとは Apache2 を再起動するだけだ。

当然といえば当然だが、WP Super Cache や Quick Cache のような、
他のキャッシュ関係プラグインとはバッティングするみたいなので、
無効にするか削除しておこう。

設定方法

General Settings

こんな感じにするよ。

  • Page Cache: Enabled
  • Minify: Enabled
  • Database Cache: Disabled
  • Object Cache: Disabled
  • Content Delivery Network: Disabled
  • Browser Cache: Enabled

Page Cache, Minify, Browser Cache は、各々「○○ Method」のプルダウンで
キャッシュ方法が選べる。デフォルトは推奨値になっているようなので、
とりあえずそのままにしよう。

インストール方法で説明した optional なキャッシュ方法を用意した場合は、
それらを選んでおくと、多分、デフォルトよりは速いだろう。多分。メイビー。

Database Cache や Object Cache は、共有ホスト(レンタル鯖や VPS など)では
ディスクのアクセス速度の関係で、逆にパフォーマンスが落ちる場合があるので、
Disabled にするのがいいらしい。僕は APC を入れたので APC にお願いしてる。

Content Delivery Network (CDN) に関しては、W3 Total Cache でサポートする
CDN が全て有料の CDN なので、ここでは無効にしておいて、CloudFlare
利用するのが良いと思う。CloudFlare については下記の記事を読むとよく分かる。
WordPress のプラグインも用意されていて、利用も無料である。WordPress での
導入方法については、気が向いたら何か書くかもしれない。

参考: 0円の広域負荷分散システムCloudFlareが素晴らしい件 – fladdict

Page Cache

生成したページのキャッシュについて。

  • General / ☑ Don’t cache pages for logged in users
  • General / ☑ Cache home page
  • General / ☑ Cache feeds: site, categories, tags, comments
  • General / ☐ Cache URIs with query string variables
  • General / ☑ Cache 404 (not found) pages

注意するべきは4つめで、これは Query String 付の URL (?foo=123&bar=abc 等) を
キャッシュするという設定で、利用しているプラグインなどによっては色々と
要らんことをしそうなので Disabled にしてくのが良いと思う。

あとは別に問題なさげ。

  • Advanced / Rejected User Agents

Page Cache を無効にする User-Agent を指定する項目である。性能的な問題で
機能上の制限があるモバイル端末が主な対象である。
# IE6?Netscape?使ってる奴は一刻も早く死ね。

デフォルトでは空欄になっていると思うが、[Performance]-[User Agent Groups] に
モバイル端末の User-Agent が列挙されているので、これをコピペしておくとよい。

  • Cache Preload / ☑ Automatically prime the page cache

Google Sitemap を用意している人は、ここにチェックを入れておこう。

Minify

HTML の余分な空白を削除したり、CSS や JavaScript を1個のファイルにまとめて
負荷を下げようという機能である。

  • General / ☑ Rewrite URL structure
  • General / ☑ Automatically upload modified files
  • HTML / HTML Minify settings / ☑ Enable
  • HTML / HTML Minify settings / ☐ Don’t minify feeds
  • HTML / HTML Minify settings / ☑ Inline CSS minification
  • HTML / HTML Minify settings / ☑ Inline JS minification
  • HTML / HTML Minify settings / ☑ Line break removal

ここまでは特に深く考えず適当にチェックしても、あまり問題が出ることもない。

  • JavaScript / JS minify settings / ☑ Enable
  • JavaScript / JS minify settings / ☐ Combine only after <head>
  • JavaScript / JS minify settings / ☐ Combine only after <body>
  • JavaScript / JS minify settings / ☐ Combine only before </body>
  • JavaScript / JS minify settings / ☑ Comment removal
  • JavaScript / JS minify settings / ☑ Line break removal

最大の鬼門である JavaScript。ここは、チェックを入れるだけでは機能せずに、
[Add a script] を押して追加した JavaScript だけが Minify されるという仕組み。
ところが、これがサッパリ動かない。いや、確かに Minify はされている。
されているんだが、その JavaScript を使ったプラグインが全てまともに動かない。

そういうわけで僕は No JS files added のままで放置プレイしている。

  • Cascading Style Sheets / CSS minify settings / ☑ Enable
  • Cascading Style Sheets / CSS minify settings / ☐ Combine only
  • Cascading Style Sheets / CSS minify settings / ☑ Comment removal
  • Cascading Style Sheets / CSS minify settings / ☑ Line break removal

今度は CSS。これも JavaScript と同じで、[Add a style sheet] したものだけが
Minify されるようになっている。JavaScript と違って、チェックボックスの下に
テーマを選ぶプルダウンがあるが、テーマごとに CSS が違うので、それぞれの
テーマで Minify するかしないかが選べるため。まぁ、(active) になっている
テーマだけ Minify しておけばいいんじゃないでしょうか。

JavaScript と違い、元の CSS が余程の糞でもない限り、悪影響は出ないと思う。

Browser Cache

キャッシュコントロールに関するヘッダを吐くことで、ブラウザに必要な時だけ
リクエストを送ってもらう。主に mod_expires に関する設定といってもよい。

  • General / ☑ Set expires header
  • General / ☑ Set cache control header
  • General / ☐ Set entity tag (eTag)
  • General / ☑ Set W3 Total Cache header
  • General / ☑ Enable HTTP (gzip) compression
  • General / ☐ Do not process 404 errors for static objects with WordPress
  • Cascading Style Sheets & JavaScript / ☑ Set expires header
  • Cascading Style Sheets & JavaScript / ☑ Set cache control header
  • Cascading Style Sheets & JavaScript / ☐ Set entity tag (eTag)
  • Cascading Style Sheets & JavaScript / ☑ Set W3 Total Cache header
  • Cascading Style Sheets & JavaScript / ☑ Enable HTTP (gzip) compression
  • HTML / ☑ Set expires header
  • HTML / ☑ Set cache control header
  • HTML / ☐ Set entity tag (eTag)
  • HTML / ☑ Set W3 Total Cache header
  • HTML / ☑ Enable HTTP (gzip) compression
  • Media & Other Files / ☑ Set expires header
  • Media & Other Files / ☑ Set cache control header
  • Media & Other Files / ☐ Set entity tag (eTag)
  • Media & Other Files / ☑ Set W3 Total Cache header
  • Media & Other Files / ☑ Enable HTTP (gzip) compression

大体こんな感じ。

ETag は Apache2 の現在の実装だと、i-node, mtime, size の情報を元にしか
生成できない。複数サーバで冗長化している場合、i-node を同じにできないので
全く同じファイルでも ETag が同じ値にならず、無駄なリクエストが発生する。

じゃー mtime や size で ETag 作ればいいじゃないかという話もあるが、今度は
サイズと更新時刻さえ揃えてしまえば全く違うファイルでも ETag が同じ値に
なるので、それはそれでアレ。…ということで、僕は基本的に ETag が嫌いで、
一律オフにすることにした。

Expires header lifetime, Cache Control policy はコンテンツの種類に応じた推奨値が
デフォルトで設定されているようなので、理由がない限りは弄る必要はない。

最後に

設定を変更したら必ず deploy ボタンを押すこと。設定が反映されなくて泣く。

あと、プラグインをインストールしたりすると上部に「キャッシュを消せ!」と
通知が出るので、指示に従うように。出力が変になったりして、やっぱり泣く。

なんか動作がおかしい

キャッシュを消す。

[Performance]-[General Settings] の上部に [empty all caches] というボタンがあるので、
とりあえずそれを押しておけば間違いない。

これはいちいち面倒くさいので、管理画面の大抵の場面で、右上のプルダウンから
[Empty Caches] を選べば簡単にキャッシュをクリアできる。

投稿ごとにキャッシュを削除したい場合は、投稿一覧の [編集] とかがあるあたりに
[Purge from Page Cache] が追加されているので、それで削除できる。

Tagged with:
 
Set your Twitter account name in your settings to use the TwitterBar Section.