概念
39 ページ-
バージョン管理
このドキュメントでは、etcdプロジェクトでサポートされるバージョンについて説明します。 サービスのバージョン管理とサポート対象バージョン etcdのバージョンは、セマンティックバージョニング の用語に従い、x.y.zと表記します。xはメジャーバージョン、yはマイナーバージョン、zはパッチバージョンです。新しいマイナーバージョンでは、APIに機能が追加される場合があります。 etcdプロジェクトでは、現行バージョンとその前のリリースのリリースブランチを保守します。たとえば、v3.5が現行バージョ …
このドキュメントでは、etcdプロジェクトでサポートされるバージョンについて説明します。 サービスのバージョン管理とサポート対象バージョン etcdのバージョンは、セマンティックバージョニング の用語に従い、x.y.zと表記します。xはメジャーバージョン、yはマイナーバージョン、zはパッチバージョンです。新しいマイナーバージョンでは、APIに機能が追加される場合があります。 etcdプロジェクトでは、現行バージョンとその前のリリースのリリースブランチを保守します。たとえば、v3.5が現行バージョ …
-
実行時再構成の設計
実行時再構成は、分散システム、とりわけetcdのようにコンセンサスに基づくシステムで、実装が最も難しく、誤りが生じやすい機能の1つです。 ここでは、etcdの実行時再構成コマンドの設計と、これらの問題への取り組みを説明します。 2段階の構成変更でクラスターの安全性を確保 etcdでは、安全性のため、すべての実行時再構成を2段階 で行う必要があります。たとえばメンバーを追加する場合は、まず新しい構成をクラスターに通知し、その後に新しいメンバーを起動します。 第1段階 - 新しい構成をクラスターに通 …
実行時再構成は、分散システム、とりわけetcdのようにコンセンサスに基づくシステムで、実装が最も難しく、誤りが生じやすい機能の1つです。 ここでは、etcdの実行時再構成コマンドの設計と、これらの問題への取り組みを説明します。 2段階の構成変更でクラスターの安全性を確保 etcdでは、安全性のため、すべての実行時再構成を2段階 で行う必要があります。たとえばメンバーを追加する場合は、まず新しい構成をクラスターに通知し、その後に新しいメンバーを起動します。 第1段階 - 新しい構成をクラスターに通 …
-
性能
性能を理解する etcdは、高い性能を安定して持続的に提供します。性能を決める要素は、レイテンシーとスループットの2つです。レイテンシーは操作の完了にかかる時間で、スループットは一定期間内に完了する操作の総数です。etcdがクライアントのリクエストを並行して受け付ける場合、通常は全体のスループットが増えるにつれて平均レイテンシーも増加します。Google Compute Engine(GCE)の標準的なn-4や同等のAWSマシンタイプといった一般的なクラウド環境では、3メンバーのetcdクラスタ …
性能を理解する etcdは、高い性能を安定して持続的に提供します。性能を決める要素は、レイテンシーとスループットの2つです。レイテンシーは操作の完了にかかる時間で、スループットは一定期間内に完了する操作の総数です。etcdがクライアントのリクエストを並行して受け付ける場合、通常は全体のスループットが増えるにつれて平均レイテンシーも増加します。Google Compute Engine(GCE)の標準的なn-4や同等のAWSマシンタイプといった一般的なクラウド環境では、3メンバーのetcdクラスタ …
-
障害の種類
大規模なマシン環境では、障害は珍しくありません。ハードウェアやソフトウェアの不具合によって、マシンに障害が発生します。停電やネットワークの問題では、複数のマシンに同時に障害が発生します。異なる種類の障害が同時に起きることもあるため、起こり得る障害をすべて列挙することはほぼ不可能です。 このセクションでは障害を分類し、etcdがそれらに耐えるためにどのように設計されているかを説明します。ほとんどのユーザーは、個々の障害をいずれかの種類に当てはめられます。まれな障害やリカバリー不能な障害 に備え …
大規模なマシン環境では、障害は珍しくありません。ハードウェアやソフトウェアの不具合によって、マシンに障害が発生します。停電やネットワークの問題では、複数のマシンに同時に障害が発生します。異なる種類の障害が同時に起きることもあるため、起こり得る障害をすべて列挙することはほぼ不可能です。 このセクションでは障害を分類し、etcdがそれらに耐えるためにどのように設計されているかを説明します。ほとんどのユーザーは、個々の障害をいずれかの種類に当てはめられます。まれな障害やリカバリー不能な障害 に備え …
-
gRPCゲートウェイを使う理由
etcd v3は、メッセージングプロトコルにgRPC を使用します。etcdプロジェクトは、gRPCでetcdクラスターと通信するための、gRPCベースのGoクライアント とコマンドラインユーティリティーetcdctl を提供しています。gRPCをサポートしない言語向けには、JSONのgRPCゲートウェイ を提供しています。このゲートウェイはRESTfulなプロキシとして動作し、HTTP/JSONリクエストをgRPCメッセージに変換します。 gRPCゲートウェイの使用 ゲートウェイは、etcdの …
etcd v3は、メッセージングプロトコルにgRPC を使用します。etcdプロジェクトは、gRPCでetcdクラスターと通信するための、gRPCベースのGoクライアント とコマンドラインユーティリティーetcdctl を提供しています。gRPCをサポートしない言語向けには、JSONのgRPCゲートウェイ を提供しています。このゲートウェイはRESTfulなプロキシとして動作し、HTTP/JSONリクエストをgRPCメッセージに変換します。 gRPCゲートウェイの使用 ゲートウェイは、etcdの …
-
etcdと他のキー・バリューストアの比較
「etcd」という名前は、Unixの「/etc」フォルダーと、distributed systems(分散システム)の頭文字「d」に由来します。「/etc」フォルダーは単一システムの構成データを保存する場所ですが、etcdは大規模な分散システムの構成情報を保存します。つまり、分散した(distributed)「/etc」が「etcd」です。 etcdは、大規模な分散システムの汎用的な基盤として設計されています。対象となるのは、スプリットブレインでの動作を決して許容せず、そのためには可用性を犠牲に …
「etcd」という名前は、Unixの「/etc」フォルダーと、distributed systems(分散システム)の頭文字「d」に由来します。「/etc」フォルダーは単一システムの構成データを保存する場所ですが、etcdは大規模な分散システムの構成情報を保存します。つまり、分散した(distributed)「/etc」が「etcd」です。 etcdは、大規模な分散システムの汎用的な基盤として設計されています。対象となるのは、スプリットブレインでの動作を決して許容せず、そのためには可用性を犠牲に …
-
etcd APIの保証
etcdは、一貫性と耐久性を備えたキー・バリューストアです。 キー・バリューストアはgRPCサービス を通じて公開されます。 etcdは、分散システムで最も強い一貫性と耐久性の保証を提供します。 この仕様では、etcd APIが提供する保証を列挙します。 対象のAPI KV API Range RangeStream Put Delete トランザクション Watch API Watch Lease API Grant [Revoke] キープアライブ KV APIは、キー・バリューストアの直接 …
etcdは、一貫性と耐久性を備えたキー・バリューストアです。 キー・バリューストアはgRPCサービス を通じて公開されます。 etcdは、分散システムで最も強い一貫性と耐久性の保証を提供します。 この仕様では、etcd APIが提供する保証を列挙します。 対象のAPI KV API Range RangeStream Put Delete トランザクション Watch API Watch Lease API Grant [Revoke] キープアライブ KV APIは、キー・バリューストアの直接 …
-
etcdの永続ストレージファイル
このドキュメントでは、etcdの永続ストレージの形式、つまり命名、内容、開発者が内容を調べるためのツールを説明します。今後、ストレージモデルの変更に合わせて内容を拡充することを想定しています。etcd開発者のデータリカバリーに役立つことを目的としています。 前提知識 次の記事は、このドキュメントを読むための背景知識として役立ちます。 etcdのデータモデルの概要 Raftの概要 (特に「5.3 ログの複製」のセクション)。 概要 長期間保持されるファイル ファイル名 主な用途 …
このドキュメントでは、etcdの永続ストレージの形式、つまり命名、内容、開発者が内容を調べるためのツールを説明します。今後、ストレージモデルの変更に合わせて内容を拡充することを想定しています。etcd開発者のデータリカバリーに役立つことを目的としています。 前提知識 次の記事は、このドキュメントを読むための背景知識として役立ちます。 etcdのデータモデルの概要 Raftの概要 (特に「5.3 ログの複製」のセクション)。 概要 長期間保持されるファイル ファイル名 主な用途 …
-
etcd API
このドキュメントでは、etcd v3 APIの中心となる設計の概要を説明します。 etcd v3.5で非推奨となったetcd v2 APIとは異なることに注意してください。 すべてを網羅するものではなく、使用頻度の低いAPI呼び出しに話を広げずに、etcdを理解するために必要な基本的な考え方に焦点を当てます。 etcdのすべてのAPIは、etcdサーバーが処理するリモートプロシージャコール(RPC)を分類したgRPCサービス で定義されています。 etcdのすべてのRPCの完全な一覧は、gRPC …
このドキュメントでは、etcd v3 APIの中心となる設計の概要を説明します。 etcd v3.5で非推奨となったetcd v2 APIとは異なることに注意してください。 すべてを網羅するものではなく、使用頻度の低いAPI呼び出しに話を広げずに、etcdを理解するために必要な基本的な考え方に焦点を当てます。 etcdのすべてのAPIは、etcdサーバーが処理するリモートプロシージャコール(RPC)を分類したgRPCサービス で定義されています。 etcdのすべてのRPCの完全な一覧は、gRPC …
-
etcd v3の認証設計
v2の認証システムを再利用しない理由 v3プロトコルは、v2のようなRESTfulインターフェースではなく、gRPCを通信に使用します。この新しいプロトコルによって、v2の設計を見直し、改善する機会が得られました。たとえば、v3の認証は接続単位で行い、v2の低速なリクエスト単位の認証から改善されています。また、次のセクションで説明するとおり、v2の認証の意味論は、一貫性を考えるうえで実際には扱いにくい面があります。v3には、v2の認証システムの欠点を解消する、明確に定義された認証機構の説明と実装 …
v2の認証システムを再利用しない理由 v3プロトコルは、v2のようなRESTfulインターフェースではなく、gRPCを通信に使用します。この新しいプロトコルによって、v2の設計を見直し、改善する機会が得られました。たとえば、v3の認証は接続単位で行い、v2の低速なリクエスト単位の認証から改善されています。また、次のセクションで説明するとおり、v2の認証の意味論は、一貫性を考えるうえで実際には扱いにくい面があります。v3には、v2の認証システムの欠点を解消する、明確に定義された認証機構の説明と実装 …
-
etcdの学習者メンバーの設計
etcdの学習者メンバー Gyuho Lee (github.com/gyuho, Amazon Web Services, Inc.), Joe Betz (github.com/jpbetz, Google Inc.) 背景 メンバーシップの再構成は、運用上の最も大きな課題の1つでした。よくある課題を確認します。 1. 新しいクラスターメンバーがリーダーに過負荷をかける 新たに参加したetcdメンバーはデータを持たない状態から開始するため、リーダーのログに追いつくまで、リーダーに多くの更新を …
etcdの学習者メンバー Gyuho Lee (github.com/gyuho, Amazon Web Services, Inc.), Joe Betz (github.com/jpbetz, Google Inc.) 背景 メンバーシップの再構成は、運用上の最も大きな課題の1つでした。よくある課題を確認します。 1. 新しいクラスターメンバーがリーダーに過負荷をかける 新たに参加したetcdメンバーはデータを持たない状態から開始するため、リーダーのログに追いつくまで、リーダーに多くの更新を …
-
etcdクライアントの設計
etcdクライアントの設計 Gyuho Lee (github.com/gyuho, Amazon Web Services, Inc.), Joe Betz (github.com/jpbetz, Google Inc.) はじめに etcdサーバーの堅牢性は、長年にわたる障害注入テストで実証されています。複雑なアプリケーションロジックの大半は、etcdサーバーとそのデータストアがすでに処理しています。たとえば、クラスターのメンバーシップはクライアントから透過的に扱われ、Raftレイヤーが提案 …
etcdクライアントの設計 Gyuho Lee (github.com/gyuho, Amazon Web Services, Inc.), Joe Betz (github.com/jpbetz, Google Inc.) はじめに etcdサーバーの堅牢性は、長年にわたる障害注入テストで実証されています。複雑なアプリケーションロジックの大半は、etcdサーバーとそのデータストアがすでに処理しています。たとえば、クラスターのメンバーシップはクライアントから透過的に扱われ、Raftレイヤーが提案 …
-
データモデル
etcdは、更新頻度の低いデータを確実に保存し、信頼できる監視クエリーを提供するように設計されています。etcdはキー・バリューペアの過去のバージョンを公開し、低コストのスナップショットと過去のイベントの監視(「タイムトラベルクエリー」)を実現します。永続的な多版型同時実行制御のデータモデルは、このような用途に適しています。 etcdは、多版型の永続的な キー・バリューストアにデータを保存します。永続的なキー・バリューストアは、値が新しいデータで置き換えられても、キー・バリューペアの以前のバージ …
etcdは、更新頻度の低いデータを確実に保存し、信頼できる監視クエリーを提供するように設計されています。etcdはキー・バリューペアの過去のバージョンを公開し、低コストのスナップショットと過去のイベントの監視(「タイムトラベルクエリー」)を実現します。永続的な多版型同時実行制御のデータモデルは、このような用途に適しています。 etcdは、多版型の永続的な キー・バリューストアにデータを保存します。永続的なキー・バリューストアは、値が新しいデータで置き換えられても、キー・バリューペアの以前のバージ …
-
2. HAProxyのアーキテクチャ
HAProxyは、マルチスレッドで動作するイベント駆動型のノンブロッキングデーモンです。複数の処理の切り替えをシステムのスケジューリングに任せず、イベントの多重化によってすべての処理をスケジュールします。通常は単一プロセスとして動作するため、システム上で “ps aux” を実行すると “haproxy” プロセスは一つだけ表示されます。ただし、ソフトリロード中に、新しいプロセスと並行して古いプロセスが残りの処理を終えている場合は例外です。このため、straceユーティリティで動作を簡単に追跡 …
HAProxyは、マルチスレッドで動作するイベント駆動型のノンブロッキングデーモンです。複数の処理の切り替えをシステムのスケジューリングに任せず、イベントの多重化によってすべての処理をスケジュールします。通常は単一プロセスとして動作するため、システム上で “ps aux” を実行すると “haproxy” プロセスは一つだけ表示されます。ただし、ソフトリロード中に、新しいプロセスと並行して古いプロセスが残りの処理を終えている場合は例外です。このため、straceユーティリティで動作を簡単に追跡 …
-
複数のデータセンターにまたがるHA
複数のデータセンターにデプロイしたPostgreSQLクラスターの高可用性は、レプリケーションに基づきます。レプリケーションには同期と非同期があります(レプリケーションモード を参照)。 どちらの場合も、次の概念を明確に理解することが重要です。 Postgresがプライマリーまたはスタンバイリーダーとして動作できるのは、リーダーキーを所有し、それを更新できる場合だけです。 etcd、ZooKeeper、Consulのノードは、3または5という奇数台で実行することを推奨します。 同期レプリケーシ …
複数のデータセンターにデプロイしたPostgreSQLクラスターの高可用性は、レプリケーションに基づきます。レプリケーションには同期と非同期があります(レプリケーションモード を参照)。 どちらの場合も、次の概念を明確に理解することが重要です。 Postgresがプライマリーまたはスタンバイリーダーとして動作できるのは、リーダーキーを所有し、それを更新できる場合だけです。 etcd、ZooKeeper、Consulのノードは、3または5という奇数台で実行することを推奨します。 同期レプリケーシ …
-
セキュリティに関する考慮事項
Patroniクラスターには、不正アクセスから保護すべき2つのインターフェースがあります。1つは分散型構成ストレージ(DCS)、もう1つはPatroni REST APIです。 DCSの保護 Patroniとpatronictl は、DCSに対してデータの格納および取得を行います。 DCSに機密情報が含まれていない場合でも、Patroni/PostgreSQLの構成の一部を変更できるため、最初に保護すべきはDCS自体です。 保護の詳細は使用するDCSの種類によって異なります。サポートされている …
Patroniクラスターには、不正アクセスから保護すべき2つのインターフェースがあります。1つは分散型構成ストレージ(DCS)、もう1つはPatroni REST APIです。 DCSの保護 Patroniとpatronictl は、DCSに対してデータの格納および取得を行います。 DCSに機密情報が含まれていない場合でも、Patroni/PostgreSQLの構成の一部を変更できるため、最初に保護すべきはDCS自体です。 保護の詳細は使用するDCSの種類によって異なります。サポートされている …
-
他のツールとの統合
Patroniは、スタック内の他のツールと統合できます。このセクションでは、Patroniが他のツールと統合する方法についてのアイデアを提供する例を示します。ただし、すべての例を網羅しているわけではありません。 Barman Patroniはpatroni_barmanというアプリケーションを提供しており、pg-backup-apiと通信するためのロジックを備えているため、リモートでBarman操作を実行できます。 このアプリケーションには現在、recoverとconfig-switchの2つ …
Patroniは、スタック内の他のツールと統合できます。このセクションでは、Patroniが他のツールと統合する方法についてのアイデアを提供する例を示します。ただし、すべての例を網羅しているわけではありません。 Barman Patroniはpatroni_barmanというアプリケーションを提供しており、pg-backup-apiと通信するためのロジックを備えているため、リモートでBarman操作を実行できます。 このアプリケーションには現在、recoverとconfig-switchの2つ …
-
Citusサポート
Patroniを使用すると、マルチノードCitus クラスターを極めて簡単にデプロイできます。 要点 必要なのは、次の簡単なルールに従うことだけです。 PostgreSQLのデータベース拡張Citus は、すべてのノードで利用可能になっている必要があります。絶対的な最小サポートバージョンはCitus 10.0ですが、ワーカーの透過的なスイッチオーバーと再起動の利点をすべて活用するには、Citus 11.2以降の使用を推奨します。 クラスター名(scope)は、すべてのCitusノードで同じにす …
Patroniを使用すると、マルチノードCitus クラスターを極めて簡単にデプロイできます。 要点 必要なのは、次の簡単なルールに従うことだけです。 PostgreSQLのデータベース拡張Citus は、すべてのノードで利用可能になっている必要があります。絶対的な最小サポートバージョンはCitus 10.0ですが、ワーカーの透過的なスイッチオーバーと再起動の利点をすべて活用するには、Citus 11.2以降の使用を推奨します。 クラスター名(scope)は、すべてのCitusノードで同じにす …
-
1. HTTPの基礎を振り返る
この文書は、上記バージョンに実装されている設定言語を扱います。ヒント、例、助言は提供しません。そのような文書については、リファレンスマニュアルまたはアーキテクチャマニュアルを参照してください。番号付きの章は、直接移動できるようにHAProxyのフラットなサイドバーに順番に並んでいます。 HAProxyをHTTPモードで実行すると、リクエストとレスポンスの両方を完全に解析してインデックスを作成するため、その内容に含まれるほぼあらゆる要素についてマッチ条件を組み立てられます。 ただし、HTTPのリ …
この文書は、上記バージョンに実装されている設定言語を扱います。ヒント、例、助言は提供しません。そのような文書については、リファレンスマニュアルまたはアーキテクチャマニュアルを参照してください。番号付きの章は、直接移動できるようにHAProxyのフラットなサイドバーに順番に並んでいます。 HAProxyをHTTPモードで実行すると、リクエストとレスポンスの両方を完全に解析してインデックスを作成するため、その内容に含まれるほぼあらゆる要素についてマッチ条件を組み立てられます。 ただし、HTTPのリ …
-
DCSフェイルセーフモード
問題 Patroniは、リーダー選出とネットワーク分断の検出を行うため、分散構成ストア(DCS)に大きく依存しています。つまり、DCS内のリーダーロックを更新できる場合に限り、ノードはPostgresをプライマリーとして実行できます。リーダーロックの更新に失敗すると、Postgresはただちに降格し、読み取り専用として起動します。この「問題」が発生する可能性は、使用するDCSによって異なります。たとえば、Patroni専用のetcdでは発生する可能性はほぼゼロですが、etcdを基盤に持つK8s …
問題 Patroniは、リーダー選出とネットワーク分断の検出を行うため、分散構成ストア(DCS)に大きく依存しています。つまり、DCS内のリーダーロックを更新できる場合に限り、ノードはPostgresをプライマリーとして実行できます。リーダーロックの更新に失敗すると、Postgresはただちに降格し、読み取り専用として起動します。この「問題」が発生する可能性は、使用するDCSによって異なります。たとえば、Patroni専用のetcdでは発生する可能性はほぼゼロですが、etcdを基盤に持つK8s …
-
補完製品と代替製品
HAProxyは、以下に挙げる製品の一部と非常にうまく連携します。そのため、HAProxyに直接関連しないものもここで紹介します。 4.1. Apache HTTPサーバー Apacheは、事実上の標準となっているHTTPサーバーです。非常に充実したモジュール構成のプロジェクトで、ファイル配信と動的コンテンツの両方をサポートします。一部のアプリケーションサーバーのフロントエンドとしても使用でき、リクエストのプロキシやレスポンスのキャッシュも行えます。いずれの用途でも、通常は前段にロードバランサ …
HAProxyは、以下に挙げる製品の一部と非常にうまく連携します。そのため、HAProxyに直接関連しないものもここで紹介します。 4.1. Apache HTTPサーバー Apacheは、事実上の標準となっているHTTPサーバーです。非常に充実したモジュール構成のプロジェクトで、ファイル配信と動的コンテンツの両方をサポートします。一部のアプリケーションサーバーのフロントエンドとしても使用でき、リクエストのプロキシやレスポンスのキャッシュも行えます。いずれの用途でも、通常は前段にロードバランサ …
-
ウォッチドッグのサポート
複数のPostgreSQLサーバーがプライマリーとして動作すると、タイムラインが分岐してトランザクションが失われる可能性があります。この状況はスプリットブレイン問題とも呼ばれます。スプリットブレインを避けるには、DCS内のリーダーキーが期限切れになった後にPostgreSQLがトランザクションのコミットを受け付けないよう、Patroniが保証する必要があります。通常、Patroniは何らかの理由でリーダーロックの更新に失敗すると、PostgreSQLを停止することでこれを実現しようとします。し …
複数のPostgreSQLサーバーがプライマリーとして動作すると、タイムラインが分岐してトランザクションが失われる可能性があります。この状況はスプリットブレイン問題とも呼ばれます。スプリットブレインを避けるには、DCS内のリーダーキーが期限切れになった後にPostgreSQLがトランザクションのコミットを受け付けないよう、Patroniが保証する必要があります。通常、Patroniは何らかの理由でリーダーロックの更新に失敗すると、PostgreSQLを停止することでこれを実現しようとします。し …
-
プロジェクトの指標
コードカバレッジ pgBackRestは、/src内のCのコアコードで、関数・分岐・行の完全なカバレッジを目指しています。 関数と行は、例外なく完全にカバーされています。 分岐カバレッジでは、マクロ内とassert()呼び出し内の分岐を除外します。マクロには独自の単体テストがあるため、使用されるすべての場所でテストする必要はありません。アサートは常に真となるはずの条件を検査するため、分岐カバレッジが完全になることは想定していません。 ディレクトリ 関数 分岐 行 build/common …
コードカバレッジ pgBackRestは、/src内のCのコアコードで、関数・分岐・行の完全なカバレッジを目指しています。 関数と行は、例外なく完全にカバーされています。 分岐カバレッジでは、マクロ内とassert()呼び出し内の分岐を除外します。マクロには独自の単体テストがあるため、使用されるすべての場所でテストする必要はありません。アサートは常に真となるはずの条件を検査するため、分岐カバレッジが完全になることは想定していません。 ディレクトリ 関数 分岐 行 build/common …
-
コミュニティ
チュートリアル Postgres Plus Standard Server 用に PgBouncer を設定する方法 PgBouncer の概念についての良い概要。 バウンシングの意味とは何か? プーリングモードの違いについて説明します。 サポート プロジェクトページ (GitHub) イシュートラッカー (GitHub) PgBouncer セクション (Stack Overflow) チャットルーム (Gitter) コミュニティディスカッション (GitHub)
チュートリアル Postgres Plus Standard Server 用に PgBouncer を設定する方法 PgBouncer の概念についての良い概要。 バウンシングの意味とは何か? プーリングモードの違いについて説明します。 サポート プロジェクトページ (GitHub) イシュートラッカー (GitHub) PgBouncer セクション (Stack Overflow) チャットルーム (Gitter) コミュニティディスカッション (GitHub)
-
レプリケーションモード
PatroniはPostgreSQLのストリーミングレプリケーションを使用します。ストリーミングレプリケーションの詳細はPostgresのドキュメント を参照してください。デフォルトでは、PatroniはPostgreSQLに非同期レプリケーションを設定します。レプリケーション方式の選択は業務上の要件によって異なります。非同期と同期の両方式、および他の高可用性ソリューションを検討し、最適なものを判断してください。 非同期モードの永続性 非同期モードでは、可用性を確保するために、コミット済みトラ …
PatroniはPostgreSQLのストリーミングレプリケーションを使用します。ストリーミングレプリケーションの詳細はPostgresのドキュメント を参照してください。デフォルトでは、PatroniはPostgreSQLに非同期レプリケーションを設定します。レプリケーション方式の選択は業務上の要件によって異なります。非同期と同期の両方式、および他の高可用性ソリューションを検討し、最適なものを判断してください。 非同期モードの永続性 非同期モードでは、可用性を確保するために、コミット済みトラ …
-
高度な機能
3.5.1. 高度な機能:管理 HAProxyは、通常の本番環境で極めて安定し、安全に管理できるよう設計されています。インストール作業を必要としない単一の実行可能ファイルとして提供されます。複数のバージョンを簡単に共存させられるため、すべてのインスタンスを一度に移行する代わりに、重要度の順に段階的にアップグレードできます(この方法を推奨します)。設定ファイルは容易にバージョン管理できます。設定のチェックはオフラインで行うため、失敗するかもしれないサービスを再起動する必要はありません。設定チェッ …
3.5.1. 高度な機能:管理 HAProxyは、通常の本番環境で極めて安定し、安全に管理できるよう設計されています。インストール作業を必要としない単一の実行可能ファイルとして提供されます。複数のバージョンを簡単に共存させられるため、すべてのインスタンスを一度に移行する代わりに、重要度の順に段階的にアップグレードできます(この方法を推奨します)。設定ファイルは容易にバージョン管理できます。設定のチェックはオフラインで行うため、失敗するかもしれないサービスを再起動する必要はありません。設定チェッ …
-
etcd 3.7 ドキュメント
etcdは、強い整合性を備えた分散キー・バリューストアです。これらのガイドでは、etcdのインストールと運用、APIを使用したアプリケーションの構築、設計の理解、性能の測定、3.7リリース系列でのクラスターのアップグレードとダウングレードについて説明します。 ローカルの単一メンバークラスターを作成する場合はクイックスタート 、サポートされるインストール方法についてはインストール 、本番環境へのデプロイについては運用ガイド から始めてください。
etcdは、強い整合性を備えた分散キー・バリューストアです。これらのガイドでは、etcdのインストールと運用、APIを使用したアプリケーションの構築、設計の理解、性能の測定、3.7リリース系列でのクラスターのアップグレードとダウングレードについて説明します。 ローカルの単一メンバークラスターを作成する場合はクイックスタート 、サポートされるインストール方法についてはインストール 、本番環境へのデプロイについては運用ガイド から始めてください。
-
標準機能
このセクションでは、HAProxyで非常によく使われるものの、ほかのロードバランサーに必ずしも備わっているとは限らない機能を紹介します。 3.4.1. 標準機能:情報の取得と変換 HAProxyは、多数の「サンプル取得関数」による情報の取得をサポートします。サンプルと呼ばれる個々の情報を取り出し、その場で利用する仕組みです。スティッキネス、条件の構築、ログ情報の生成、HTTPヘッダーへの情報追加などに使われます。 サンプルは、さまざまな情報源から取得できます。 定数:整数、文字列、IPアドレス …
このセクションでは、HAProxyで非常によく使われるものの、ほかのロードバランサーに必ずしも備わっているとは限らない機能を紹介します。 3.4.1. 標準機能:情報の取得と変換 HAProxyは、多数の「サンプル取得関数」による情報の取得をサポートします。サンプルと呼ばれる個々の情報を取り出し、その場で利用する仕組みです。スティッキネス、条件の構築、ログ情報の生成、HTTPヘッダーへの情報追加などに使われます。 サンプルは、さまざまな情報源から取得できます。 定数:整数、文字列、IPアドレス …
-
基本機能
このセクションでは、HAProxyが実装する機能をいくつか紹介します。現代のロードバランサーなら一般に備えていることが期待されるものもあれば、HAProxyのアーキテクチャーから直接得られる利点もあります。より高度な機能は、次のセクションで詳しく説明します。 3.3.1. 基本機能:プロキシ プロキシ処理とは、独立した二つの接続を介して、クライアントとサーバーの間でデータを転送することです。プロキシ処理と接続管理について、HAProxyは次の基本機能をサポートします。 サーバーに正常な接続を提 …
このセクションでは、HAProxyが実装する機能をいくつか紹介します。現代のロードバランサーなら一般に備えていることが期待されるものもあれば、HAProxyのアーキテクチャーから直接得られる利点もあります。より高度な機能は、次のセクションで詳しく説明します。 3.3.1. 基本機能:プロキシ プロキシ処理とは、独立した二つの接続を介して、クライアントとサーバーの間でデータを転送することです。プロキシ処理と接続管理について、HAProxyは次の基本機能をサポートします。 サーバーに正常な接続を提 …
-
pgBadger 13.2ドキュメント
pgBadgerは、Perlで書かれた高速な単体動作のPostgreSQLログアナライザーです。PostgreSQLまたはPgBouncerのログを読み取り、詳細なHTML、テキスト、バイナリ、JSON、または生のCSVを出力します。HTMLレポートは自己完結型で、操作や拡大縮小が可能です。閲覧に必要なのはウェブブラウザーだけです。 pgBadgerを選ぶ理由 pgBadgerは、大きなログの解析と運用での利用を想定して設計されています。 単一のPerlプログラムであり、Perlコア以外の必須モ …
pgBadgerは、Perlで書かれた高速な単体動作のPostgreSQLログアナライザーです。PostgreSQLまたはPgBouncerのログを読み取り、詳細なHTML、テキスト、バイナリ、JSON、または生のCSVを出力します。HTMLレポートは自己完結型で、操作や拡大縮小が可能です。閲覧に必要なのはウェブブラウザーだけです。 pgBadgerを選ぶ理由 pgBadgerは、大きなログの解析と運用での利用を想定して設計されています。 単一のPerlプログラムであり、Perlコア以外の必須モ …
-
HAProxyの役割と動作の仕組み
製品を指す場合は"HAProxy"、実行可能プログラム、ソフトウェアパッケージ、プロセスを指す場合は"haproxy"と表記します。ただし、実際にはどちらの表記も両方の意味でよく使われ、H-A-Proxyと発音します。ごく初期には、“haproxy"は"high availability proxy"の略で、名前も2語に分けて書かれていましたが、現在は単に"HAProxy"という名前です。 3.1. HAProxyが担う役割と担わない役割 HAProxyは、次の役割を担います。 TCPプロキシ …
製品を指す場合は"HAProxy"、実行可能プログラム、ソフトウェアパッケージ、プロセスを指す場合は"haproxy"と表記します。ただし、実際にはどちらの表記も両方の意味でよく使われ、H-A-Proxyと発音します。ごく初期には、“haproxy"は"high availability proxy"の略で、名前も2語に分けて書かれていましたが、現在は単に"HAProxy"という名前です。 3.1. HAProxyが担う役割と担わない役割 HAProxyは、次の役割を担います。 TCPプロキシ …
-
PgBouncer 1.26.0 ドキュメント
本マニュアルは、2026-09-23 にリリースされた PgBouncer 1.26.0 に基づいています。以前のバージョンからの変更点については、リリースノート を参照してください。 pgbouncer は PostgreSQL のコネクションプーラーです。任意の対象アプリケーションは、PostgreSQL サーバーと同じように pgbouncer に接続できます。pgbouncer は、実際のサーバーへの接続を作成するか、既存の接続を再利用します。 pgbouncer の目的は …
本マニュアルは、2026-09-23 にリリースされた PgBouncer 1.26.0 に基づいています。以前のバージョンからの変更点については、リリースノート を参照してください。 pgbouncer は PostgreSQL のコネクションプーラーです。任意の対象アプリケーションは、PostgreSQL サーバーと同じように pgbouncer に接続できます。pgbouncer は、実際のサーバーへの接続を作成するか、既存の接続を再利用します。 pgbouncer の目的は …
-
負荷分散の基礎
このドキュメントは、HAProxyを知らない方と、古いバージョンを知っていて改めて理解したい方のための入門です。主な目的は、HAProxyが探している製品かどうかを判断するために必要な情報を提供することです。上級ユーザーにも、知らなかった新機能によって、考えていた構想の実現につながる情報が見つかるかもしれません。サイジングに関する情報、製品のライフサイクルの説明、一部の機能が重なる製品との比較も提供します。 このドキュメントには設定方法の説明やヒントはありませんが、関連ドキュメントの場所を説明 …
このドキュメントは、HAProxyを知らない方と、古いバージョンを知っていて改めて理解したい方のための入門です。主な目的は、HAProxyが探している製品かどうかを判断するために必要な情報を提供することです。上級ユーザーにも、知らなかった新機能によって、考えていた構想の実現につながる情報が見つかるかもしれません。サイジングに関する情報、製品のライフサイクルの説明、一部の機能が重なる製品との比較も提供します。 このドキュメントには設定方法の説明やヒントはありませんが、関連ドキュメントの場所を説明 …
-
pgBackRest 2.59.3 ドキュメント
はじめに pgBackRestは、最大規模のデータベースやワークロードにもシームレスに対応できる、PostgreSQL向けの信頼性の高いバックアップとリストアのソリューションです。 このドキュメントミラーはpgBackRest v2.59.3 を対象としています。リリースノートはリリース ページにあります。 2.59.3では、脆弱な暗号化サブキーやソルトが生成される可能性がある問題が修正されました。アップグレードしても、スタンザの既存の脆弱なサブキーは置き換わりません。確認手順と対処方法は脆弱 …
はじめに pgBackRestは、最大規模のデータベースやワークロードにもシームレスに対応できる、PostgreSQL向けの信頼性の高いバックアップとリストアのソリューションです。 このドキュメントミラーはpgBackRest v2.59.3 を対象としています。リリースノートはリリース ページにあります。 2.59.3では、脆弱な暗号化サブキーやソルトが生成される可能性がある問題が修正されました。アップグレードしても、スタンザの既存の脆弱なサブキーは置き換わりません。確認手順と対処方法は脆弱 …
-
機能
接続をローテートする際の幾つかのレベルの厳しさ: セッションプーリング 最も丁寧な方法です。クライアントが接続すると、そのクライアントが接続を維持している間は、サーバー接続が常に割り当てられます。クライアントが切断すると、そのサーバー接続はプールに戻されます。このモードは、すべての PostgreSQL 機能をサポートしています。 トランザクションプーリング クライアントにサーバー接続が割り当てられるのは、トランザクション中に限られます。PgBouncer がトランザクションの終了を検知すると …
接続をローテートする際の幾つかのレベルの厳しさ: セッションプーリング 最も丁寧な方法です。クライアントが接続すると、そのクライアントが接続を維持している間は、サーバー接続が常に割り当てられます。クライアントが切断すると、そのサーバー接続はプールに戻されます。このモードは、すべての PostgreSQL 機能をサポートしています。 トランザクションプーリング クライアントにサーバー接続が割り当てられるのは、トランザクション中に限られます。PgBouncer がトランザクションの終了を検知すると …
-
はじめに
Patroniは、Pythonを使用した高可用性(HA)PostgreSQLソリューションのテンプレートです。PatroniはComposeのプロジェクトであるGovernor のフォークとして誕生し、多くの新機能を備えています。 背景については、次も参照してください。 KubernetesとPatroniによるPostgreSQLのHA 、KubeCon 2016でのJosh Berkusの講演(動画) 2016年二月のZalando Techブログ記事 開発状況 Patroniは活発に開発 …
Patroniは、Pythonを使用した高可用性(HA)PostgreSQLソリューションのテンプレートです。PatroniはComposeのプロジェクトであるGovernor のフォークとして誕生し、多くの新機能を備えています。 背景については、次も参照してください。 KubernetesとPatroniによるPostgreSQLのHA 、KubeCon 2016でのJosh Berkusの講演(動画) 2016年二月のZalando Techブログ記事 開発状況 Patroniは活発に開発 …
-
Patroni 4.1.5ドキュメント
警告 Python 3.11+を使用する、メモリー制限のあるシステムでのPatroniの実行 たとえばvm.overcommit_memory=2(PostgreSQLで推奨)を設定したような、メモリー制限が厳しいシステムでPatroniを実行し、Python 3.11以降を使用すると、予期しない動作が見られる場合があります。 Patroniは正常に見える PostgreSQLは動作を継続する PatroniのREST APIが応答しなくなる オペレーティングシステムは、Patroniが …
警告 Python 3.11+を使用する、メモリー制限のあるシステムでのPatroniの実行 たとえばvm.overcommit_memory=2(PostgreSQLで推奨)を設定したような、メモリー制限が厳しいシステムでPatroniを実行し、Python 3.11以降を使用すると、予期しない動作が見られる場合があります。 Patroniは正常に見える PostgreSQLは動作を継続する PatroniのREST APIが応答しなくなる オペレーティングシステムは、Patroniが …