オーケストレーターのエージェント

Orchestrator は、オープン ソースの MySQL 高可用性 (高可用性) ソリューションです。MySQL フェイルオーバー、マスター/スレーブ切り替え、データ センター移行などの操作を自動的に実行できます。また、運用および保守担当者が容易に実行できるようにするための Web インターフェイスと API インターフェイスも提供します。 MySQL クラスターの操作、管理と監視。

Orchestrator の共通機能の中でエージェントについて言及されることはほとんどありませんが、実は Orchestrator にはエージェント関連の機能もあり、独立したプロジェクトもありますorchestrator-agent

Orchestrator のエージェントには主に次の機能があります。

  • Orchestrator サーバーとの接続を確立し、サーバーから指示を受信して​​実行します。
  • インスタンス情報の取得、MySQL インスタンスの起動と停止など、HTTP API を介した Orchestrator サーバーとの対話をサポートします。

Orchestrator では、config.Config.ServeAgentsHttp構成項目 (主に http サーバー) を通じてエージェント関連の機能を有効にするかどうかを構成します。この http サーバーはデフォルトでポート 3001 をリッスンし、HTTP API エージェントを通じて Orchestrator サーバーに情報 (MySQL マシンのホスト名など) をアクティブにレポートできます。

次に、この記事ではオーケストレーター・エージェントを中心に紹介します。

オーケストレーターエージェント

Orchestrator-Agent は Orchestrator のサブプロジェクトです。

Orchestrator-agent は MySQL サーバー上で動作するプロセスであり、Orchestrator サーバーとの通信を通じて MySQL サーバーのステータス情報を Orchestrator サーバーに報告することで、MySQL クラスターの管理と監視の自動化を実現します。同時に、エージェントは開始、停止などの一部の MySQL 操作を実行したり、カスタマイズされたスクリプトを実行したりすることもできます。

オーケストレーターとエージェントは HTTP プロトコルを通じて対話します。エージェントが起動すると、エージェント自体が Orchestrator サーバーに登録され、MySQL インスタンスのステータス情報が Orchestrator に定期的に送信されます。これらの操作を実行するとき、Orchestrator はエージェントにコマンドを送信し、エージェントはコマンドに従って対応する操作を実行し、実行結果を Orchestrator に返します。

オーケストレーター エージェント側の http サーバーは、デフォルトでポート 3002 をリッスンします。
主な http インターフェイスには次のものがあります。

    m.Get("/api/hostname", this.Hostname)
    m.Get("/api/lvs", this.ListLogicalVolumes)
    m.Get("/api/lvs/:pattern", this.ListLogicalVolumes)
    m.Get("/api/lvs-snapshots", this.ListSnapshotsLogicalVolumes)
    m.Get("/api/lv", this.LogicalVolume)
    m.Get("/api/lv/:lv", this.LogicalVolume)
    m.Get("/api/mount", this.GetMount)
    m.Get("/api/mountlv", this.MountLV)
    m.Get("/api/removelv", this.RemoveLV)
    m.Get("/api/umount", this.Unmount)
    m.Get("/api/du", this.DiskUsage)
    m.Get("/api/mysql-du", this.MySQLDiskUsage)
    m.Get("/api/create-snapshot", this.CreateSnapshot)
    m.Get("/api/available-snapshots-local", this.AvailableLocalSnapshots)
    m.Get("/api/available-snapshots", this.AvailableSnapshots)
    m.Get("/api/mysql-error-log-tail", this.MySQLErrorLogTail)
    m.Get("/api/mysql-port", this.MySQLPort)
    m.Get("/api/mysql-status", this.MySQLRunning)
    m.Get("/api/mysql-stop", this.MySQLStop)
    m.Get("/api/mysql-start", this.MySQLStart)
    m.Get("/api/delete-mysql-datadir", this.DeleteMySQLDataDir)
    m.Get("/api/mysql-datadir-available-space", this.GetMySQLDataDirAvailableDiskSpace)
    m.Get("/api/post-copy", this.PostCopy)
    m.Get("/api/receive-mysql-seed-data/:seedId", this.ReceiveMySQLSeedData)
    m.Get("/api/send-mysql-seed-data/:targetHost/:seedId", this.SendMySQLSeedData)
    m.Get("/api/abort-seed/:seedId", this.AbortSeed)
    m.Get("/api/seed-command-completed/:seedId", this.SeedCommandCompleted)
    m.Get("/api/seed-command-succeeded/:seedId", this.SeedCommandSucceeded)
    m.Get("/api/mysql-relay-log-index-file", this.RelayLogIndexFile)
    m.Get("/api/mysql-relay-log-files", this.RelayLogFiles)
    m.Get("/api/mysql-relay-log-end-coordinates", this.RelayLogEndCoordinates)
    m.Get("/api/mysql-binlog-contents", this.BinlogContents)
    m.Get("/api/mysql-binlog-binary-contents", this.BinlogBinaryContents)
    m.Get("/api/mysql-relaylog-contents-tail/:relaylog/:start", this.RelaylogContentsTail)
    m.Post("/api/apply-relaylog-contents", this.ApplyRelaylogContents)
    m.Get("/api/custom-commands/:cmd", this.RunCommand)
    m.Get(config.Config.StatusEndpoint, this.Status)

上記の http インターフェイスからわかるように、オーケストレーター エージェント機能には主に、
MySQL マシンのホスト名の取得、LVS 関連の操作、マウント操作、mysql の開始、停止などの操作、binlog、リレー ログ関連の操作、およびその他のカスタマイズされた操作が含まれます。

以上、この記事では Orchestrator のエージェントの基本的な機能を紹介しました。

参考

オーケストレーター

オーケストレーターエージェント

おすすめ

転載: blog.csdn.net/lanyang123456/article/details/131352269