分散結果は?久しぶりの技術ネタ。ECCUBE-MYSQLの構成において、MySQLの接続を負荷分散する。通常、負荷分散といえば、WEBサーバーに対して負荷分散を行い、WEBアクセスに対する負荷を軽減させるために用いることが多いが、今回はDBに対する処理を分散させることが目的。負荷分散はMySQLRouter負荷分散はMySQLRouterを使用。様々な負荷分散方法があるようだが、検証の結果MySQLRouterが一番シンプルで使いやすかった。フェイルオーバーも有効で拡張性も高い。ドキュメントが全て英語なのと、導入事例が少なかったのが少々難儀ではあるが、できないことはないはず。構成イメージ構成イメージとしては、WEBサーバー内にMySQLRouterを入れ、レプリケーションしているDBへの接続を負荷分散する。MySQLはDBレプリケーションで同期している状態。負荷分散を考える上でポリシー決めは重要である。負荷バランスを均等にするために、どういったルールに基づいて負荷分散させるのか。今回の負荷分散は以下のように定義トランザクション系処理→Master参照トランザクション中の参照処理→Master参照それ以外の参照処理→Master/Slave負荷分散MySQLレプリケーションの仕様上、Slaveを更新するのはご法度なため、上記のような定義とした。あとは、EC-CUBEの中でどうやって処理を振り分けるのか。SC_QueryをカスタマイズSC_Query内部をカスタマイズして、負荷分散ロジックを追記。{//分散させる}単純にこのような分岐処理を書いただけ。分散結果は?バッチリ負荷分散されている!単純な参照処理はDB2台に均等に割り振られるが、更新系になると1台に集中する。理想的な負荷分散に成功した!完璧です。想像通りの動きになっている。あとは性能検証を行い、チューニングを施せば本番運用に耐えうるものに仕上がるだろう。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。isoファイルを以下のURLからダウンロードして、DVDに書込。原因はなんとなくわかっている。