テックブログ

Linuxサーバ上でのKeepalivedを活用した高可用性サービスの展開

こんにちは。技術部のPです。

高可用性(High Availability, HA)とは、サービスやシステムが常に稼働し、ユーザに対して中断なくサービスを提供できることを指します。今日のIT業界では、複数のプロバイダが同様のサービスを提供しているため、競争力を維持するためには、サービスの質だけでなく、ダウンタイムを最小限に抑え、常に利用可能な状態を保つことが重要です。

本記事では、Linuxサーバ上での高可用性を実現するための「Keepalived」の導入と設定について紹介します。

概要

  • Keepalivedとは
  • Keepalivedの導入と設定
  • 動作確認

Keepalivedとは?

Keepalivedは、Linuxシステム向けに開発されたソフトウェアで、ロードバランシング(Load Balancing)と高可用性(High Availability)を提供するために使用されます。初版は2000年12月にリリースされ、現在も進化を続けています。

Keepalivedは、複数のサーバに対して仮想IPアドレス(VIP)を提供し、主サーバがダウンした場合に自動でバックアップサーバに切り替えることができます。

公式サイト:Keepalived

下記のシステム構成をご参考ください。

本構成では、db01db02 の2つのDBサーバが構成されています。初期設定では db01 がマスターとしてVirtual IP (VIP)を保持し、必要に応じてバックアップサーバ db02 にフェイルオーバーします。

  • db01 (MASTER)
    • Host name: db01
    • Private IP: 192.168.0.31
    • Virtual IP: 192.168.0.40
    • OS: AlmaLinux
    • Keepalived: 使用
  • db02 (BACKUP)
    • Host name: db02
    • Private IP: 192.168.0.32
    • OS: AlmaLinux
    • Keepalived: 使用
  • web01 (Web server)
    • Host name: web01
    • Private IP: 192.168.0.1
    • OS: AlmaLinux
    • Apache: 使用

Keepalivedの機能や動作を理解しやすくするために、次は導入設定の部分を進めていきます。

Keepalivedの導入と設定

インストール手順

以下のコマンドでKeepalivedをインストールします。

# dnf install keepalived
# rpm -qa | grep keepalived

設定ファイルの編集

バックアップ用に元の設定ファイルをコピーし、必要な設定を行います。

db01

db02

解説

上記の設定では、最初にDBサーバ db01MASTER として起動され、インターフェース eth0 に割り当てられた Virtual IP (VIP) である 192.168.0.40 を保持します。また、db01 上の優先度(priority)が102になります。DBサーバ db02 が後で起動されるので、BACKUPとなり、優先度も102になります。
track_script を使用して、MySQLサービスの状態を監視するヘルスチェックスクリプトを実行します。
何らかの理由でMySQLが動作しなくなった場合、Keepalived は db01 上の優先度を 102-2=100 に減算します。この時点で、db01の優先度は100となり、最初にdb02 の優先度 102 より低くなるため、Keepalivedは db02 の状態を BACKUP から MASTER に切り替え、db02 がVirtual IPを保持するようになります。

MySQLのヘルスチェックスクリプト

MySQLの状態を監視するためのスクリプトを作成します。

ログ設定とKeepalivedの起動

  • ログの設定:
    keepalivedログを出力するために、/etc/rsyslog.d/keepalived.conf ファイルに以下を追加します。
  • システムログの再起動:
  • Keepalivedの設定反映:

動作確認

VIPの確認

 ■db01

ip a コマンドで仮想IPアドレスが正しく割り当てられているか確認します。

db02

VIPでウェブサーバから接続する確認

web01」ウエブサーバから VIP:192.168.0.40 経由で マスター:「db01」 に接続できることを確認できました。

IPが切り替わる動作の確認

・db01停止

・ログを確認

ログを見ると、先ずはdb01の優先度が102から100となり、最初にdb02(192.168.0.32)の優先度が102なので、MASTERになります。その後、db01がBACKUPになってVIPもdb01から削除され、db02に切り替わっています。

・db02での確認

今、MASTERとしてdb02がVIP(192.168.0.40)持っています。

・db01が復旧の場合

db01が復旧の場合、優先度が100から102になります。

まとめ

Keepalived を使用することで、Linux環境において高可用性とフェイルオーバーの仕組みを簡単に構築できます。これにより、サービスの中断を最小限に抑え、ユーザ体験を向上させることができます。

この記事をシェアする

  • facebook
  • twitter
  • hatena
  • line
URLとタイトルをコピーする

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください