注記
serf.ioをお探しですか?農奴のウェブサイトは10/02/2024に閉鎖されました。以前にserf.ioから提供されたドキュメントはhttps://github.com/hashicorp/serf/blob/master/docs/index.html.markdownを見つけることができます
農奴は、軽量で、非常に利用可能で、断層の耐性のあるサービスの発見とオーケストレーションのための分散型ソリューションです。
SerfはLinux、Mac OS X、およびWindowsで実行されます。効率的で軽量のゴシッププロトコルを使用して、他のノードと通信します。農奴はノード障害を検出し、クラスターの残りの部分に通知することができます。イベントシステムは農奴の上に構築されているため、農奴のゴシッププロトコルを使用して、展開、構成の変更などのイベントを伝播できます。SERFは完全にマスターレスで、単一の失敗ポイントはありません。
農奴のユースケースの例は次のとおりですが、他にもたくさんあります。
まず、オペレーティングシステム用に事前に構築された農奴バイナリをダウンロードしたり、農奴をコンパイルしたり、 go get -u github.com/hashicorp/serf/cmd/serfを使用してインストールしたりします。
次に、いくつかの農奴エージェントを始めましょう。エージェントは、農奴のメンテナンスタスクの通信をやめるように言われるまで実行されます。実際のSERFセットアップでは、システム内の各ノードは1つ以上のSERFエージェントを実行します(複数のクラスタータイプを実行すると複数のエージェントを実行できます。
各セルフエージェントを別のターミナルセッションで開始して、それぞれの出力を確認できるようにします。最初のエージェントを開始します:
$ serf agent -node=foo -bind=127.0.0.1:5000 -rpc-addr=127.0.0.1:7373
...
別の端末セッションで2番目のエージェントを開始します(最初のセッションはまだ実行されています):
$ serf agent -node=bar -bind=127.0.0.1:5001 -rpc-addr=127.0.0.1:7374
...
この時点で、2人の農奴が独立して走っていますが、まだお互いに気づいていません。次に、最初のエージェントに既存のクラスター(2番目のエージェント)に参加するように伝えましょう。 SERFエージェントを起動するときは、少なくとも1つの既存のメンバーを指定して、既存のクラスターに参加する必要があります。この後、農奴とクラスターの残りのゴシップと残りのゴシップが結合を認識します。 3回目の端末セッションで次のコマンドを実行します。
$ serf join 127.0.0.1:5001
...
ターミナルを見ている場合は、両方の農奴エージェントが参加に気付くのを見る必要があります。 serf membersを実行して、農奴クラスターのメンバーを見ることでそれを証明できます。
$ serf members
foo 127.0.0.1:5000 alive
bar 127.0.0.1:5001 alive
...
この時点で、CTRL-Cまたはフォースのいずれかの農奴を殺すことができ、メンバーシップリストを適切に更新します。 CTRL-Cである場合、セルフエージェントは、クラスターに去る意図をクラスターに通知することで優雅に離れます。エージェントを強制的に殺すと、最終的には(通常は数秒以内に)クラスターの別のメンバーによって検出され、ノード障害のクラスターに通知されます。
完全で包括的なドキュメントは、SERF Webサイトで表示できます。
https://github.com/hashicorp/serf/tree/master/docs
農奴自体で作業したい場合は、最初にインストールする必要があります(バージョン1.10+が必要です)。 GoPathのセットアップなど、適切にインストールされていることを確認してください。
次に、このリポジトリを$GOPATH/src/github.com/hashicorp/serfにクローンしてから、 makeだけです。しばらくして、作業用のserfな実行可能なものがあります。
$ make
...
$ bin/serf
...
注: make 、 $GOPATH/bin/の下に実行可能ファイルのコピーを配置します/
農奴は何よりもまず、コマンドラインインターフェイスであるserf備えたライブラリです。農奴図書館は、コマンドラインエージェントであるserfから独立しています。 serfバイナリはcmd/serfの下にあり、コマンドgo get -u github.com/hashicorp/serf/cmd/serfを発行することでスタンドアローンをインストールできます。 Serf Libraryを使用するアプリケーションは、 github.com/hashicorp/serfを含めるだけでいいはずです。
テストは、Typing make testによって実行できます。
コードに変更を加えた場合は、GO標準に従ってコードを自動的にフォーマットするために、 make format実行します。