mongodb構築
WEBサーバのアクセスログ、アプリのアクティビティログをmongodbで保存することにしました。 アクセスログの追跡をできるようにrockmongoというWEBユーザーインタフェイスも入れておきます。
レプリカセットを作る
PRIMARY,SECONDARY,ARBITERで3つのインスタンスを用意します。ARBITERはどちらがPRIMARYであるべきかを監視してるもののようです。 各インスタンスにmongodbをインストールした後、mongodを立ち上げます。レプリカセット名はrs0とします。
/etc/mongod.conf
replSet = rs0
次にmongoコマンドでシェルに入って、次のように初期化を行います。
config = { _id : "rs0", members : [ { _id : 0, host : "staging-mongo-1" }, { _id : 1, host : "staging-mongo-2" }, { _id : 2, host : "staging-admin-1", arbiterOnly : true } ] } rs.initiate(config);
rs.status()で状態を確認できます。
mongoidの設定
railsからは常にPRIMARYに接続するようにします。mongoidでは下記のように設定してPRIMARYにつなぐようにします。もしフェイルーオーバした場合でも、再起動とか必要なくそのまま新しいPRIMARYに接続してくれます。
config/mondoig.yml
staging: sessions: default: hosts: - staging-mongo-1:27017 - staging-mongo-2:27017 database: example_staging options: max_retries: 30 retry_interval: 1 read: primary
nginxのアクセスログの保存
fluentd経由でmongodbに書きこみます。