yasuKeepalivedを使ってサーバーを冗長化ラズパイでサーバーを構築していると、いつダウンするか分かりません。そんな時でも、サーバーを冗長化することで稼働し続けるシステムにできないかと考え、「Keepalived」を使った冗長化システムを構築したので紹介します。今までのシステム構成は以下です。この構成だと、稼働中のMasterがダウンすると転送先が途絶えてしまうので、手動でスレーブ側に切り替えるまでサービスが停止してしまいます。障害はある日突然おきてしまうので、すぐに切り替えることができない場合も想定されます。まずいです・・・・そこで、それらの問題を解決できる、Keepalivedを使った冗長化システムを考えてみました。ポイントは、ルータの転送先アドレスは固定にしたいので、VIP(仮想IP)用います。Protocol)を実現できるので、障害発生時に自動でSlave側に切り替えてくれるはずです。実際にシステムを組んでみて検証してみます。Keepalivedをインストールします。keepalived今回のシステムでは、VIP(仮想IP)を使うので、システムのデバイスに割り当てられていないIPアドレスをバインドしてやる必要があります。/proc/sys/net/ipv4/ip_nonlocal_bind上記コマンドで一時的に割り付けられますが、再起動すると設定がきえてしまうので、再起動後も反映されるためには以下の値を/etc/sysctl.confに追記して設定を反映します。-p今回のシステムに合わせて、keepalivedの設定を作成します。「/etc/keepalived/keepalived.conf」という新しいファイルを作成して編集します。VRRPの構成と仕組みMaster側の設定ファイルです。設定で注意するポイントは以下です。ipaddressを同じサブネットで設定master側の設定ファイル「keepalived.conf」の記載例です。}}slave側の設定ファイル「keepalived.conf」の記載例です。設定値をmaster側より低い値に設定しています。}}以上で、設定は完了です。設定を反映させるためにkeepalivedを再起動します。restartkeepalivedが正しく動作しているかを検証します。master側の状態を確認します。master側もslave側も稼働している場合は、priorityの設定値が高いmaster側にVIPが割り付けられます。1000・・・(省略)続いて、slave側の状態を確認します。master側もslave側も稼働している場合は、priorityの設定値が低いslave側にはVIPが割り付けられません。VIPの割り付けがないですね。1000・・・(省略)では、master側のEhternetケーブルを抜いてみます。物理的にケーブルを抜いてみました。slave側の状態を再度確認します。master側がダウンしているので、VRRPで障害を検出して、slave側にVIPが割りつけられます。1000・・・(省略)最後に、master側のEhternetケーブルを挿し戻します。slave側の状態を確認します。master側が復活したので、priorityの設定値が低いslave側にはVIPが割り付けられません。1000・・・(省略)master側の状態を確認します。master側が復活すると、priorityの設定値が高いmaster側にVIPが割り付けられます。1000・・・(省略)全て期待通りに動作していることが確認できました。これでmaster側がダウンした場合でも、slave側に切り替わってサービスを継続できます。ラズパイでサーバーを稼働している場合は、冗長化をおこなうことが重要だと思います。MicroSDが壊れた場合でも、安心して交換作業ができますね。稼働していて気づいたのですが、MASTER側のログに1秒間隔でWarningメッセージが出力されていました。Advertisement」の送信間隔と一致していると思い設定を見直しました。マルチキャストでやり取りできる場合は、設定ファイル(keepalived.conf)の以下のブブはいらないはずです。}とりあえず、マルチキャスト設定(コメント扱い)と、上記のユニキャスト設定にして試してみましたが、どちらの場合もWarningメッセージは出力されないようになりました。マルチキャストが通らない場合は、ユニキャスト設定が必要になると思いますので、環境に合わせて設定されると良いと思います。【ユニキャストとマルチキャストについて】ユニキャストとは、単一のアドレスを指定して、1対1で行われるデータ通信のことです。マルチキャストとは、特定のアドレスを指定して、1対複数で行われるデータ通信のことです。コメントをキャンセルメールアドレスが公開されることはありません。※サイト上に表示された文字を入力してください。