このドキュメントで説明するソフトウェアは、Extended SupportまたはSustaining Supportのいずれかにあります。 詳細は、https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdfを参照してください。
Oracleでは、このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお薦めします。

機械翻訳について

17.10 Keepalivedを使用したHAProxyの高可用性の実現

次の例では、Keepalivedを使用して、プライマリ・サーバーで障害が発生した場合に、HAProxyサービスをバックアップ・サーバーにフェイルオーバーします。

「図17.5」では、2つのHAProxyサーバーが示されています。これらは、10.0.0.11および10.0.0.12として外部に面しているネットワーク(10.0.0.0/24)に接続され、192.168.1.11および192.168.1.12として内部ネットワーク(192.168.1.0/24)に接続されています。 一方のHAProxyサーバー(10.0.0.11)は、仮想IPアドレス10.0.0.10を使用してKeepalivedプライマリ・サーバーとして構成され、もう一方(10.0.0.12)はKeepalivedバックアップ・サーバーとして構成されます。 2つのwebサーバー、websvr1 (192.168.1.71)およびwebsvr2 (192.168.1.72)には、内部ネットワークでアクセスできます。 IPアドレス10.0.0.10は、インターネット上でルーティングできないプライベート・アドレス範囲10.0.0.0/24にあります。 アップストリーム・ネットワーク・アドレス変換(NAT)ゲートウェイまたはプロキシ・サーバーが、インターネットとの間のアクセスを提供します。

図17.5 個別ネットワークのWebサーバーと組み合せたHAProxyおよびKeepalived構成の例

この図は、10.0.0.11および10.0.0.12として外部公開ネットワーク(10.0.0.0/24)に接続され、192.168.1.11および192.168.1.12として内部ネットワーク(192.168.1.0/24)に接続されたHAProxyサーバーを示しています。 一方のHAProxyサーバー(10.0.0.11)は、仮想IPアドレス10.0.0.10を使用してKeepalivedプライマリ・サーバーとして構成され、もう一方、10.0.0.12はKeepalivedバックアップ・サーバーとして構成されます。 内部ネットワークでは、2つのWebサーバーwebsvr1 (192.168.1.71)およびwebsvr2 (192.168.1.72)にアクセス可能です。 IPアドレス10.0.0.10は、インターネットでルーティングできないプライベート・アドレス範囲の10.0.0.0/24,にあります。 アップストリーム・ネットワーク・アドレス変換(NAT)ゲートウェイまたはプロキシ・サーバーが、インターネットとの間のアクセスを提供します。


10.0.0.1110.0.0.12の両方でのHAProxy構成は、第17.3項、「HAProxyを使用した単純なロード・バランシングの構成」と非常によく似ています。 HAProxyが受信リクエストをリスニングするIPアドレスは、Keepalivedが制御する仮想IPアドレスです。

global
    daemon
    log 127.0.0.1 local0 debug
    maxconn 50000
    nbproc 1

defaults
    mode http
    timeout connect 5s
    timeout client 25s
    timeout server 25s
    timeout queue 10s

# Handle Incoming HTTP Connection Requests on the virtual IP address controlled by Keepalived
listen  http-incoming
    mode http
    bind 10.0.0.10:80
# Use each server in turn, according to its weight value
    balance roundrobin
# Verify that service is available
    option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
# Insert X-Forwarded-For header
    option forwardfor
# Define the back-end servers, which can handle up to 512 concurrent connections each
    server websvr1 192.168.1.71:80 weight 1 maxconn 512 check
    server websvr2 192.168.1.72:80 weight 1 maxconn 512 check

また、図17.6に示すように、HAProxyとKeepalivedをWebサーバーで直接構成することもできます。 前述の例と同様に、一方のHAProxyサーバー(10.0.0.11)が仮想IPアドレス10.0.0.10を使用してKeepalivedプライマリ・サーバーとして構成され、もう一方の10.0.0.12はKeepalivedバックアップ・サーバーとして構成されます。 プライマリ・サーバーのHAProxyサービスは、ポート80でリスニングし、ポート8080でリスニングするhttpdサービスのいずれかに着信リクエストを転送します。

図17.6 統合Webサーバーと組み合せたHAProxyおよびKeepalived構成の例

この図は、HAProxyサーバー(10.0.0.11)がKeepalivedプライマリ・サーバーとして構成され、仮想IPアドレスが10.0.0.10の別のサーバー(10.0.0.12)がKeepalivedバックアップ・サーバーとして構成されていることを示しています。 プライマリ・サーバーのHAProxyサービスはポート80でリスニングし、ポート8080でリスニングするhttpdサービスの1つに着信リクエストを転送します。


HAProxyの構成は、webサーバーのIPアドレスとポートを除き、前述の例と同じです。

...
    server websvr1 10.0.0.11:8080 weight 1 maxconn 512 check
    server websvr2 10.0.0.12:8080 weight 1 maxconn 512 check

各サーバーのファイアウォールは、ポート8080で受信TCPリクエストを受け入れるよう構成する必要があります。

どちらの構成例のKeepalived構成も、17.6項「Keepalivedを使用した単純な仮想IPアドレス・フェイルオーバーの構成」に示されている構成と似ています。

プライマリ(マスター)サーバーのKeepalived構成は次のとおりです:

global_defs {
   notification_email {
     root@mydomain.com
   }
   notification_email_from haproxy1@mydomain.com
   smtp_server localhost
   smtp_connect_timeout 30
}

vrrp_instance VRRP1 {
    state MASTER
#   Specify the network interface to which the virtual address is assigned
    interface eth0
#   The virtual router ID must be unique to each VRRP instance that you define
    virtual_router_id 41
#   Set the value of priority higher on the master server than on a backup server
    priority 200
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1066
    }
    virtual_ipaddress {
        10.0.0.10/24
    }
}

バックアップ・サーバーの構成は、notification_email_fromstatepriorityおよびinterface (システム・ハードウェア構成が異なる場合)の値を除けば同じです。

global_defs {
   notification_email {
     root@mydomain.com
   }
   notification_email_from haproxy2@mydomain.com
   smtp_server localhost
   smtp_connect_timeout 30
}

vrrp_instance VRRP1 {
    state BACKUP
#   Specify the network interface to which the virtual address is assigned
    interface eth0
    virtual_router_id 41
#   Set the value of priority lower on the backup server than on the master server
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1066
    }
    virtual_ipaddress {
        10.0.0.10/24
    }
}

プライマリ・サーバー(haproxy1)が失敗した場合、keepalivedは、バックアップ・サーバー(haproxy2)上のeth0インタフェースに仮想IPアドレス10.0.0.10/24を割り当てます。これがプライマリ・サーバーになります。

HAProxyおよびKeepalivedのインストールおよび構成方法の詳細は、第17.2項、「HAProxyのインストールと構成」および第17.5項、「Keepalivedのインストールと構成」を参照してください。