「Keepalived」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(英語版より新規作成)
 
(→‎See also: 翻訳)
 
(同じ利用者による、間の5版が非表示)
1行目: 1行目:
 
[[Category:ネットワーク]]
 
[[Category:ネットワーク]]
  +
[[en:Keepalived]]
{{Expansion|Add example configuration for failover with HAproxy as load balancer.}}
 
  +
[https://www.keepalived.org/ Keepalived] は、Virtual Router Redundancy Protocol(VRRP)を使用して高可用性機能とロードバランシングを提供する、Linux 仮想サーバー(LVS)クラスター用のフェイルオーバーおよび監視デーモンです。
[https://www.keepalived.org/ Keepalived] is a failover and monitoring daemon for Linux virtual server (LVS) clusters that provides high availability functionality and load balancing using the Virtual Router Redundancy Protocol (VRRP).
 
   
== Installation ==
+
== インストール ==
   
  +
{{pkg|keepalived}} パッケージを [[インストール]] してください。
[[Install]] the {{pkg|keepalived}} package.
 
   
[[Enable]] {{ic|keepalived.service}}.
+
{{ic|keepalived.service}} を [[有効化]] してください。
   
== Configuration ==
+
== 設定 ==
   
The service is configured in {{ic|/etc/keepalived/keepalived.conf}}.
+
このサービスは {{ic|/etc/keepalived/keepalived.conf}} で設定されます。
   
  +
=== マスターとバックアップのフェイルオーバー設定 ===
=== Master and backup failover setup ===
 
   
  +
以下は、仮想 IP アドレスを共有する 2 つのサーバー/ルーターで高可用性クラスターを設定する基本的な設定を提供します。両方とも keepalived を実行している必要があります。
The following provides a basic configuration to setup a high availability cluster with two servers/routers sharing a virtual IP address. Both need to be running keepalived.
 
   
  +
ホスト A で:
On host A:
 
   
 
{{hc|/etc/keepalived/keepalived.conf|<nowiki>
 
{{hc|/etc/keepalived/keepalived.conf|<nowiki>
36行目: 36行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
ホスト B で:
On host B:
 
   
 
{{hc|/etc/keepalived/keepalived.conf|<nowiki>
 
{{hc|/etc/keepalived/keepalived.conf|<nowiki>
55行目: 55行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
この state は、サービスが開始され、マスターの役割を引き継ぐ最も高い優先度を持つホストを決定する前に、ホストの初期役割を設定します。この設定により、より高い優先度を持つホスト A が VIP(仮想 IP アドレス)を管理し、ホスト A が応答しなくなった場合にのみ、ホスト B が VIP を引き継ぎます。デフォルトの切り替えまでの時間は 1 秒です。
The state sets the initial role of the host when the service is started and before multicast advertisements are processed to determine the host with the highest priority which will take the master role. This setup means that the host A with the higher priority will manage the VIP (virtual IP address) and only if host A stops responding will host B take over the VIP. The default transition time until takeover is one second.
 
   
  +
=== モニタリング付きのフェイルオーバーセットアップ ===
=== Failover setup with monitoring ===
 
   
  +
以下は、keepalived と同じホストで動作するサービス(sshd)のフェイルオーバークラスターを提供します。
The following provides a failover cluster for service (sshd) running on the same hosts as keepalived.
 
   
  +
ホスト A で:
On host A:
 
   
 
{{hc|/etc/keepalived/keepalived.conf|<nowiki>
 
{{hc|/etc/keepalived/keepalived.conf|<nowiki>
100行目: 100行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
ホスト B で:
On host B:
 
   
 
{{hc|/etc/keepalived/keepalived.conf|<nowiki>
 
{{hc|/etc/keepalived/keepalived.conf|<nowiki>
139行目: 139行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
このセットアップは、フェイルオーバーホスト自体で動作する sshd サービスに対して、より動的なクラスターを提供します。両方のサーバーはバックアップ状態で開始し、nopreempt オプションにより、優先度が高いサーバーが障害後に戻ってきた場合でも、優先度が低いサーバーがマスターの役割を保持することができます。これにより、以前のマスターサーバーが再び動作を開始した際に VIP への接続が中断されるのを防ぎます。この設定には、ターゲットサービスがクラッシュした場合にサーバーの優先度を下げるプロセスの追跡も含まれています。
This setup provides a more dynamic cluster for the sshd service running on the failover host itself. Both servers start in the backup state and the nopreempt option allows the server with the lower priority to keep the master role even when the server with the higher priority returns after a failure. This prevents the interruption of connections to the VIP when the former master server comes back alive. The configuration also includes process tracking to reduce the priority of a server when the target service crashes.
 
   
  +
=== ロードバランシング付きフェイルオーバー ===
=== Failover with load-balancing ===
 
   
Keepalived also provides load balancing with a number of possible algorithms (see {{man|5|keepalived.conf}}).
+
Keepalived は、いくつかの可能なアルゴリズムを使用したロードバランシングも提供します(詳細は {{man|5|keepalived.conf}} を参照)。
   
  +
以下は、上記の設定に追加できる HTTP ロードバランシングの簡単な例です:
This would be a simple example for HTTP load balancing that can be added to the above configuration:
 
   
 
{{hc|/etc/keepalived/keepalived.conf|<nowiki>
 
{{hc|/etc/keepalived/keepalived.conf|<nowiki>
177行目: 177行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
代わりに、keepalived は [[HAproxy]] がロードバランサとして動作するフェイルオーバーにも使用できます。
Alternatively, keepalived can also be used for failover with [[HAproxy]] acting as the loadbalancer.
 
   
  +
== セキュリティ上の考慮事項 ==
== Security considerations ==
 
   
  +
keepalived が使用する VRRP プロトコルは、すでに同じサブネット上にいる攻撃者に対して高いセキュリティを提供していません。このサービスで認証を使用する主な利点は、既存のクラスターを混乱させるサーバーを誤って追加することを防ぐためです。{{ic|auth_type PASS}} を使用する場合、パスワードはすべてのマルチキャストパケットでローカルサブネット上で平文で送信されます。{{ic|auth_type AH}}(IP 認証ヘッダー)を使用すると、基本的な妨害や ARP スプーフィングなどの攻撃に対してややより高い耐性を提供しますが、それでも可能です。セキュリティが高い優先度である場合は、ネットワークの制限を使用して VRRP トラフィックを保護してください。例えば、クラスター用に隔離されたサブネットを使用し、ファイアウォールで他のネットワークからの VRRP トラフィックをブロックしてください。
The VRRP protocol used by keepalived does not provide significant security against attackers who are already on the same subnet. The main benefit of using authentication in this service is to protect against accidentally adding servers that disrupt an existing cluster. When using {{ic|auth_type PASS}}, the password is sent in plaintext over the local subnet with every multicast packet. Using {{ic|auth_type AH}} (IP Authentication Header) will provide slightly better resilience against attacks but basic disruption and attacks such as ARP spoofing are still possible. Use network restrictions to protect the VRRP traffic if security is a high priority for you, e.g. use an isolated subnet for the cluster and block VRRP traffic from other networks in your firewall.
 
   
== See also ==
+
== 参照 ==
   
* [https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/load_balancer_administration/index Load Balancer Administration]
+
* [https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/load_balancer_administration/index ロードバランサー管理]
* [https://louwrentius.com/configuring-attacking-and-securing-vrrp-on-linux.html Configuring, Attacking and Securing VRRP on Linux]
+
* [https://louwrentius.com/configuring-attacking-and-securing-vrrp-on-linux.html Linux 上での VRRP の設定、攻撃、およびセキュリティ]

2023年9月3日 (日) 20:49時点における最新版

Keepalived は、Virtual Router Redundancy Protocol(VRRP)を使用して高可用性機能とロードバランシングを提供する、Linux 仮想サーバー(LVS)クラスター用のフェイルオーバーおよび監視デーモンです。

インストール

keepalived パッケージを インストール してください。

keepalived.service有効化 してください。

設定

このサービスは /etc/keepalived/keepalived.conf で設定されます。

マスターとバックアップのフェイルオーバー設定

以下は、仮想 IP アドレスを共有する 2 つのサーバー/ルーターで高可用性クラスターを設定する基本的な設定を提供します。両方とも keepalived を実行している必要があります。

ホスト A で:

/etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 101
    priority 20
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass pass1234 
    }
    virtual_ipaddress {
        172.16.0.100
    }
}

ホスト B で:

/etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 101
    priority 15
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass pass1234
    }
    virtual_ipaddress {
        172.16.0.100
    }
}

この state は、サービスが開始され、マスターの役割を引き継ぐ最も高い優先度を持つホストを決定する前に、ホストの初期役割を設定します。この設定により、より高い優先度を持つホスト A が VIP(仮想 IP アドレス)を管理し、ホスト A が応答しなくなった場合にのみ、ホスト B が VIP を引き継ぎます。デフォルトの切り替えまでの時間は 1 秒です。

モニタリング付きのフェイルオーバーセットアップ

以下は、keepalived と同じホストで動作するサービス(sshd)のフェイルオーバークラスターを提供します。

ホスト A で:

/etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     admin@example.net
   }
   notification_email_from lb1@example.net
   smtp_server mail.example.net
   smtp_connect_timeout 30
}

# enter failed state when the sshd process is down
vrrp_track_process track_sshd {
    process sshd
    delay 1
}

vrrp_instance VI_1 {
    state BACKUP
    nopreempt
    interface eth0
    virtual_router_id 101
    priority 20
    advert_int 1
    authentication {
        auth_type AH
        auth_pass key12345
    }
    virtual_ipaddress {
        172.16.0.100
    }
    track_process {
        track_sshd
    }
    smtp_alert
}

ホスト B で:

/etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     admin@example.net
   }
   notification_email_from lb2@example.net
   smtp_server mail.example.net
   smtp_connect_timeout 30
}

# enter failed state when the sshd process is down
vrrp_track_process track_sshd {
    process sshd
    delay 1
}

vrrp_instance VI_1 {
    state BACKUP
    nopreempt
    interface eth0
    virtual_router_id 101
    priority 15
    advert_int 1
    authentication {
        auth_type AH
        auth_pass key12345
    }
    virtual_ipaddress {
        172.16.0.100
    }
    track_process {
        track_sshd
    }
    smtp_alert
}

このセットアップは、フェイルオーバーホスト自体で動作する sshd サービスに対して、より動的なクラスターを提供します。両方のサーバーはバックアップ状態で開始し、nopreempt オプションにより、優先度が高いサーバーが障害後に戻ってきた場合でも、優先度が低いサーバーがマスターの役割を保持することができます。これにより、以前のマスターサーバーが再び動作を開始した際に VIP への接続が中断されるのを防ぎます。この設定には、ターゲットサービスがクラッシュした場合にサーバーの優先度を下げるプロセスの追跡も含まれています。

ロードバランシング付きフェイルオーバー

Keepalived は、いくつかの可能なアルゴリズムを使用したロードバランシングも提供します(詳細は keepalived.conf(5) を参照)。

以下は、上記の設定に追加できる HTTP ロードバランシングの簡単な例です:

/etc/keepalived/keepalived.conf
virtual_server 172.16.0.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    protocol TCP

    real_server 172.16.1.20 80 {
        TCP_CHECK {
                connect_timeout 10
        }
    }
    real_server 172.16.1.21 80 {
        TCP_CHECK {
                connect_timeout 10
        }
    }
    real_server 172.16.1.22 80 {
        TCP_CHECK {
                connect_timeout 10
        }
    }
    real_server 172.16.1.23 80 {
        TCP_CHECK {
                connect_timeout 10
        }
    }
}

代わりに、keepalived は HAproxy がロードバランサとして動作するフェイルオーバーにも使用できます。

セキュリティ上の考慮事項

keepalived が使用する VRRP プロトコルは、すでに同じサブネット上にいる攻撃者に対して高いセキュリティを提供していません。このサービスで認証を使用する主な利点は、既存のクラスターを混乱させるサーバーを誤って追加することを防ぐためです。auth_type PASS を使用する場合、パスワードはすべてのマルチキャストパケットでローカルサブネット上で平文で送信されます。auth_type AH(IP 認証ヘッダー)を使用すると、基本的な妨害や ARP スプーフィングなどの攻撃に対してややより高い耐性を提供しますが、それでも可能です。セキュリティが高い優先度である場合は、ネットワークの制限を使用して VRRP トラフィックを保護してください。例えば、クラスター用に隔離されたサブネットを使用し、ファイアウォールで他のネットワークからの VRRP トラフィックをブロックしてください。

参照