HashiCorp のブログに Serf の新しいメジャーバージョン、0.7 に関する記事があがっていましたので翻訳します(私の立場としては、基本的に翻訳については中の人の許可をいただいている形です。しかし、英語の原文が優先されるべき、という立場から、参考訳という形をとっています)。
—-ここから
Serf 0.7 – HashiCorp
https://hashicorp.com/blog/serf-0.7.html
■ Serf 0.7
今日、私たちは Serf 0.7 をリリースします。Serf はメンバ管理(membership)・障害検出(failure detection)・オーケストレーション(orchestration)のための非中央集中型ソリューションです。Serf は複数の大規模デプロイ(単一クラスタ上に 10,000 台以上のマシン)に用いられており、Consul と Nomad の原動力となります。
今回のリリースでは、重要な新しいネットワーク・トモグラフィ・サブシステムによって、自分のクラスタ上におけるラウンドトリップタイム(round trip time)のネットワーク地図を構築できるようにします。他にも、設定ミスやネットワークの間違った挙動を改善するため、数多くの小さな改良を施しています。
Serf 0.7 はここからダウンロードできます。あるいは changelog をご覧ください。
0.7 の主な新機能について学ぶには、このまま読み進めてください。
■ ネットワーク・トモグラフィ
Serf の基礎をなすゴシップ・プロトコルは、クラスタ内の全てのノードが、一定の間隔でお互いに障害が発生していないかランダムに調査(probe)します。この調査の利点は、ノード毎に異なった調査間隔で、ネットワークの RTT(往復遅延時間)を計測できることです。Serf 0.7 が有利な点は、ネットワーク・トモグラフィ・サブシステムから計測できるようにしたことです。これは主にビバルディ(Vivaldi)と呼ばれる学術研究によるアルゴリズムに基づいています。
ビバルディ・アルゴリズムとは、ノードをバネで繋いだ物理シミュレーションと似たような振る舞いをします。ノードは1ヶ所の起点から飛び散りますが、時間の経過と共にお互いの距離に関する情報を学びます。そして、バネのエネルギー保存を最小化するよう距離を調整します。このシミュレーションの結果が「ネットワーク座標(network coordinates)」の集合であり、これによりクラスタ上にある2つのノード間の RRT を簡単に算出できるようにします。
Serf 0.7 はネットワーク座業に関連する新しいコマンドと API エンドポイントを追加しました。次の例は新しい「serf rtt」コマンドを使う例であり、オペレータが対話的に RTT を推定できます。
# 現在のノードから別のノードに対する RTT 推定を取得 $ serf rtt nyc3-server-1 Estimated nyc3-server-1 <-> nyc3-server-2 rtt: 1.091 ms # 2つめと3つめのノード間の RTT 推定を取得 $ serf rtt nyc3-server-1 nyc3-server-3 Estimated nyc3-server-1 <-> nyc3-server-3 rtt: 1.210 ms
また、Serf 0.7 では、raw ネットワーク座標を外部のアプリケーションが RPC プロトコルを等して取得できるようにしています。raw ネットワーク座標の使い方や詳細に関しては、Serf 内部ガイドをご覧ください。
■ TCP フォールバック調査(fallback probles)
Serf 0.7 は TCP フォールバック調査を追加しました。これはゴシップ・プロトコルのノード障害検知において、オペレータが一般的な設定ミスの原因を診断するのに役立ちます。たとえば、TCP トラフィックがノード間で許可されているのに UDP は通らない場合です。ノードに対する調査は成功する場合は、ログ・メッセージでオペレータに問題を警告するだけであり、役に立たない障害検知を抑制します。これはまた、短期間に高いパケットロスが発生しても、別のノードとの安全な代替経路を探し出すため、乗り切る手助けとなります。
■ 更新の詳細について
Serf 0.7 は(高速なギアへの)「シフトアップ」を自動的に行うよう設計されています。これは、ノードがネットワーク・トモグラフィ機能の利用や、TCP フォールバック調査のような新しいプロトコル機能を利用できるようにします。更新にあたって設定が必要な作業は、新しいバイナリを使ってエージェントを再起動するだけです。
より詳細なアップグレード手順は、こちらをご覧ください。
■ ロードマップ
Serf はその複雑さにかかわらず、極めて安定しています。そして、Serf 自身が非常に多くの環境で使われており、Consul や Nomad の基礎技術にもなっています。
次回のリリースは、数多くの改良と共に、ノードの障害検出のために更に洗練されたアルゴリズムに対して集中します。そして、これらはコミュニティの下で開発されるものです。
何か問題があれば、 GitHub 上でご報告ください。
—-ここまで