Linux で高可用性ロード バランサー監視を構成する方法
最新のインターネット アプリケーション アーキテクチャでは、ロード バランサーは重要なコンポーネントであり、アクセス要求を複数のサーバーに分散して全体的なパフォーマンスと使いやすさを向上させることができます。ただし、ロード バランサー自体がシステム内の単一障害点になる可能性があります。この問題を解決するには、高可用性テクノロジーを使用してロード バランサーの可用性を確保します。この記事では、Linux 上で高可用性ロード バランサーの監視を構成する方法を紹介し、関連するコード例を示します。
まず、適切なロード バランサー ソフトウェアを選択する必要があります。 Linux で一般的に使用されるロード バランサー ソフトウェアには、Nginx、HAProxy、Keepalived などがあります。この記事では、例として Keepalived を使用して構成します。
次のコマンドを使用して Linux に Keepalived をインストールします:
$ sudo apt-get install keepalived
インストールが完了したら、高可用性を有効にするために Keepalived を構成する必要があります。 /etc/keepalived/ ディレクトリに keepalived.conf という名前のファイルを作成し、次の設定内容をファイルに追加します。
# 只在主节点上运行 vrrp_script check_http { script "/usr/local/bin/check_http.sh" interval 2 } vrrp_instance VI_1 { state MASTER virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass example } virtual_ipaddress { 10.0.0.1/24 } track_script { check_http } }
このうち、check_http.sh は、バックエンド サーバーの可用性を確認するためのカスタマイズされたスクリプトです。ロードバランサーが存在する場所。実際のニーズに応じてスクリプトを作成できます。
Keepalived の構成が完了したら、他のツールを使用してロード バランサーの実行ステータスを監視できます。この記事では、単純な Python スクリプトを使用してロード バランサーの可用性を監視します。
まず、Python のリクエスト モジュールをインストールする必要があります:
$ sudo pip install requests
次に、check_lb.py という名前の Python スクリプトを作成し、次のコードをファイルに追加します:
import requests def check_lb(): try: response = requests.get('http://10.0.0.1') if response.status_code == 200: print('负载均衡器正常运行') else: print('负载均衡器故障') except requests.exceptions.RequestException as e: print('负载均衡器故障') if __name__ == '__main__': check_lb()
In上記のコードでは、リクエスト ライブラリを使用して HTTP リクエストを送信し、返されたステータス コードを確認します。ステータス コードが 200 の場合はロード バランサが正常に動作していることを意味し、それ以外の場合はロード バランサに障害があることを意味します。
監視スクリプトを定期的に実行するには、cron タスクを使用してスクリプトを定期的に実行します。ターミナルを開き、次のコマンドを入力します。
$ crontab -e
開いた cron タスク エディタで、次の行を追加します。
*/5 * * * * /usr/bin/python /path/to/check_lb.py
上記の設定では、監視スクリプトが 5 分ごとに実行されます。この時間間隔は、実際のニーズに応じて変更できます。
監視スクリプトでは、check_lb() 関数を変更し、アラーム ロジックを追加できます。たとえば、ロード バランサーに障害が発生した場合に電子メールを送信したり、モバイル アプリケーションにメッセージを送信したりします。
これは簡単な例であり、電子メールを送信するためのコード スニペットです:
import smtplib from email.mime.text import MIMEText def send_email(): sender = 'your_email@example.com' receiver = 'recipient@example.com' subject = '负载均衡器故障' message = '负载均衡器无法访问' msg = MIMEText(message) msg['Subject'] = subject msg['From'] = sender msg['To'] = receiver try: smtp_obj = smtplib.SMTP('localhost') smtp_obj.sendmail(sender, receiver, msg.as_string()) smtp_obj.quit() print('邮件已发送') except smtplib.SMTPException: print('邮件发送失败')
上記のコードでは、smtplib ライブラリを使用して電子メールを送信しています。まず、送信者と受信者の電子メール アドレスを設定し、次に MIMEText オブジェクトを作成し、送信メッセージと件名をオブジェクトに追加し、SMTP サーバーを使用して電子メールを送信する必要があります。
check_lb() 関数では、ロード バランサに障害が発生した場合に、send_email() 関数を呼び出してアラーム電子メールを送信できます。
概要:
この記事では、Linux 上で高可用性ロード バランサー監視を構成する方法を紹介しました。 Keepalived を使用してロード バランサーの高可用性を提供し、Python スクリプトと cron タスクを使用してロード バランサーの実行ステータスを定期的に監視します。さらに、ロード バランサーに障害が発生した場合に電子メール アラートを送信する方法の簡単な例も示します。これらの手順を実行すると、ロード バランサーの監視およびアラート システムを簡単にセットアップし、アプリケーションの高可用性を確保できます。
以上がLinux で高可用性ロード バランサー監視を構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。