問題タブ [etcd]
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.
queue - etcd で作業キューをどのように実装しますか
etcdの調査を始めたばかりで、作成者による講演で言及されているユース ケースの 1 つは、ワーク キュー システムです。
しかし、実際にこれをどのように実装しますか?
基本的なパターンはこのようなものになります。
1 プロセスで「作業内容チケット」を生成し、そのチケットを etcd のフォルダーに配置すると、「/queue/worktickets/00000000001/」と言うことができます
1->「/queue/worktickets/」フォルダーの変更をリッスンする多くのプロセス。新しいワーク チケットが表示されると、すべてのプロセスは「/queue/locks/00000001」に新しい値を作成してそのチケットをロックすることにより、チケットを取得しようとします。最初のものだけがロック値を作成できます。
ロック チケットを作成したプロセスが機能し、キューからチケットを削除し、場合によってはロック値も削除します。次に、キューから次に利用可能なチケットを取得しようとします。使用可能なチケットがなくなった場合は、「/queue/worktickets/」フォルダー内の変更のリッスンを再度開始します。
私の頭の中では、これを実装するのはかなり簡単なはずですが、キューが大きくなると (チケットは生成するのは簡単ですが、処理するのは難しいです)、大量のデータが etcd から各クライアントに転送されるようです。私の知る限り、このフォルダーに存在しない最初の値をこのフォルダーに教えてくださいと言う方法はありません。また、フォルダーの上位 n 項目を教えてくれるものもあります。
誰もがこれについての考えを共有したいと思っています。
configuration - サービス検出ツールは、サービス資格情報の提供も担当していますか?
私はまだサービス検出とクラウド プログラミングの概念に慣れていないため、いくつかの基本的な概念を理解しようとしています (決まり文句を言います)。しばらく頭に浮かんだ質問は、Consul、etcd、Zookeeper などのサービス ディスカバリ ソリューションは、サービス資格情報も提供する責任があるのかということです。
たとえば、データベース サーバーの場所に関する情報を照会する Web アプリケーションがある場合、それに接続するための資格情報 (ユーザー名、パスワード) を提供する責任があるのは誰でしょうか? これはおそらく主観的なものであることは承知していますが、それに関連するベスト プラクティスについて詳しく知りたいと思います。
go - golang etcd クライアントを使用してディレクトリノードを作成するには?
できればjsonで次のような構造にしたいと思います:
「a」と「x」をディレクトリとして使用し、その下にノードを作成してデータを保存できます。これを行う方法のドキュメントまたは例では見つかりません。
編集:セットの/a/b、/a/c、/x/y、/x/zを呼び出して、ディレクトリとして作成しました。これにより、必要な構造が作成されますが、4 つの etcd 呼び出しの代わりに、おそらく同じことを行う単純化されたバージョンを探しています。
docker - docker-swarm および docker-compose ノードを動的に追加し、それらをサービスで解決できるようにする方法
docker-compose
私は、docker ハブ Web サイトのプロジェクトで遊んで、一緒にまとめました。
私を逃してしまうことの 1 つは、(インスタンスを追加することによって) 個々のサービスをスケールアップし、既存のインスタンスに何らかの方法でそれらの新しいインスタンスを認識させる方法です。
たとえば、正規のdocker-compose
例は次のクラスタで構成されています。
- redis ノード
- Python (フラスコ) ノード
- haproxy ロードバランサー
クラスターを作成し、すべて正常に動作しますが、別のノードをクラスターに追加しようとします。
それはうまくいきました...しかし、haproxyノードがクラスターについて何を見るか見てみましょう( docker-machine
「/etc/hosts」ファイルを変更します)
そのノードを使用してクラスター全体を再起動すると、データが取り込まれてdocker-compose
いるはず/etc/hosts
ですが、さらに壊れているようです。
結論として、これを行うためのよりスマートな方法 (解決と発見) はありますか? hostsファイルを更新するだけでなく、別のよりスマートな方法はありますか? ここでのベストプラクティスは何ですか?
docker - etcd キーによるコンテナの依存関係
etcd キーにコンテナーを依存させたい。値が「x」のキー「key」があり、そのキーが「y」に変更された場合、特定のコンテナーを強制終了したいとします (常に再起動するユニットがあるため、自動的に再起動します)。これを達成する方法がよくわかりません。
これは、一部のキーが変更された場合、いくつかのコンテナーを (特定の順序で) 再起動する一連のアクションを開始する必要があるためです。
何か案は?
docker - etcd2 サービスがクラスターで開始されない
コア OS クラスターを起動しています。3 つのノードが開始され、 https://discovery.etcd.io/XYZ curl
にアクセスでき、それぞれが他のノードを表示できます。YAML は次のようになります。
journalctl -u etcd2 -f
2 つのノードが表示されます。
3 番目のノードは、実際に何かを行っているようにしか見えませんが、次のようになります。
etcdctl cluster-healthを実行しようとすると、 次のようになります 。
3 番目は次のことを示しています。
何か案が?誰もが discovery.etcd.io にアクセスできるため、プライベートな ETCD2 サービスを実行することはお勧めできません。
ありがとう!
docker - 起動時のコンテナの依存関係の管理
私は次の設定をしています:
- PostgreSQL
- そのためのフライウェイ
- 応用
それらを次のように連鎖させる必要があります。Flyway は DB が起動するのを待ち、App は Flyway が移行を完了するのを待ちます。
etcd
私はそれにいくつかのキーを投稿し、他のコンテナがそれらを待つために使用することを考えました。したがって、基本的に、各コンテナのエントリポイントは次のようになります。
私の質問は次のとおりです。
1) 私はそれを正しく行っていますか?
2) プロセスから切り離し、追加のユーティリティをあまりインストールせずにプロセスに再接続するにはどうすればよいですか (ベース イメージとして busybox/debian を使用すると仮定します)。
PS Supervisord について考えましたが、近いですが、そこでプロセスを待機させる (そしてそれらを連鎖させる) 方法がわかりません PPS すべてのセットアップは Docker Compose によって実行されることを意図しています。
ssl - 証明書を提供せずに etcdctl を使用する方法
みなさん、
非常にばかげた質問かもしれませんが、クラスター ノード間に SSL を備えた CoreOS クラスターがあります。クラウド構成内でフリートと etcd をセットアップしました。
flightctl は非常にうまく機能します。証明書を提供する必要はありませんが、etcdctl を使用すると、次のような証明書パスを強制的に提供する必要があります。
etcdctl が毎回証明書パスを必要としないように etcd2 を構成できる方法はありますか?
私のクラウド構成の一部: