リファレンス

LVS設定事例

LVSとは?

LVS(Linux Virtual Server)とは、リクエストを任意のサーバーに振り分けられるソフトウェアロードバランサーです。

以下ではLinux(CentOS 6系)にてLVSとkeepalived(死活監視)を組み合わせた設定をご案内します。

設定例では、LVSのパケット転送方式にNATを採用し、エンドユーザーからのリクエストはLVSを経由してやり取りが行なわれます。

本リファレンスはお名前.comクラウドにてサーバーをご利用いただく場合の一例であり、お客様の運用やポリシーによってその限りではございません。
お客様のご利用用途に応じて追加設定を行なってください。

なお、お名前.comクラウドではお客様に代わり、弊社にて設定を代行させていただく設定代行サービスのご用意がございます。

 ※設定代行サービスの詳細は こちら

ご希望の場合、コントロールパネルよりお申し込みください。

 お名前.comクラウド コントロールパネル

事前準備

ソフトウェアロードバランサー用のサーバーとWebなどの必要なサーバーを、コントロールパネルより追加します。

 ※サーバーの追加方法につきましては、こちら をご参照ください。

サーバー構成例:

ソフトウェアロードバランサー(LVS)機1台
Webサーバー2台


 

■ソフトウェアロードバランサー用のサーバー設定

【LVSの構築】

 1.「ipvsadm」をインストールします。

# yum -y install ipvsadm

 2.任意のサーバーへの振り分けを許可する設定をします。

# vi /etc/sysctl.conf
 # Controls IP packet forwarding
   net.ipv4.ip_forward = 1 ←値を「1」に変更

 # Controls source route verification
  net.ipv4.conf.default.rp_filter = 0 ←値を「0」に変更

 3.「sysctl.conf」の編集内容を反映させます。

# /sbin/sysctl -p

 4.「ipvsadm」を起動します。

# service ipvsadm start

 5.「ipvsadm」の自動起動の設定をします。

# chkconfig ipvsadm on


 

【keepalivedの構築】

 1.「keepalived」をインストールします。

# yum -y install keepalived

 2.「keepalived」の設定ファイルについて、バックアップを取ります。

# cp -p /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.backup

 3.「keepalived」の設定ファイルを編集します。

 以下設定ファイルの編集については、デフォルトの内容を削除の上、新しい設定内容を記述していますので、デフォルトの設定ファイルの内容を引用したい場合は、1行目のコマンドは実施しないでください。

# cp -f /dev/null /etc/keepalived/keepalived.conf ←デフォルトの設定内容を削除
# vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

include lvs_*_servers.conf  #バランシングの設定内容は別ファイルに記述するため、任意のファイル名を指定

 ・障害検知や構成変更があった際にメールにて通知する場合

# cp -f /dev/null /etc/keepalived/keepalived.conf ←デフォルトの設定内容を削除
# vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
    notification_email {
     通知先のメールアドレス
    }
    notification_email_from 送信元のメールアドレス
    smtp_server 送信メールサーバーのIPアドレス
    smtp_connect_timeout 30
    router_id lvs_act  #LVSを識別するために任意の名前を指定
}

include lvs_*_servers.conf

 4.バランシングの設定をします。

 ・80番ポート(http)の場合

# vi /etc/keepalived/lvs_http_servers.conf ←「3.」にて指定したincludeのファイル名を入力

virtual_server LVS用サーバーのグローバルIP 80 {
  delay_loop   20   #死活監視のポーリング間隔を指定
  lvs_sched    lc  #バランシング方式を指定
  lvs_method   NAT  #パケット転送方式を指定
  protocol     TCP


  real_server  Webサーバー1のローカルIP 80 {
    weight 1
    inhibit_on_failure
    HTTP_GET {
      url {
        path /  #ポーリング先を指定
        status_code 200
      }
      connect_timeout 5  #ポーリングのタイムアウト時間を指定
      nb_get_retry 3  #リトライ回数を指定
      delay_before_retry 20  #リトライの間隔を指定
    }
  }
 real_server  Webサーバー2のローカルIP 80 {
    weight 1
    inhibit_on_failure
    HTTP_GET {
      url {
        path /
        status_code 200
      }
      connect_timeout 5
      nb_get_retry 3
      delay_before_retry 20
    }
}

 ・443番ポート(https)の場合

# vi /etc/keepalived/lvs_https_servers.conf ←「3.」にて指定したincludeのファイル名を入力

virtual_server LVS用サーバーのグローバルIP 443 {
  delay_loop   20   #死活監視のポーリング間隔を指定
  lvs_sched    lc  #バランシング方式を指定
  lvs_method   NAT  #パケット転送方式を指定
  protocol     TCP
 persistence_timeout 300  #セッション保持時間を指定

  real_server  Webサーバー1のローカルIP 443 {
    weight 1
    SSL_GET {
      url {
        path /  #ポーリング先を指定
        status_code 200
      }
      connect_timeout 5  #ポーリングのタイムアウト時間を指定
      nb_get_retry 3  #リトライ回数を指定
      delay_before_retry 20  #リトライの間隔を指定
    }
  }
 real_server  Webサーバー2のローカルIP 443 {
    weight 1
    SSL_GET {
      url {
        path /
        status_code 200
      }
      connect_timeout 5
      nb_get_retry 3
      delay_before_retry 20
    }
}

 5.「keepalived」を起動します。

# service keepalived start

 6.「keepalived」の自動起動の設定をします。

# chkconfig keepalived on


 

【iptablesの設定】

 1.「iptables」の設定を編集します。

# vi /etc/sysconfig/iptables

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -s ローカルIPレンジ(例 10.XXX.XXX.0/24) -o eth0 -j MASQUERADE ←追記
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT ←追記
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT ←追記
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -p tcp -m tcp --sport 80 -s ローカルIPレンジ(例 10.XXX.XXX.0/24) -j ACCEPT ←追記
-A FORWARD -p tcp -m tcp --sport 443 -s ローカルIPレンジ(例 10.XXX.XXX.0/24) -j ACCEPT ←追記
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

 2.「iptables」を再起動します。

# service iptables restart


 

■webサーバー側の設定

【デフォルトゲートウェイの設定】

 1.ネットワークの設定ファイルを編集します。

# vi /etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=xxx-xxx-xxx-xxx
GATEWAY=LVS用サーバーのローカルIP(eth1) ←ここを編集
NETWORKING_IPV6=no

 2.eth0の設定ファイルを編集します。

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
HWADDR=xx:xx:xx:xx:xx:xx
IPADDR=xxx.xxx.xxx.xxx
NETMASK=xxx.xxx.xxx.xxx
GATEWAY=LVS用サーバーのローカルIP(eth1) ←ここを編集

 3.ネットワークを再起動します。

# service network restart


 

【iptablesの設定】

 1.「iptables」の設定を編集します。

# vi /etc/sysconfig/iptables

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT  ←追記
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT  ←追記
-A INPUT -j REJECT --reject-with icmp-host-prohibited 
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 
COMMIT

 2.「iptables」を再起動します。

# service iptables restart

トップに戻る