とり急ぎで作ったmongodb、分散も冗長もしてないがこの先どうする?
と思いきや実は結構簡単に拡張できる。
単体からShardにする場合のステップをまとめてみた。
2011/04/30
2011/04/28
dnsmasqとunboundを比べて、dnsmasqを選んだ
だってキャッシュなのにround robinしてくれるんですもの。
googleを2回聞いてみる。
順番入れ替え、Query time 0 msec. よいね。
大体30秒で終わる、簡単インストール&Setup。
インターフェースの指定とresolv.confの編集が必要、まあスクリプト流して終わりだ。
RRはDNSコンテンツサーバだけがやるべきで、キャッシュサーバは順番を固定するのが推奨されているようだ。
だが俺はUnboundを選ばなかったなあ。
ラウンドロビンの確認
googleを2回聞いてみる。
$ sudo netstat -naplu
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 0.0.0.0:53 0.0.0.0:* 4832/dnsmasq
$ dig www.google.com @127.0.0.1
;; ANSWER SECTION:
www.google.com. 53288 IN CNAME www.l.google.com.
www.l.google.com. 236 IN A 64.233.183.103
www.l.google.com. 236 IN A 64.233.183.99
www.l.google.com. 236 IN A 64.233.183.147
www.l.google.com. 236 IN A 64.233.183.106
www.l.google.com. 236 IN A 64.233.183.105
www.l.google.com. 236 IN A 64.233.183.104
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
$ dig www.google.com @127.0.0.1
;; ANSWER SECTION:
www.google.com. 53287 IN CNAME www.l.google.com.
www.l.google.com. 235 IN A 64.233.183.104
www.l.google.com. 235 IN A 64.233.183.103
www.l.google.com. 235 IN A 64.233.183.99
www.l.google.com. 235 IN A 64.233.183.147
www.l.google.com. 235 IN A 64.233.183.106
www.l.google.com. 235 IN A 64.233.183.105
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
順番入れ替え、Query time 0 msec. よいね。
ubuntuにすぐインストール
大体30秒で終わる、簡単インストール&Setup。
aptitude install dnsmasq
ローカルアドレスのみListen
インターフェースの指定とresolv.confの編集が必要、まあスクリプト流して終わりだ。
# Local Listen
cat >/etc/dnsmasq.d/listenlocal.conf<<'EOFEOF'
interface=lo
except-interface=eth0
listen-address=127.0.0.1
EOFEOF
# include設定
sed s/\#conf-dir=\\/etc\\/dnsmasq.d/conf-dir=\\/etc\\/dnsmasq.d/ /etc/dnsmasq.conf -i
service dnsmasq restart
# 1行目に差し込み
sed 1s/^/nameserver\ 127.0.0.1\\n/ /etc/resolv.conf -i
service dnsmasq restart
RRはDNSコンテンツサーバだけがやるべきで、キャッシュサーバは順番を固定するのが推奨されているようだ。
だが俺はUnboundを選ばなかったなあ。
2011/04/25
Chef-Clientを既存Gem環境に影響なくインストール
Chefは便利だが、少なくともRuby+Gems(Chef)まで必須で、もちろん依存するGemsも必要だ。
Rubyを利用していない環境ならともかく、他とお互い干渉しないようにしておきたい。
ただのBundlerの紹介になるが、Chef-Clientを既存環境に影響ないよう使ってみる。
Rubyを利用していない環境ならともかく、他とお互い干渉しないようにしておきたい。
ただのBundlerの紹介になるが、Chef-Clientを既存環境に影響ないよう使ってみる。
2011/04/23
2011/04/21
MonitでKyoto Tycoon(with memcached plugin)を監視する
Kyoto Tycoonは局地で一定の支持があるFAL Labsさんのプロダクトです。
memcached互換の(プラガブル)リモートサーバを持ちつつ、本家よりメモリ効率がよいらしいので使ってみることにしました。
さて使用に当たってmonitの内部監視を立てるんだけども、プリセットのmemcachプロトコルではfailになる。
見た目は完全に互換があるように見えるが、monitの見ている所は違うんだろう。。
しかしL4監視なんて全く意味がないので、ここはmonitの"send&expect"を使ってプロトコル監視をします。
memcached互換の(プラガブル)リモートサーバを持ちつつ、本家よりメモリ効率がよいらしいので使ってみることにしました。
さて使用に当たってmonitの内部監視を立てるんだけども、プリセットのmemcachプロトコルではfailになる。
見た目は完全に互換があるように見えるが、monitの見ている所は違うんだろう。。
しかしL4監視なんて全く意味がないので、ここはmonitの"send&expect"を使ってプロトコル監視をします。
ラベル:
KyotoTycoon,
monit,
Tech
2011/04/18
2011/04/14
2011/04/13
Vyattaで作るTransparent FireWall その1/n
Linux-Debianベースのルータアプライアンス、VyattaでTransparent FireWallを構築する手順。
Transparent FireWallは透過型、トランスペアレント型とか言われますね。
便利な構成が作れますが、Vyattaでの作り方は公式のFireWall Reference Guideでもちゃんと取り扱っていません。
基本過ぎるから?周囲を見るとそうでもないように思うけど。。
ということで数回に分けて構築方法をまとめてみます。
Transparent FireWallは透過型、トランスペアレント型とか言われますね。
便利な構成が作れますが、Vyattaでの作り方は公式のFireWall Reference Guideでもちゃんと取り扱っていません。
基本過ぎるから?周囲を見るとそうでもないように思うけど。。
ということで数回に分けて構築方法をまとめてみます。
2011/04/11
mongodbのrepair時、パーミッションに注意
壊れたmongodbを修復するにはオプション、"--repair" をつけてmongodコマンドを実行します。
これで修復したmongodbが起動しない時はパーミッションが変更されているせいかも。
DBの実ファイルのパーミッションがrepairを実行したユーザになります。
rootでrepairしちゃうと、DBのファイルがroot所有になってしまうということですね。
ログを確認したら"Permission denied" が出ていたのでパーミッションを修正しました。
環境はUbuntu10.10、MongoDB1.8.1 でした。
どうやったらMongodbが要修復になるかっていうと、例えば無限ループをdiskfullになるまで突っ込んでみるとか。。
mongod --dbpath=/var/lib/mongodb --repair
これで修復したmongodbが起動しない時はパーミッションが変更されているせいかも。
DBの実ファイルのパーミッションがrepairを実行したユーザになります。
rootでrepairしちゃうと、DBのファイルがroot所有になってしまうということですね。
ログを確認したら"Permission denied" が出ていたのでパーミッションを修正しました。
chown -R mongodb:nogroup /var/lib/mongodb/
環境はUbuntu10.10、MongoDB1.8.1 でした。
どうやったらMongodbが要修復になるかっていうと、例えば無限ループをdiskfullになるまで突っ込んでみるとか。。
2011/04/07
MongoDBの1.8.1 が出たようなので更新する
バグフィックスらしいね。
パッケージインストールにしていたので隙はなかった。
SECONDARY(全部) > PRIMARY の順にやろう。
パッケージインストールにしていたので隙はなかった。
# aptitude update
# aptitude upgrade mongodb-10gen
SECONDARY(全部) > PRIMARY の順にやろう。
# mongo
MongoDB shell version: 1.8.1
connecting to: test
mondev:PRIMARY>
2011/04/05
nginxのログをsyslogに投げる
名前つきパイプの例、古典的なやり方。
パイプの取り出し側にはそれなりに工夫が必要だと思うが、
とりあえずnginxを起動してから。
とすると、loggerがsyslogに投げてくれる。
(フォーマットは少々いじっている。)
syslog-ngならsourceに指定することもできそうだ。
ただこれをやると、nginxがパイプの処理を待つようになっちゃうので使いどころ注意。
rm /var/log/nginx/access.log
mkfifo /var/log/nginx/access.log
パイプの取り出し側にはそれなりに工夫が必要だと思うが、
とりあえずnginxを起動してから。
# cat /var/log/nginx/access.log | logger -p local4.info
とすると、loggerがsyslogに投げてくれる。
1301982441 local4.info prox01 "xx.xxx.xxx.xxx - - [05/Apr/2011:14:47:21 +0900] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0""
(フォーマットは少々いじっている。)
syslog-ngならsourceに指定することもできそうだ。
ただこれをやると、nginxがパイプの処理を待つようになっちゃうので使いどころ注意。
ubuntu10.10(Merverick)のsyslog2ng
ubuntu10.10をrsyslogからsyslog-ngに入れ替えようと思いました。
デフォルトで入っているのはrsyslog、aptでsyslog-ngを入れると勝手にremoveされます。
さて、syslogからsyslog-ngに変更する際はsyslog2ngというスクリプトが使えますが、ubuntuのrsyslogからではどうかな。
デフォルトで入っているのはrsyslog、aptでsyslog-ngを入れると勝手にremoveされます。
さて、syslogからsyslog-ngに変更する際はsyslog2ngというスクリプトが使えますが、ubuntuのrsyslogからではどうかな。
2011/04/01
refinerycms, radiant などをbundleでインストール
railsで製造されたアプリケーションは、gemでインストールしたコマンドを使ってサイトをビルドするタイプのものがある。
refinerycms, radiant などがそういう感じ。
たとえばrefinerycmsだとこの4行でインストールOKとあるが。。
このやり方は標準で読み込むGEMSがやたらと増えるしバージョン依存とかいやだ。
これをbundlerを使って何とか影響範囲をRaisHome内にとどめてみよう。
富豪的ともいわれるが。
refinerycms, radiant などがそういう感じ。
たとえばrefinerycmsだとこの4行でインストールOKとあるが。。
gem install refinerycms
refinerycms path/to/my_new_app
cd path/to/my_new_app/
rails server
このやり方は標準で読み込むGEMSがやたらと増えるしバージョン依存とかいやだ。
これをbundlerを使って何とか影響範囲をRaisHome内にとどめてみよう。
富豪的ともいわれるが。
Gitorious:さくらのVPSをUbuntu10.10にしてチーム共有のリポジトリにする
開発チームでグローバルなGitが欲しいとなった。
Gitosisはgitosis-adminのリポジトリ編集が必要で、皆が自由にリポジトリを作るのにはひと工夫がいる。
なのでGitoriousを置こうと。http://gitorious.org/
パブリックにしたいところだが、そこは堪えてプライベートモードにしよう。
構築先はさくらVPSが適当だろう。
事前にRackSpaceでUbuntu10.10へのGitorious構築手順を確認した。
http://www.sawanoboly.net/dwiki01/devops/gitorious
Cookbookにするのはちょっとしんどいな。
Githubの有料版でもいいっちゃあいい。
Gitosisはgitosis-adminのリポジトリ編集が必要で、皆が自由にリポジトリを作るのにはひと工夫がいる。
なのでGitoriousを置こうと。http://gitorious.org/
パブリックにしたいところだが、そこは堪えてプライベートモードにしよう。
構築先はさくらVPSが適当だろう。
事前にRackSpaceでUbuntu10.10へのGitorious構築手順を確認した。
http://www.sawanoboly.net/dwiki01/devops/gitorious
Cookbookにするのはちょっとしんどいな。
Githubの有料版でもいいっちゃあいい。
登録:
投稿 (Atom)