私のサービスレシピ:DBサーバー<->アプリサーバー<-> Webリバースプロキシ。
私の関係要件は次のとおりです。
以下にJujuコマンドのシーケンスを示します。これは私の場合に発生します
期待される手順は次のとおりです(間違っている場合は修正してください):
フェーズ-インストール
フェーズ-スケーリング
理想的には、relation-xxxフックがDbの新しいユニットでのみ起動するようにします。 deploy ?に対して提案されたものと同様のユニット追加パラメータ受け渡しメカニズムである可能性があります。
現在の機能を考慮した回避策についての私の考えは次のとおりです。
もう1つの方法は、アプリサーバーとデータベースのペアに共通する特定のコードがあることです。デプロイ後フェーズのsetコマンドと同様に、これを使用して、ユニットの追加後に特定のサービスインスタンスに値を設定できますか?
もう1つのオプションは、コンテナースコープを持つ従属サービスですが、Dbをアプリサーバーのマシンインスタンスではなく、別のマシンインスタンスとして使用したいと考えています。
Webプロキシに関しては、フックが起動されることを期待しているので、プロキシは新しいアプリサーバーをバックエンドとして追加できます。現在のJujuの動作は理想的です。
これを実現するための最適な方法を楽しみにしています。前もって感謝します..
2つのアプリサーバーを一意のデータベースサーバーに一意にバインドする必要があるように思えます。これは、それらが実際には2つの別個のサービスであることを意味します。これは理にかなっているかもしれません:
juju deploy mysql app1-db
juju deploy app app1
juju deploy mysql app2-db
juju deploy app app2
juju add-relation app1-db app1
juju add-relation app2-db app2
これにより、app1とapp2の両方が独立しているようになります(同じ魅力がありますが)。これはあなたが望むものだと思います。両方を同じhaproxyから負荷分散する場合:
juju deploy haproxy app-reverse-proxy
juju add-relation app1 app-reverse-proxy
juju add-relation app2 app-reverse-proxy
古いバージョンのhaproxyはこれを処理できなかったことに注意してください(チャームリビジョン23より前)。
修正を追跡したバグは次のとおりです。
https://bugs.launchpad.net/charms/+source/haproxy/+bug/1029078