ちなみに私は直接FreeBSDの師匠となる人は居なかったので、Googleと専門誌とmanとMLで得たノウハウしかありません。
どっかの雑誌で「FreeBSD・中規模サイトの管理ノウハウ」という記事でものらねぇかな。
というわけで「凄い人に見られたら初歩的すぎたり的外れで恥ずかしいことでも、平気で書いちゃうずうずうしさ」が重要だと考えているオレなので、書いてみよう。
さて、私がやっていることといえば。
- IPv4で届くところでcvsup-mirrorを立ち上げ。管理下のホストはこのミラーに対してSUPHOSTを設定する。念のために2台立ち上げてDNSラウンドロビンしている。
- UltraSCSI320でXeon Dualの一番処理速度の速いホスト(以下「portsサーバー」)で、portsdb -uUをして/usr/ports/INDEX.dbとINDEX.localを毎日生成
- portsupgrade -Faでdistfilesをfetchしておく
- /usr/ports/以下をApache等でhttp公開
- /etc/make.confでDEPENDS_TARGET= packageとFORCE_PACKAGE=yesとMASTER_SORT_REGEX?= ://[^/]*\.jp[/.]
- devel/ccacheをインストールして/etc/make.confでCC=/usr/local/bin/ccache ccとCXX=/usr/local/bin/ccache c++を指定。~/.ccacheは速いスライスに確保しておく。
- /usr/local/etc/pkgtools.confのPKG_SITESでportsサーバーを指定。ENV['PORTS_INDEX'] ||= ENV['PORTSDIR'] + '/INDEX.local'も指定。MAKE_ARGSも。
- /usr/local/etc/periodic/999.cvsup等でportsをcvsupしてportsサーバーから/usr/ports/INDEX.{db,local}をfetch
- /etc/make.confでMASTER_SITE_OVERRIDEをportsサーバーに指定
WITHOUT_X11=yes WITHOUT_GUI=yes WITH_IPV6=yes WITH_APACHE2=yesとか統一knobを指定していたり。
portsサーバーが各ホストの/etcと/usr/local/etcのCVSROOTサーバーも兼用している。ssh経由でのアクセスなのでpserverは使わない。管理を忘れがちなのが/usr/src/sys/i386/conf以下のカーネル設定ファイルだけど。このあたりはシンボリックリンクとかで。
新しいホストを作るときはPXEブートで立ち上げてkick startを……というのが理想だけど、あんまり上手く行かなかったり。
各ホストのメンテはportupgrade -Pでpackagesを利用してアップデートをする。
/etc/rc.confと/etc/rc.conf.localを使えば共通している設定とホスト固有の設定を分離できるのでメンテが楽。
/boot/loader.confと/boot/loader.conf.localも同様。
他には何があったかなぁ……。
というか他にももっと効率の良い管理方法があるっぽい。
portsサーバー続き:
まずportsサーバーをホストとするjailでApacheサーバーを作る。
mount_nullでJail内に公開用のportsツリーをマウントする。
/etc/fstabで
/usr/local/etc/apache2/http-ports.confとかを
IPv6で公開したいときはホスト側でApacheを動かすしかないかなぁ。
thttpdとかでもいいかもしれない。
mount_nullでJail内に公開用のportsツリーをマウントする。
/etc/fstabで
/usr/ports /path/to/jail/http_server/usr/ports null ro 0 0などと書いておく。
/usr/local/etc/apache2/http-ports.confとかを
Alias /ports/ "/usr/ports/"などど書いてhttpd.confでIncludeしておく。
IPv6で公開したいときはホスト側でApacheを動かすしかないかなぁ。
thttpdとかでもいいかもしれない。
クライアントの管理について:
isc-dhcp3-serverをインストールして、/usr/local/etc/dhcp.confでIPを振る。
Webアクセスはwww/squidを使っている。
プロクシ設定をクライアントに効率よく適用するために前述のJail Apacheサーバーでproxy.pacを作成。
wpad.datとwpad.daとproxy.paとしてハードリンクしておく。(Windows98のバグ対策)
dhcp.confで
proxy.pacの書き方は省略。検索してちょ。
ただしreturn "DIRECT";をすると、イントラネットゾーンとしてIEがアクセスするというおせっかいな仕様があるので大注意。やめてくれーMicrosoftよ。
DHCPサーバーはセカンダリマシンがあるのならfailover peerで運用してもいいかも。
んでLAN内にSambaホストを構築してドメインマスター&WINS Serverにしている。
そのばあいはdhcp.confで
Active DirectoryとかKerberosとかは「大規模サイト」の範疇で勉強中。よくわからん。
option ntp-serversとoption domain-name-serversとoption routersは適度に。
Webアクセスはwww/squidを使っている。
プロクシ設定をクライアントに効率よく適用するために前述のJail Apacheサーバーでproxy.pacを作成。
wpad.datとwpad.daとproxy.paとしてハードリンクしておく。(Windows98のバグ対策)
dhcp.confで
option wpad code 252 = string; option wpad "http://wpad.EXAMPLE.co.jp/proxy.pac";などと書いておけば「設定を自動的に検出する」でproxy.pacを読み込む。
proxy.pacの書き方は省略。検索してちょ。
ただしreturn "DIRECT";をすると、イントラネットゾーンとしてIEがアクセスするというおせっかいな仕様があるので大注意。やめてくれーMicrosoftよ。
DHCPサーバーはセカンダリマシンがあるのならfailover peerで運用してもいいかも。
んでLAN内にSambaホストを構築してドメインマスター&WINS Serverにしている。
そのばあいはdhcp.confで
option netbios-name-servers 192.168.foo.bar;というかんじに各Windowsクライアントに設定。
Active DirectoryとかKerberosとかは「大規模サイト」の範疇で勉強中。よくわからん。
option ntp-serversとoption domain-name-serversとoption routersは適度に。



[ コメントする ]