Apacheの<proxy balancer>指定の確認


概要

loadbalancer の指定を行うに当たって、conf の定義について、あまり理解できていなかった部分があったので、シンプルな環境で確認を行った。きっかけは、<proxy balancer://~~>ディレクティブに、/ が使えない事象が発生して、ちょっと腑に落ちない状況だったので。
例:<proxy balancer://cluster/dir/service>

環境

  • macOS sierra(Host)
  • Docker
    • apache 2つ
    • loadbalancer 1つ

1. Apache 環境準備

DockerHub からImageを拝借

docker pull eboraas/apache

ファイル編集用に、vimインストール

apt-get update
apt-get install vim

確認用のHTMLを用意

デフォルトで/var/www/htmlがホームディレクトリとなってたので、そこはそのまま使用。

/var/www/html/index.html
<html>
<body>
It's work!! [apache#one]
</body>
</html>

フォルダー配下の表示確認を行うため、適当なフォルダを作成しHTMLファイルを設置。

/var/www/html/dir_a/dir_b/index.html
<html>
<body>
[apache#one] /dir_a/dir_b/index.html
</body>
</html>

※同じようにして、apache2つ目も環境を構築。

2. loadbalancer 環境準備

DockerHub からImageを拝借

docker pull corba/load-balancer

loadbalancer 側からHTML表示確認

# curl http://172.17.0.22/
<html>
<body>
It's work!! [apache#one]
</body>
</html>

# curl http://172.17.0.22/dir_a/dir_b/
<html>
<body>
[apache#one] /dir_a/dir_b/index.html
</body>
</html>

# curl http://172.17.0.23/
<html>
<body>
It's work!! [apache#two]
</body>
</html>

# curl http://172.17.0.23/dir_a/dir_b/
<html>
<body>
[apache#two] /dir_a/dir_b/index.html
</body>
</html>

balancer configテスト #1

/etc/apache2/mods-availabled/proxy_balancer.conf
ProxyPass /balancer-manager !
ProxyPass / balancer://cluster/ lbmethod=bybusyness
<Proxy balancer://cluster/>
  # Balancer members
  BalancerMember http://172.17.0.22:80 route=1
  BalancerMember http://172.17.0.23:80 route=1
</Proxy>
<Location /balancer-manager>
  SetHandler balancer-manager
</Location>

更新ボタン押下で切り替わりを確認

balancer config テスト #2

/etc/apache2/mods-availabled/proxy_balancer.conf
ProxyPass /balancer-manager !
ProxyPass / balancer://cluster/dir_a/dir_b/ lbmethod=bybusyness
<Proxy balancer://cluster/dir_a/dir_b/>
  # Balancer members
  BalancerMember http://172.17.0.22:80 route=1
  BalancerMember http://172.17.0.23:80 route=1
</Proxy>
<Location /balancer-manager>
  SetHandler balancer-manager
</Location>

こっちも問題なく切り替わる事確認

結果、"/" がディレクティブに使えないわけではなさそうだけど...

<proxy balancer://~~>に、パスの指定で”/”を定義する形になっても、動作する事は確認できた。ただ、本来の問題の原因がわかっていないので、引き続き調査必要です...

参考