harpctl Command-line Tool¶
harpctlは、コンセンサスレイヤーのコンテンツを直接操作して、目的のクラスタージオメトリに合わせるためのコマンドラインツール。たとえば、ノードのステータスを調べたり、ノードをLead
Masterに「プロモート」したり、クラスター管理を無効/有効にしたり、クラスター設定をブートストラップしたりすることができます。
概要¶
$ harpctl --help
Usage:
harpctl [command]
Available Commands:
apply Command to set up a cluster
completion generate the autocompletion script for the specified shell
fence Fence specified node
get Command to get resources
help Help about any command
manage Manage Cluster
promote Promotes the sepcified node to be primary,
set Command to set resources.
unfence unfence specified node
unmanage Unmanage Cluster
version Command to get version information
Flags:
-c, --cluster string name of cluster.
-f, --config-file string config file (default is /etc/harp/config.yml)
--dcs stringArray Address of dcs endpoints. ie: 127.0.0.1:2379
-h, --help help for harpctl
-o, --output string json, yaml.
-t, --toggle Help message for toggle
Use "harpctl [command] --help" for more information about a command.
この基本的な概要に加えて、使用可能な各コマンドには、独自のシリーズの使用可能なサブコマンドとフラグがあります。
設定¶
harpctlが動作するには、コンセンサスレイヤーと対話する必要があることに注意することが重要です。つまり、正常に実行するには、config.ymlに特定の最小量の設定を定義する必要があります。これには以下が含まれます:
dcs.driverdcs.endpointscluster.name
etcdを使用した例:
cluster:
name: mycluster
dcs:
driver: etcd
endpoints:
- host1:2379
- host2:2379
- host3:2379
詳細については、 設定 を参照してください。
実行¶
次のようにharpctlを実行します。
harpctl command [flags]
各コマンドには、独自のシリーズのサブコマンドとフラグがあります。次の方法でコマンドを実行すると、これらのヘルプが利用できます。
harpctl command --help
harpctl apply¶
applyコマンドを使用して、目的のクラスターのさまざまな属性を定義するファイルを使用してHARPクラスターを「ブートストラップ」する必要があります。
applyコマンドは次のように実行する必要があります。
harpctl apply <filename>
これにより、基本的にすべての初期クラスターメタデータ、デフォルトまたはカスタム管理設定などが作成されます。これは、DCSがクラスターを管理するための究極の真実のソースとして使用されるため、ここで行われます。これにより、これらの設定を動的に変更できるようになります。
これは、クラスター全体をブートストラップするために1回、オブジェクトのタイプごとに1回、または単純化のためにノードごとに1回行うことができます。
これは、単一ノードのブートストラップファイルの例です。
cluster:
name: mycluster
nodes:
- name: firstnode
dsn: host=host1 dbname=bdrdb user=harp_user
location: dc1
priority: 100
db_data_dir: /db/pgdata
ここで見られるように、複数の環境が同じ環境で動作している場合、すべての変更が正しいHARPクラスタをターゲットと保証に、常にクラスタ名前のプリアンブルを含めることをお勧めします。
applyがエラーなしで完了すると、ノードはクラスターの残りの部分と統合されます。
注釈
定義されたすべてのセクションが同時に適用されるため、このコマンドを使用してクラスター全体を一度にブートストラップすることもできます。ただし、初期定義時にクラスターの各部分を検証するのが難しくなるため、テスト以外の用途にはこの使用をお勧めしません。
harpctl fence¶
ローカルまたは指定されたノードを fenced としてマークします。このステータスのノードは、本質的にクラスターから完全に除外されます。 HARPプロキシはトラフィックを送信せず、その代表的なHARPマネージャーはリードマスターリースを要求せず、さらなる手順も実行されます。実行中の場合、 HARP Managerはノード上のPostgresも停止します。
fenceコマンドは次のように実行する必要があります。
harpctl fence (<node-name>)
ノード名自分自身はオプショナル。省略すると、harpctlはローカルに構成されたノードの名前を使用します。
harpctl get¶
クラスターのさまざまな要素のコンセンサスレイヤーに格納されている情報を取得します。これには、ノード、場所、クラスター自分自身などが含まれます。完全なリストには以下が含まれます。
cluster-クラスターの状態を返しますleader-現在または指定された位置リーダーを返しますlocation-現在または指定された位置情報を返すlocations-すべての場所のリストを返しますnode-指定されたPostgresノードを返しますnodes-すべてのPostgresノードのリストを返しますproxy-現在または指定されたプロキシ情報を返しますproxies-すべてのプロキシノードのリストを返します
harpctl get cluster¶
現在のクラスターのコンセンサスレイヤーに保存されている情報を取得します。
> harpctl get cluster
Name Enabled
---- -------
mycluster true
harpctl get leader¶
指定した場所のDCSに保存されている現在のリードマスターのノード情報を取得します。ロケーションが渡されない場合、harpctlは、実行された現在のノードのロケーションに基づいて、それを導き出そうとします。
例:
> harpctl get leader dc1
Cluster Name Ready Role Type Location Fenced Lock Duration
------- ---- ----- ---- ---- -------- ------ -------------
mycluster mynode true primary bdr dc1 false 30
harpctl get location¶
指定された場所の場所情報を取得します。ロケーションが渡されない場合、harpctlは、実行された現在のノードのロケーションに基づいて、それを導き出そうとします。
例:
> harpctl get location dc1
Cluster Location Leader Previous Leader Target Leader Lease Renewals
------- -------- ------ --------------- ------------- --------------
mycluster dc1 mynode mynode <nil>
harpctl get locations¶
DCSに現在存在するすべての場所の情報を取得します。
例:
> harpctl get locations
Cluster Location Leader Previous Leader Target Leader Lease Renewals
------- -------- ------ --------------- ------------- --------------
mycluster dc1 mynode mynode <nil>
mycluster dc2 thatnode thatnode <nil>
harpctl get node¶
指定されたノードのDCSに格納されているノード情報を取得します。
例:
> harpctl get node mynode
Cluster Name Location Ready Fenced Allow Routing Routing Status Role Type Lock Duration
------- ---- -------- ----- ------ ------------- -------------- ---- ---- -------------
mycluster mynode dc1 true false true ok primary bdr 30
harpctl get nodes¶
クラスター内のすべてのノードのDCSに格納されているノード情報を取得します。
例:
> harpctl get nodes
Cluster Name Location Ready Fenced Allow Routing Routing Status Role Type Lock Duration
------- ---- -------- ----- ------ ------------- -------------- ---- ---- -------------
myclusters bdra1 dc1 true false true ok primary bdr 30
myclusters bdra2 dc1 true false false N/A primary bdr 30
myclusters bdra3 dc1 true false false N/A primary bdr 30
harpctl get proxy¶
指定したプロキシのDCSに保存されているプロキシ情報を取得します。このクラスターのプロキシのデフォルトを表示するには、globalを指定します。
例:
> harpctl get proxy proxy1
Cluster Name Pool Mode Auth Type Max Client Conn Default Pool Size
------- ---- --------- --------- --------------- -----------------
mycluster proxy1 session md5 1000 20
harpctl get proxies¶
クラスター内のすべてのプロキシのDCSに格納されているプロキシ情報を取得します。さらに、デフォルトのプロキシ設定のglobal擬似プロキシをリストします。
例:
> harpctl get proxies
Cluster Name Pool Mode Auth Type Max Client Conn Default Pool Size
------- ---- --------- --------- --------------- -----------------
mycluster global session md5 500 25
mycluster proxy1 session md5 1000 20
mycluster proxy2 session md5 1500 30
harpctl manage¶
クラスターが管理状態にないイベント、 Postgresのモニタリングとコンセンサスレイヤーの更新を再開するようにすべてのHARP Managerサービスに指示します。これは、 HARPソフトウェアの更新またはクラスタ全体に影響を与える可能性のあるその他の重要な変更に続いて、メンテナンスが完了した後に行う必要があります。
manageコマンドは次のように実行する必要があります。
harpctl manage cluster
注釈
現在、`cluster`レベルでのみクラスター管理を有効または無効にできます。それ以降のバージョンでは、個々のノードまたはプロキシに対してこれをmakeことも可能になります。
harpctl promote¶
リーダーシップ要件を満たす次の利用可能なノードを現在の場所のリードマスターに昇格させます。これは要求されたイベントであるため、次の場合にスムーズなハンドオーバーを呼び出します。
1.次の場合、既存のリードマスターはリードマスターリースをリリースします。-CAMOが有効になっている場合、昇格されたノードは最新であり、
キューの準備ができている必要がより小さい。
-古いリードマスターとプロモートノード間のレプリケーションラグはnode.maximum_lagより小さい。2.プロモートノードは、リードマスターリースを取得する唯一の有効な候補であり、現在のホルダーによってリリースされるとすぐに実行されます。他のすべてのノードは、未設定のリードマスターリースを無視します。
-CAMOが有効になっている場合、昇格したノードは、リードマスターリースを保持していても、CAMOキューが完全に適用されるまで一時的にクライアントトラフィックを無効にします。
3. pgbouncerを使用している場合、
HARPプロキシはPAUSE接続を使用して、進行中のトランザクションを完了します。リードマスターリースが昇格されたノードによって要求されると、新しい接続ターゲット用にPgBouncerを再構成し、データベーストラフィックを再開します。
HARPプロキシが組み込みプロキシを使用している場合、既存の接続を終了し、クライアントから新しい接続が要求されると、リードマスターへの新しい接続を作成します。
promoteコマンドは次のように実行する必要があります。
harpctl promote (<node-name>)
--forceオプションは、リードマスタになるための基準を満たさない場合でも、ノードをリードマスターに強制的に設定するために提供できます。これにより、CAMOステータスまたはレプリケーションラグの検証が回避され、昇格したノードへの即時移行が発生します。これは、昇格のために正確なノードを指定する唯一の方法です。
これを成功させるには、ノードがオンラインで動作している必要があることに注意してください。このオプションは注意して使用する必要があります。
harpctl set¶
クラスター内の特定の属性を指定された値に設定します。これは、applyを使用するのではなく、特定のノード、プロキシ、場所、またはクラスター自分自身の構成設定を調整するために使用されます。これは、次のオブジェクトタイプに使用できます。
cluster-クラスター関連の属性を設定します。location-特定のロケーション属性を設定します。node-特定のノード属性を設定します。proxy-特定のプロキシ属性を設定します。
harpctl set cluster¶
クラスター関連の属性のみを設定します。現時点ではこれらのうちの1つしかありませんが、 HARPの将来のバージョンではさらに追加される可能性があります。
例:
harpctl set cluster event_sync_interval=200
harpctl set node¶
名前付けノードのノード関連属性を設定します。 設定 文書の「Node Directives」セクションに記載されているオプションはすべてここで有効です。
例:
harpctl set node mynode priority=500
harpctl set proxy¶
- 名前付けプロキシのプロキシ関連属性を設定します。
設定 文書の「Proxy
Directives」セクションに記載されているオプションはすべてここで有効です。この方法で設定されたプロパティでは、新しい値を有効にする前にプロキシをリスタートする必要があります。
例:
harpctl set proxy proxy1 max_client_conn=750
クラスタ全体のプロキシのデフォルトにはglobalを使用します。
harpctl set proxy global default_pool_size=10
harpctl unfence¶
ローカルまたは指定されたノードから fenced 属性を削除します。これにより、以前に適用されたすべてのクラスター除外がノードから削除され、再びトラフィックを受信したり、リードマスターリースを保持したりできるようになります。 Postgresも実行されていない場合は起動されます。
unfenceコマンドは次のように実行する必要があります。
harpctl unfence (<node-name>)
ノード名自分自身はオプショナル。省略すると、harpctlはローカルに構成されたノードの名前を使用します。
harpctl unmanage¶
クラスター内のすべてのHARP Managerサービスに実行を継続するように指示しますが、 Postgresをアクティブにモニタことはなく、コンセンサスレイヤーの内容を変更することもできません。これは、ノードの停止などの通常のフェイルオーバーイベントが、リーダーシップの移行をもたらさないことを意味します。これは、システムまたはHARPのメンテナンスを目的としていますHARPソフトウェアに変更を加えるか、クラスターにその他の重要な変更を加える前に行う必要があります。
unmanageコマンドは次のように実行する必要があります。
harpctl unmanage cluster
注釈
現在、`cluster`レベルでのみクラスター管理を有効または無効にできます。それ以降のバージョンでは、個々のノードまたはプロキシに対してこれをmakeことも可能になります。