今回は、Cloud Design Pattern(CDP)の記事になります。
対象は「Multi-Datacenterパターン」です。
このパターンの「注意点」に下記の記載があります。
AZ間の通信速度が気になる場合は、アプリケーションやHAProxyなどのミドルウェアで基本的には同一AZのEC2と通信するようにし、そのEC2が障害時に別AZのEC2と通信するように制御することも可能である。
そこで今回は、HAProxyを利用して通常は同一AZのEC2と通信するところを、そのEC2に障害が起きた場合、別AZのEC2と通信するような設定を試してみました。
HAProxyの設定は、HAProxyを用いたRead Replica(RDS)の振り分けの記事で紹介したbackupオプションを利用することで簡単に実現することが可能です。
尚、backupオプションは、backupオプションが付与されていないすべてのバックエンドサーバに対する通信ができなくなった場合に限り、backupオプションが付与されているサーバをバックエンドとして利用するものです。
具体的には、Kyoto Tycoonの冗長化の記事で紹介した、別AZで冗長化したKyoto Tycoon(Memcache)に対して、上記の設定を行なってみます。
上記を図にすると、下記のようになります。
Aゾーンのhaproxy.cfgの設定は、下記のようになります。
listen memcache bind 0.0.0.0:11211 mode tcp balance leastconn server memcache-a kt-a:11211 check port 11211 server memcache-b kt-b:11211 check port 11211 backup
BゾーンのEC2(kt-b)にbackupオプションを付与することで、kt-bはkt-aが利用できなくなった時のみ利用されるようになり、通常は同一AZの通信速度で利用することができます。