実はPuppetはそれほどスケーラビリティに優れていません。管理する設定の量や、
最終回となる今回は、
単一構成でのスケーラビリティ向上
Puppetではウェブサーバとして、
# puppetmasterd --servertype mongrel
ただし、
Mongrelを利用して、

この構成で動作させるための設定について解説します。
puppetmasterdの設定
puppetmasterdは特別な設定の必要はありませんが、
# puppetmasterd --servertype mongrel --masterport 18140
また、
# puppetca --generate puppet.example.com
ここで作成した証明書は、
Apacheの設定
Apacheではまずmod_
LoadModule ssl_module modules/mod_ssl.so
Listen 8140
SSLEngine on
SSLCertificateFile /etc/puppet/ssl/certs/puppet.example.com.pem
SSLCertificateKeyFile /etc/puppet/ssl/private_keys/puppet.example.com.pem
SSLCACertificateFile /etc/puppet/ssl/ca/ca_crt.pem
SSLVerifyClient optional
SSLOptions +StdEnvVars
RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e
RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e
また、
ProxyPass / http://127.0.0.1:18140/
ProxyPassReverse / http://127.0.0.1:18140/
以上で、
# puppetd --server puppet.example.com --verbose --test
また、
# puppetmasterd --servertype mongrel --masterport 18140 --pid /var/puppet/run/puppetmasterd.18140.pid
# puppetmasterd --servertype mongrel --masterport 18141 --pid /var/puppet/run/puppetmasterd.18141.pid
# puppetmasterd --servertype mongrel --masterport 18142 --pid /var/puppet/run/puppetmasterd.18142.pid
Aapache側ではmod_
SetHandler balancer-manager
ProxyPass / balancer://puppetmaster/
ProxyPassReverse / balancer://puppetmaster/
<Proxy balancer://puppetmaster>
BalancerMember http://127.0.0.1:18140
BalancerMember http://127.0.0.1:18141
BalancerMember http://127.0.0.1:18142
</Proxy>
これでApache宛のリクエストが、
複数台構成でのスケーラビリティの向上
複数台構成でのスケーラビリティの向上は、
# puppetmasterd --servertype mongrel --bindaddress 0.0.0.0

ただし、
- Puppetクライアントが直接リクエストするのはApacheである。
- しかし、
初回リクエスト時に実際に署名するのは、 Apacheからリクエストをプロキシされる、 複数あるPuppetサーバのいずれかである。 - Puppetサーバは初回起動時にCA証明書を各々自動的に作成する。
- したがって、
Puppetクライアント毎に証明書のIssuerがバラバラになってしまい、 動作に問題が発生する。
これを解決するための方法はいくつか考えられますが、
ただし、
- 同じIssuerで、
同じシリアル番号なのに、 Subjectが異なる証明書ができてしまう。 - 証明書のRevocationが面倒。
こういった問題はありますが、
Apache以外にも、
最後に
Puppetの連載は今回で最後ですが、