[Wakame]Rails2.3.2+mysql_replication_adapterでDB負荷分散
MySQLレプリケーションをして増えたSlaveに対し、SQLのReadクエリ分散をしようと思った時、大まかに2つの方法でDB接続する方法が考えられる。- アプリケーション側から複数あるReadクエリ分散先のDBを選択する方法
- アプリケーション側からは決まったIPにReadクエリを投げると、そのIPにあるバランサーがReadクエリ分散先のDBを選択してくれる方法
アプリケーションサーバの種類によっては、その後再起動を迫られるものもあるだろうし、DB接続ライブラリが少し賢ければ、オンラインのまま設定の再読込をしてくれるかも知れない。
弊社は基本的にRailsを利用しており、上記の方法を検討してみたが、やはりSlaveリストを更新する方法は複雑でアプリケーションの作りに関わりすぎるという評価になった。
後者の、アプリケーション側からは決まったIPにReadクエリが投げられる場合は、Slaveリストというものは常にそのIPの1エントリ固定となり、更新する必要がなくなる。
接続先の選択はそのIP上にいるバランサーに一任されるからだ。
今回は、このバランサーにElastic Load Balancerが使えるのではないかと言うことで、メンバーに検証をしてもらった(表題のリンク先)。
うまくいけばWakameに任せたいので、その前段階までやってもらったわけだが、これが想定通りきちんと動作しているように見える。
「MySQL SlaveにはElastic Load Balancerが使える」
次はこの結果を受けて、Wakameに取り込んでいく作業が必要そうだ。
[フレーム]
コメントする