問題タブ [consul]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java Spring は、Docker コンテナーとして実行されている場合、Consul と通信しません。
私は、マイクロサービスを実行するための一般的なユースケースであると私が信じていることを解決しようとしています。この場合、春のクラウド アプリケーションで領事をテストしています。私は 2 つの異なる方法で領事館をテストしようとしています。1 つは Docker コンテナーで実行され、もう 1 つは Docker ホスト マシンで実行されます。次に、いずれかの領事の例と対話するスプリング クラウド コンテナーを開始しようとしています。
spring クラウド アプリケーションが docker コンテナーとして実行されている場合、spring クラウド アプリケーションを consul と通信させることができませんでした。spring クラウド アプリケーションをホスト ネットワーク モードで実行すると、localhost ポートを解決できるため機能しますが、イメージの複数のインスタンスを実行したい場合、これは受け入れられるソリューションではありません。
両方のサービスをコンテナーとして実行する場合の docker compose ファイルの例を以下に示します。ここでは、環境変数を使用してスプリング クラウドにコンサル uri を設定しようとしていますが、さまざまな構成を使用して機能させることができませんでした。これらの機能が連携して動作する例を誰かが指摘できれば、非常に役立ちます。
consul - Consul: 既存の接続がリモート ホストによって強制的に閉じられました
エージェントを Consul クラスタに参加させ始めると、エラー メッセージが表示されます。
amazon-ec2 - EC2 Docker Consul クラスタリング
この答えはどこかにあると確信していますが、何度か試しても見つけたり修正したりできません。ユースケースは次のとおりです。
1.> 同じ VPC に属しているが異なるセキュリティ グループを持つ 2 つの ec2 インスタンスがあります。
2.> 両方のセキュリティ グループに 22,80 (パブリック用) があり、CIDR ブロック 10.20.0.0/16 用に開いているすべてのポートからのすべてのトラフィック
3.> EC2 インスタンスの内部 IP は 10.20.0.51 (サーバー 1) と 10.20.0.202 (サーバー 2) です。
4.> これらの次のコマンドを使用して、2 つの Docker 化された領事サーバーを実行しています。
5.> 両方が起動し、1 秒間お互いを認識し、選択が行われ、最初のノードが選択されますが、その直後にサーバー 2 が「メンバーリスト: 疑わしいノード 1 が失敗しました。ACK が受信されませんでした」と言い始め、サーバー 1また、「memberlist: Suspect node2 has failed, no ack received」とも言います
server-1 のログは次のようになります。
そしてサーバーの場合-2
正確に私が間違っていること。私が望むのは、2 つの EC2 インスタンスで 2 つの consul docker を実行し、セキュリティ グループのポートを明示的に開かずにそれらの間で通信することだけです (明示的にそれらを開くと、もちろん動作します!)
誰か助けてください。
ありがとう
kubernetes - 認証されたユーザー アクティビティに基づくアプリケーションの起動とシャットダウン
企業には、常に実行する必要がなく、ユーザー ベースが限られている (少数のユーザーなど) アプリケーションやサービスがあります。
これらのアプリケーションは、スケジュールに基づいて、またはより適切なユーザー アクティビティに基づいて、シャットダウンおよび開始できます。つまり、オンデマンド サービス (コンテナでラップされたものなど) とノードの起動とシャットダウンについて話しているのです。
まず、認証済みのユーザー アクティビティについて言及する理由は、認証されたユーザー アクティビティに基づいて (つまり、下位レベルのネットワーク トラフィックに基づいてではなく) 起動およびシャットダウンするのが理にかなっているからです。企業の SSO (OAuth 2 ベースなど) が関与していると想像できます。
それで、私の質問は、Consul または Kubernetes を使用して、私が説明したことを誰かが実装しようとしたかどうかです。
Consul の場合、認証されたユーザーが特定の「マイクロ」クラスのアプリケーションへのアクセスを要求するたびに、キー値ストアを使用して「マイクロ」(つまり、小規模なユーザー ベース) クラスのアプリケーションに TTL を与えることができます。 TTL が更新されます。TTL ウィンドウの間、ノード、コンテナー、およびサービスの正常性を確認したいのですが、ウィンドウの外ではチェックしません (運用コストを節約したいため)。
この質問はこの自動スケーリングの質問に似ていますが、このユースケースは、認証されたユーザーベース (ほとんどの場合 SSO を使用) に基づいて 0 ノードから 0 ノードにスケーリングするという意味で異なります。
templates - consul-template のループで変数をオーバーライドする
consul-template で次のテンプレートを使用しています。
生産する
どこ.Name
にgeoserver_dev_hello_org
あり、server_name=geoserver.hello.org
タグがあります。.Tags
範囲ループの終わりまでに、$server_name
値は になるはずですgeoserver.hello.org
が、元の値はまだ ですgeoserver.dev.hello.org
。
ループがオーバーライドされるようにするにはどうすればよい$server_name
ですか (値が見つかったときにループを終了します)。
docker - Docker コンテナがオーバーレイ ネットワーク経由で接続できない
複数のホストで Docker を実行しており、Consul をキー値ストアとして使用しています。オーバーレイ ネットワークを作成できます。コンテナは互いのホスト名と IP を確認できます。コンテナが作成または破棄されると、/etc/hosts が適切に更新されます。ただし、異なるホストにあるコンテナーは実際には相互に接続できません (同じホストにあるコンテナーは接続できます)。
私はログを調査し続けており、Docker デーモンのログには次のものが含まれています。
Docker デーモンは何らかの方法で自分自身を識別する必要がありますか? 各デーモンは単にホスト名を識別子として使用するため、Serf が混乱しているようです。
configuration - サービス検出ツールは、サービス資格情報の提供も担当していますか?
私はまだサービス検出とクラウド プログラミングの概念に慣れていないため、いくつかの基本的な概念を理解しようとしています (決まり文句を言います)。しばらく頭に浮かんだ質問は、Consul、etcd、Zookeeper などのサービス ディスカバリ ソリューションは、サービス資格情報も提供する責任があるのかということです。
たとえば、データベース サーバーの場所に関する情報を照会する Web アプリケーションがある場合、それに接続するための資格情報 (ユーザー名、パスワード) を提供する責任があるのは誰でしょうか? これはおそらく主観的なものであることは承知していますが、それに関連するベスト プラクティスについて詳しく知りたいと思います。