問題タブ [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.

0 投票する
1 に答える
3554 参照

ansible - リストを Consul にキーと値のペアで保存

これはどのキー/値ストレージ タイプにも当てはまると思いますが、主に Consul をストレージに使用しています。リストをキーの値に保存する方法が必要です。ただし、要素を囲む引用符は削除されます。

私はそれらすべてを試しましたが、問題は、有効なリストとして返す必要があるため、Ansible w/ で実行できることです。with_flattened

可能なタスク:

リストをループして、さらにアクションを実行する必要があります。ただし、要素を正しく解析できないようです。

0 投票する
1 に答える
852 参照

consul - Consul の Bootstrap expect=1 により、クラスターで奇妙な動作が発生する

一度に 1 つずつノードのクラスターを起動しようとしていますが、bootstrap-expect 値について少し混乱しています。

セットアップ方法は、consul が bootstrap-expect で起動され、起動後にconsul join実行されることです。

現在、展開セットのブートストラップ期待値はクラスター内のノード数に設定されており、リーダーはその数の後に選出されます。

ただし、bootstrap-expect が 1 に設定されている場合 (すべてのノードを待たずにクラスターを作成できるようにするためのプロセスと考えられます)、奇妙なことが起こります。

したがって、最初に、各ノードは自分がリーダーであると考えます - これは、bootstrap-expect が 1 に設定されているため、期待されます。クラスターはまだ自分自身をクラスター リーダーと考えています。

ノードがクラスターに参加するときに、新しいリーダーを選出しないのはなぜですか? または、少なくとも既存のリーダーを尊重しますか?

0 投票する
1 に答える
305 参照

apache-zookeeper - Zookeeper、Consul、または etcd などのレジストリでマスター選択を行うときに、2 つのマスターが同時にアクティブになるのを防ぐにはどうすればよいですか?

tl;dr

Zookeeper、Consul、または etcd などのレジストリのいずれかを使用してマスター選出を実装した場合でも、古いマスターがそれがもはやマスターではないことを認識せず、書き込みを試みる競合状態が常に存在するようです。書き込みのブロックが解除され、サービスの 2 つのインスタンスが同時に書き込みを行うことになりますが、これは避けたいと考えています。この競合状態なしでマスター選出を実装するにはどうすればよいでしょうか?

詳細な問題の説明

Zookeeper、Consul、etcd などのレジストリのいずれかを使用して、フェイルオーバー用のマスター選出を実装するとします。

サービス S1、S2、S3 の 3 つのインスタンスがあり、それぞれが同じマシン上に対応するレジストリ ノードを持ち、現在 S1 がマスターで、S2 と S3 がスレーブであるとします。

さらに、S1、S2、S3 はすべて共有状態をレジストリに保存しますが、同時アクセスによって状態が矛盾する可能性があるため、複数のインスタンスが同時にその状態を書き込むことは望ましくありません。

S1 が、レジストリに格納されている共有状態への書き込み操作の最中であるとします。つまり、リーダーであるかどうかを再度確認する前に、さらに書き込み操作を実行します。

この時点でネットワーク パーティションがあるとします。1 つのパーティションは S1 です。もう一方のパーティションは S2 と S3 であるため、クォーラムがあります。

レジストリは、S2 を新しいリーダーとして正しく識別し、S1 をリーダーとして無効にします。

S2 は新しいリーダーであるためアクティブになり、レジストリに格納されている共有状態への一連の書き込み操作を開始します。

パーティションが修復されます。

この時点で、S1 と S2 の両方が同時にレジストリへの書き込み操作を実行し、パーティションが修復されるため両方の書き込み操作が成功し、一貫性のない状態になる可能性があります。

サンプル トレースは次のとおりです。

  1. S1 はマスターであることを通知され、レジストリの共有状態への書き込み操作を開始します
  2. パーティションが発生し、S1 が一方のパーティションに、S2 と S3 が他方のパーティションに
  3. S2 は新しいマスターとして識別されます
  4. S2 は新しいマスターであることが通知され、レジストリの共有状態への書き込み操作を開始します
  5. パーティションが修復されました
  6. S1 はレジストリの共有状態に書き込み、パーティションがないため成功します
  7. S2 はレジストリの共有状態に書き込み、これも成功するため、S1 との書き込みが任意にインターリーブされます。
  8. S1 はマスターではなくなったことを通知され、書き込みを停止します

考え

  • Consul のセッションの観点から考えると、セッション ID も取り、そのセッション ID がまだマスターのものである場合にのみ成功する API 書き込み呼び出しは、この問題を解決しますか?
  • Consul または他のレジストリにそのような呼び出しはありますか?
0 投票する
1 に答える
555 参照

ansible - Ansible ルックアップへのトークンの指定

Consul のキー/値に対してルックアップを発行する必要があります。この方法でトークンを渡そうとしましたが、まだアクセスが拒否されています。トークンは間違いなく正しいです。

0 投票する
3 に答える
1820 参照

load-balancing - ノードの正常性をチェックするサービス ディスカバリ ツールとロード バランサの概念上の違いは何ですか?

最近、いくつかのサービス検出ツールが人気/「主流」になりました。私は、従来のロード バランサの代わりにどのような主なユース ケースでそれらを採用すべきか疑問に思っています。

LB を使用すると、バランサーの背後に多数のノードをクラスター化してから、クライアントがバランサーにリクエストを送信し、バランサーが (通常) それらのリクエストをクラスター内のすべてのノードにラウンド ロビンします。

サービス ディスカバリ ( ConsulZKなど) を使用すると、集中型の「コンセンサス」サービスが特定のサービスのどのノードが正常であるかを判断し、サービスが正常であると判断したノードにアプリが接続します。したがって、サービス ディスカバリと負荷分散は 2 つの別個の概念ですが、サービス ディスカバリは便利な副作用として負荷分散を提供します。

しかし、ロード バランサー ( HAProxynginxなど) にモニタリングとヘルス チェックが組み込まれている場合は、ロード バランシングの副作用としてサービス ディスカバリーを取得できます。つまり、私の LB がそのクラスター内の異常なノードにリクエストを転送しないことを知っている場合、それはコンセンサス サーバーが私のアプリに異常なノードに接続しないように指示するのと機能的に同等です。

したがって、私にとって、サービス検出ツールは、ロード バランサーと同等の「1 つに 6 つ、もう 1 つに 6 つ」のように感じられます。ここで何か不足していますか?負荷分散されたマイクロサービスに完全に基づいたアプリケーション アーキテクチャを使用している場合、サービス ディスカバリ ベースのモデルに切り替えることの利点 (または利点) は何ですか?

0 投票する
1 に答える
1075 参照

ruby-on-rails - 検査モードへの切り替えエラーのため Rails を読み込めません

Ubuntu 14.04 LTS を新規インストールしています。RVM 1.26.11 は、Ruby ruby​​ 2.2.0p0 と共にインストールされます。環境変数を処理するためにenvconsulを使用しています。しかし、私がするとき:

envconsul -config=/etc/envconsul.hcl bundle exec rails c

次のエラーが返されます。

I, [2015-09-02T00:10:00.420551 #3953] INFO -- : ** [Raven] Raven 0.14.0 ready to catch errors Loading development environment (Rails 4.2.3) Switch to inspect mode.

コマンドラインにダンプするだけです。単独で実行できますbundle exec rails cが、環境変数が設定されていないため失敗します。を設定してみました~/.irbrcが、まったく役に立ちません。

私は本当にこれに困惑しています。誰にもアイデアはありますか?

0 投票する
2 に答える
1397 参照

ruby-on-rails - railsアプリのキーペアを提供するconsulサーバーを1つだけ持つことは可能ですか?

1つのconsulサーバーのみでconsulサーバーのキーと値のペアをサーバー化できるかどうかを知りたいです。

Railsアプリのキーと値のペアのみを保存するためにconsulサーバーをセットアップしようとしています。エージェントとして機能する領事サーバーを 1 つだけセットアップしています。ただし、consul の web-ui の設定で問題が発生します。

consul の web-ui を提供するために、consul サーバーとして 1 つの物理インスタンスを実行しようとしました

パブリック IP で領事 web-ui にアクセスするよりも、次のコマンドを実行します。

次のエラーが発生しました

XXXX はインスタンスのプライベート IP です。