投稿

11月, 2009の投稿を表示しています

高可用性ロードバランサーを nginx + heartbeat で作る

ロードバランサーの可用性を高めるために、アクティブスタンバイ構成で、アクティブ系が落ちたらスタンバイ系に引き継げるようにする。 構築環境 サーバー機 NIC × 2 枚 (推奨 4 枚) RAID: 1, (推奨 0 + 1) 電源ボード × 2 (予算があれば) 仮想化ソフトウェア: VMWare ESXi 4.0 仮想化ソフトウェア (VMWare ESXi 4.0) の設定 NIC は 2 枚 1 組でフェイルオーバーするように設定 ネットワーク × 2 (NIC 2 枚構成の場合は VLANを作成) VM Network: 既存 (デフォルト) HA Network: 新規追加 ロードバランサー用ゲストOS (Ubuntu Server 9.10: 各サーバに1 台ずつ追加) ディスク: 4G程度 (Ubuntu Server の最小ハードウェア要件は 1G) コア数: 2 メモリ: 4G ネットワーク × 2 VM Network に接続された NIC HA Network に接続された NIC ネットワーク アクティブ (lb01) スタンバイ (lb02) eth0 (heartbeat 監視用) 192.168.0.2 192.168.0.3 eth1 (管理用) 172.16.0.2 172.16.0.3 サービス用 172.16.0.1 (実際にサービスを提供する IP) インストールと設定 パッケージ類のインストール (nginx と heartbeat) ロードバランサーとして利用する nginx と、クラスタリングするための heartbeat をインストールする sudo aptitude install nginx heartbeat nginx の自動起動をやめる sysv-rc-conf などを利用し、各ランレベルでの自動起動を停止しておく ※ sysv-rc-conf をインストールしていない場合は以下でインストールできる sudo sptitude install sysv-rc-conf hosts ファイルに各サーバを登録する sudo vi /etc/hosts

mozilla labs より raindrop を試してみた

イメージ
mozilla LABS に raindrop という新プロジェクトが先月 (Oct 2009) 登場しました。raindrop は mozilla messaging の開発チーム (thunderbird など) が Web 上のメッセージングサービスに関する革新的な実験をするのが目的だそうです。バックエンドは、CouchDB、及び (Twisted) Python です。せっかく仕事で CouchDB を触ったので、インストールしてみることに。 機能は大きく分けて、2 つにわかれています。 Web 上のメッセージングサービス (gmail, imap mail, twitter, skype, etc...) の情報を収集、蓄積する機能 集約した情報を表示、操作するためのユーザインタフェース機能 mozilla LABS に、そのアーキテクチャーを解り易く解説された画像が掲載されていました。 インストール (OS: ubuntu - その他の OS へのインストールは 公式ドキュメント を参照) raindrop ソースコードのダウンロード # mercurial をインストールしていない方は mercurial を取得 sudo apt-get install mercurial cd /usr/src/ sudo hg clone -r 0.1 http://hg.mozilla.org/labs/raindrop python ライブラリー類のインストール 必要なライブラリーは、setuptools, twisted, PyOpenSSL, Skype4Py, python-twitter, simplejson, feedparser, paisley です。setuptools を入れている場合は、以下のコマンドで一発でライブラリー類をいれてくれます。 sudo python raindrop/server/python/check-raindrop.py --configure 上記のコマンドを実行する前に PyOpenSSL を個別に apt-get 経由でインストールしておく (私の環境では setuptools ではうまくいきませんでした)。

ubuntu に mongodb をインストール - with pymongo / vs couchdb

一段落ついたので、couchdb に引き続き mongodb もインストールしてみた。環境は同じく VMWare 上の ubuntu。シングルサーバ、シングルクライアント (python) な環境で比較することに。 というのも、設定に誤りがあるためか、 couchdb が期待できるようなパフォーマンスが出なかったため。100 万件のデータを insert 処理するストレステスト (本番バッチ処理環境を考慮) をしているのですが、途中で conflict -> socket error -> down になってしまう。途中 sleep を入れると socket error は出なくなるけど、それだと遅いのと、なんだか気持ち悪い。前ポストで書いたように、0.8.0, 0.11.0b, 0.10.0 で試したけど、結果は同じでした。何が悪いのだろう・・・。 気は取り直して、mongodb は期待する結果が得られたので、インストールと pymongo 経由での処理方法です。 依存パッケージ類のインストール sudo aptitude install tcsh git-core scons g++ sudo aptitude install libpcre++-dev libboost1.37-dev libreadline-dev libmozjs-dev git から mongodb のダウンロードとインストール (/opt/mongo へ) cd /usr/src/ git clone git://github.com/mongodb/mongo.git cd mongo sudo scons all sudo scons --prefix=/opt/mongo install mongo ユーザの追加 sudo adduser --system --home /opt/mongo/ --no-create-home --shell /bin/bash --group --gecos "mongoDB Administrator" mongo db データディレクトリーの追加とパーミッション設定 sudo mkdir -p /data/db s

CentOS に Django をデプロイ - with python2.6, mod_python, mysql

Ubuntu でしか作ったことなかったけど、CentOS 5 系 で Django をデプロイしてみる とりあえずパッケージを最新に更新 # yum update python 2.6 のインストール CentOS ってデフォルトでは 2.4 なんですね。2.6.4 をソースから入れる。まず zlib, sqlite を入れる。sqlite いれないと import sqlite3 できない # yum install zlib zlib-devel sqlite-devel python ソースのダウンロードとビルド、インストール # wget http://python.org/ftp/python/2.6.4/Python-2.6.4.tgz # tar xvfz Python-2.6.4.tgz # cd Python-2.6.4 /opt/python2.6 にインストール。path は個人的な趣味。 --enable-shared オプションを追加する # ./configure --prefix=/opt/python2.6 --with-threads --enable-shared Setup ファイルで zlib のところのコメントを外す。 # vi Modules/Setup --- #zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz +++ zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz # make # make install python 2.6 環境設定 (2.4 と共存させる) パス周りを設定 # vi /etc/ld.so.conf.d/opt-python2.6.conf # /sbin/ldconfig # sudo ln -s /opt/python2.6/bin/python /usr/bin/python2.6 # cd 個人的な趣味で、PATH は.bash_profile, alias は .bashrc にセット # vi .bash_profile --- PATH=$PATH:$HOME/bi