Play FrameworkのフロントにApacheをおいてサービス停止することなくアップデートをかける方法

ELBなどを使えばアプリケーションの異なるインスタンスを繋ぎ直すことでアップデートが出来ますが、1台のサーバ上でサービスを停止することなくアプリケーションの更新を掛ける方法です。

まず前提としてPlayをポートを変えて2つ起動します。それなりのリソースが必要です。

9000ポートで起動しているものをプライマリ、9001ポートで起動しているものをセカンダリとします。

vim /etc/httpd/conf.d/play.conf

<VirtualHost hoge.com:80>
  ServerName hoge.com
  <Location /balancer-manager>
    SetHandler balancer-manager
    Order Deny,Allow
    Deny from all
    Allow from .hoge.com
  </Location>
  <Proxy balancer://mycluster>
    BalancerMember http://localhost:9000
    BalancerMember http://localhost:9001 status=+H
  </Proxy>
  <Proxy *>
    Order Allow,Deny
    Allow From All
  </Proxy>
  ProxyPreserveHost On
  ProxyPass /balancer-manager !
  ProxyPass / balancer://mycluster/
  ProxyPassReverse / http://localhost:9000/
  ProxyPassReverse / http://localhost:9001/
</VirtualHost>

status=+Hをつけることでこちらを待機系とすることができます。

9000ポートのほうが停止している時に9001の方にアクセスがふられるようになります。

https://www.playframework.com/documentation/ja/2.2.x/HTTPServer