最新のアプリケーションが成長し続けるにつれて、開発者はサービスの検出と高可用性の問題にますます注意を払う必要があります。サービス検出とは、分散システム内の他のサービスを検出して、その作業を調整する機能を指します。高可用性とは、障害が発生した場合でもシステムが正常に動作できる能力を指します。
Consul と Fabio は、開発者が上記の機能を実現するのに役立つ、広く使用されている 2 つのオープン ソース ツールです。どちらのツールも最新のマイクロサービス アーキテクチャを使用して、システム全体を簡単に管理および監視します。
Consul は、サービス検出、ヘルスチェック、分散キー/値ストレージおよびその他の機能を提供するオープンソースのサービス検出ツールです。 Consul は、DNS または HTTP API を提供することでサービス検出を提供し、開発者が統一インターフェイスを通じてサービスにアクセスできるようにします。
Fabio は、マイクロサービス アーキテクチャでトラフィックをルーティングするために使用される軽量の HTTP および TCP リバース プロキシです。 Fabio は、トラフィックを正常なサービス ノードに転送するために、Consul にサービスの正常性ステータス情報を自動的にクエリできます。
以下では、Consul と Fabio を使用して高可用性とサービス検出を実現する方法について詳しく説明します。
最新バージョンの Consul を Consul の公式 Web サイトからダウンロードし、サーバーに抽出する必要があります。オペレーティング システムに適したバージョンを [https://www.consul.io/downloads.html](https://www.consul.io/downloads.html) からダウンロードできます。
解凍後、実行可能ファイルを /usr/bin
ディレクトリに移動します。
sudo mv ./consul /usr/bin
システムの起動時に Consul を自動的に実行するには、次のものが必要です。 systemd サービスを作成します。 /etc/systemd/system
ディレクトリに consul.service
という名前のファイルを作成し、次の内容をそこにコピーします。
[Unit] Description=Consul Service Discovery [Service] ExecStart=/usr/bin/consul agent -server -bootstrap-expect=3 -data-dir=/var/consul -config-dir=/etc/consul.d -bind="0.0.0.0" -client="0.0.0.0" Restart=always User=root [Install] WantedBy=multi-user.target
上記の構成 ファイル内、Consul に起動時にサーバーとして実行するように依頼し、少なくとも 3 つのノードを想定します。さらに、Consul の作業ディレクトリと構成ディレクトリも指定し、それらをすべてのローカル IP アドレスにバインドします。
これで、Consul サービスを開始してアクティブ化できます:
sudo systemctl start consul sudo systemctl enable consul
この時点で、Consul のインストールと構成は完了しました。
Fabio の最新バージョンを Fabio の公式 Web サイトからダウンロードし、サーバーに抽出する必要もあります。 [https://fabiolb.net](https://fabiolb.net) からオペレーティング システムのバージョンをダウンロードできます。
解凍後、実行可能ファイルを /usr/bin
ディレクトリに移動します。
sudo mv ./fabio /usr/bin
次に、Fabio を管理する systemd サービスを作成する必要があります。 /etc/systemd/system
ディレクトリに fabio.service
という名前のファイルを作成し、次の内容をそこにコピーします。 上記の設定の
[Unit] Description=Fabio Service Proxy [Service] ExecStart=/usr/bin/fabio Restart=always User=root [Install] WantedBy=multi-user.target
ファイル内では、Fabio をサービスとして実行し、サービス ノードを管理するための関連オプションを指定する必要があります。 Fabio は自動的に Consul にクエリを実行してサービスを見つけ、トラフィックを正常なサービス ノードに転送します。
これで、Fabio サービスを開始してアクティブ化できます:
sudo systemctl start fabio sudo systemctl enable fabio
ヘルス チェック機能を使用する場合は、サービス ヘルス チェックが Consul で正しく構成されていることを確認してください。サービスに障害が発生した場合、Consul はサービスの健全性ステータスを Fabio に報告し、トラフィックが健全なサービス ノードに転送できるようにします。
Consul と Fabio を使用すると、開発者はサービス検出と高可用性を簡単に実装できます。 Consul は、サービス検出のための強力な分散キーバリュー ストア、DNS、および HTTP API を提供します。一方、Fabio は、マイクロサービス アーキテクチャでトラフィックのルーティングを担当する軽量のリバース プロキシを提供します。
複雑な分散システムを開発している場合、Consul と Fabio の 2 つは不可欠なツールです。これらにより、アプリケーションの拡張と管理が容易になり、メンテナンスの負担が軽減されます。
以上がPHP 開発: Consul と Fabio を使用して高可用性とサービス検出を実現するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。