• お問い合わせ
  • ユーザー登録
ドキュメント
Turbolinux Cluster Server & TurboCluster Server 4.0 のハートビートブロードキャストについて

Turbolinux Cluster Server、又はTurboCluster Server 4.0 (以降TLCS)をご使用頂き、TLCSを二重化以上の構成でクラスタを構築する場合、プライマリとして稼動するTLCSのノードから、UDPポート17100(デフォルト)を使用し、ブロードキャストを送信します。このハートビートブロードキャストを元に、バックアップとして待機しているTLCSが、プライマリのTLCSの状態を判断します。この動作はTLCSの仕様です。

この動作のため、通常運用しているネットワーク(セグメント)に、TLCSのクラスタをデフォルト設定で構築すると、大量のパケットがネットワーク(TLCSが稼動するセグメント)に送信されるため、通常運用しているネットワークのパフォーマンスが低下する可能性があります。

この問題を回避するために、簡単な解決策としては、クラスタに関係する、TLCSが稼動する各ノードと、クラスタリングするサービス(Webサーバやメールサーバ、データベースサーバ)が稼動する各ノードを、独立したネットワーク(セグメント)に構築することです。ネットワークを分ける場合、物理的にそれぞれのネットワークを分け、ルータで接続する方法と、物理的には同一ネットワークで、論理的に分ける方法があります。この論理的にネットワークを分ける場合は、VLANを実装可能なスイッチ製品相当を使用する必要があります。

ここでは、物理的にネットワークを分ける方法について説明します。まずは、次の構成図を確認してください。

              +---+  +-------------------+
              |   |  | ** TLCS  node **  |
              | S +--+ eth0:192.168.5.31 |
              | w |  | GW  :192.168.5.1  |
              | i |  | HostName:node1    |
              | t |  +-------------------+
              | c |  +-------------------+
              | h |  | ** TLCS  node **  |
              | i +--+ eth0:192.168.5.32 |
              | n |  | GW  :192.168.5.1  |
              | g |  | HostName:node2    |
              |   |  +-------------------+
              | H |
              | u |  +-------------------+
              | b |  | **  Web node  **  |
              |   +--+ eth0:192.168.5.33 |
              |   |  | GW  :192.168.5.1  |
              |   |  | HostName:node3    |
              |   |  +-------------------+
              |   |  +-------------------+
              |   |  | **  Web node  **  |
              |   +--+ eth0:192.168.5.34 |
              |   |  | GW  :192.168.5.1  |
              |   |  | HostName:node4    |
              |   |  +-------------------+
              |   |
              |   |
              |   +--+  +-------------------+
              |   |  |  | ** Router node ** |  Cluster Network
              +---+  |  |                   |        A
                     +--+ eth1:192.168.5.1  |        A
          ///////////// |                   | ////////////////
                     +--+ eth0:192.168.4.50 |        V
              +---+  |  | GW  :192.168.4.1  |        V
              |   |  |  | HostName:node20   |  existing Network
              | S +--+  +-------------------+
              | w |
              | i |
              | t |  +-------------------+
              | c |  | **  DNS node  **  |
              | h +--+ eth0:192.168.4.46 |
              | i |  | GW  :192.168.4.1  |
              | n |  | HostName:node16   |
              | g |  +-------------------+
              |   |  +-------------------+
              | H |  | **  client node **|
              | u |--+ eth0:192.168.4.39 |
              | b |  | GW  :192.168.4.1  |
              |   |  | HostName:node9    |
              |   |  +-------------------+
              |   |
              ~~~~~~~~~~~~~~~~~
              ~~~~~~~~~~~~~~~~~

この構成図では、7台のPC(ノード)が登場しています。この中でクラスタを構成しているノードは4台です。ホスト名"node1","node2"にTLCSがインストールされ、どちらかがプライマリとして稼動し、どちらかがバックアップとして待機します。クラスタリングするサービスは、Webサーバで、Webサーバが稼動するノードは、ホスト名"node3","node4"です。この4台でクラスタを構成しています。

構成図に記載がないですが、仮想IPは、"192.168.5.30"を使用します。この仮想IPはホスト名"node1"か"node2"で稼動するプライマリのTLCSが、IPエイリアスの機能を使用し、設定します。

この192.168.5.0のネットワークが、新設したTLCSのクラスタ用のネットワークで、192.168.4.0のネットワークが、既存のネットワークと解釈してください。

この構成では、ルータとして、NIC(ネットワークカード)が2枚接続されたPCを使用しています。このPCには、Turbolinux Server 日本語版 6.1がインストールされています。

それでは、各ノードの設定について説明します。

まず、ホスト名"node1","node2","node3","node4"のデフォルトゲートウェイのアドレスを、192.168.5.1に設定する必要があります。詳細な設定方法については省略しますが、Turbolinux Server の場合は、コマンド「turbonetcfg」を実行することで簡単に設定可能です。ホスト名"node1","node2"には、TLCSが稼動します。使用するTLCSの構成ファイル(/etc/clusterserver/clusterserver.conf)の内容は次の通りです。


              # TurboLinux Cluster Server config file /etc/clusterserver/clusterserver.conf
              #
              # This file contains virtual host information for clusterserverd.
              # Current file was generated automatically on 2001-01-25 16:51:33.
              # Do not edit - your changes may be lost!
              #
              # *** global parameters ***
              NetworkMask  255.255.255.0
              # *** NAT specific parameters ***
              NAT
              EndNAT
              # *** user checks ***
              UserCheck HTTPAgent
                check  /usr/bin/httpAgent
              EndUserCheck
              # *** services ***
              Services
                Service  HTTPService   tcp:80   HTTPAgent
              EndServices
              # *** servers ***
              Servers
                Server  node3      192.168.5.33  direct
                Server  node4      192.168.5.34  direct
              EndServers
              # *** server pools ***
              ServerPool HTTPservers
                AddServer  node3             HTTPService/1
                AddServer  node4             HTTPService/1
                CheckServerFrequency  120
                CheckServerTimeout    10
                CheckPortFrequency    240
                CheckPortTimeout      120
              EndServerPool
              # *** router pools ***
              AtmPool router1
                AddAtm  192.168.5.31
                AddAtm  192.168.5.32
                SendArpDelay          20
                MaxLostHeartbeats     3
                HeartBeatDelay        1
                NumConnections        100000
                NumServers            1000
                NumServices           100
                ConnectionTimeout     300
              EndAtmPool
              # *** virtual hosts ***
              VirtualHost 192.168.5.30
                AddAtmPool  router1
                AddServerPool  HTTPservers
              EndVirtualHost
			

仮想IPに送信されたパケットを、TLCSがサービスノード(ホスト名"node3"と"node4")に転送する方法は、この構成ではダイレクトフォワーディングを使用しているので、ホスト名"node3"と"node4"で以下のコマンドを実行し、仮想IPのIPアドレスをホスト名"node3"と"node4"でも使用可能にします。

              # ifconfig lo:0 192.168.5.30 netmask 255.255.255.255 up

            

このままでは、ノードを再起動する毎に、このコマンドを実行する必要があります。/etc/rc.d/rc.local に、このコマンドを記述するか、turbonetcfgで設定するか、ネットワークの設定ファイルを編集して、再起動後も有効になるようにしてください。この設定については、TLCSに付属するマニュアルを参照 してください。

サービスを提供するノード(TLCSがインストールされていないホスト名"node3"と"node4")でネットワークを確認します。次ように確認してください。

              [root@node3 /root]# ifconfig
              eth0      Link encap:Ethernet  HWaddr 00:90:27:EA:E6:08
                        inet addr:192.168.5.33  Bcast:192.168.5.255  Mask:255.255.255.0
                        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                        RX packets:4837 errors:0 dropped:0 overruns:0 frame:0
                        TX packets:663 errors:0 dropped:0 overruns:0 carrier:0
                        collisions:0 txqueuelen:100
                        Interrupt:9 Base address:0xde80 Memory:c8026000-c8026900
              
              lo        Link encap:Local Loopback
                        inet addr:127.0.0.1  Mask:255.0.0.0
                        UP LOOPBACK RUNNING  MTU:3924  Metric:1
                        RX packets:21 errors:0 dropped:0 overruns:0 frame:0
                        TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
                        collisions:0 txqueuelen:0
              
              lo:0      Link encap:Local Loopback
                        inet addr:192.168.5.30  Mask:255.255.255.255
                        UP LOOPBACK RUNNING  MTU:3924  Metric:1
              
              [root@node3 /root]#
            

上記例はホスト名"node3"での実行結果ですが、"node4"でもインターフェース"lo:0"の部分が同様な結果になります。

TLCSがホスト名"node1"でプライマリーとして稼動している場合は次のようになります。

              [root@node1 /root]# ifconfig
              eth0      Link encap:Ethernet  HWaddr 00:90:27:EA:E5:10
                        inet addr:192.168.5.31  Bcast:192.168.5.255  Mask:255.255.255.0
                        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                        RX packets:988 errors:0 dropped:0 overruns:0 frame:0
                        TX packets:4284 errors:0 dropped:0 overruns:0 carrier:0
                        collisions:0 txqueuelen:100
                        Interrupt:9 Base address:0xde80 Memory:c8029000-c8029c40
              
              eth0:cs0  Link encap:Ethernet  HWaddr 00:90:27:EA:E5:10
                        inet addr:192.168.5.30  Bcast:192.168.5.255  Mask:255.255.255.0
                        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                        Interrupt:9 Base address:0xde80 Memory:c8029000-c8029c40
              
              lo        Link encap:Local Loopback
                        inet addr:127.0.0.1  Mask:255.0.0.0
                        UP LOOPBACK RUNNING  MTU:3924  Metric:1
                        RX packets:0 errors:0 dropped:0 overruns:0 frame:0
                        TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
                        collisions:0 txqueuelen:0
              
              [root@node1 /root]#
            

以上で、クラスタ側の各ノード、ネットワークの設定は終了です。

次に、ルータとして動作するホスト名"node20"の設定について説明します。まず、NICを2枚差して使用するには、次のURLを参考に設定します。

http://www.turbolinux.co.jp/knowledge/public/65.html

それぞれのNICでデータをやり取りするために、/etc/sysconfig/networkの「FORWARD_IPV4」の項目が「yes」と指定されているか確認してください。ホスト名"node20"の/etc/sysconfig/networkの内容は次の通りです。

              NETWORKING=yes
              PROFILENAME="No_Profile"

              HOSTNAME=node20.turbolinux.gr.jp
              DOMAINNAME=turbolinux.gr.jp
              GATEWAY=192.168.4.1
              GATEWAYDEV=eth0
              FORWARD_IPV4=yes
              IPX=no
			

「no」が指定されている場合は「yes」に変更し、次のコマンドでネットワークを再起動してください。

              # /etc/rc.d/init.d/network restart
			

以下のように、/proc/sys/net/ipv4/ip_forwardの内容を確認してください。


              # cat /proc/sys/net/ipv4/ip_forward
              1
              #
			

上記のように、ファイル(/proc/sys/net/ipv4/ip_forward)の内容が「1」の場合は、IPフォワードが有効になっています。「0」の場合は設定が有効になっていません。再度確認してください。

後は、既存ネットワーク側のネットワーク設定を変更すれば使用可能です。取りあえず、ホスト名"node9"と"node16"でクラスターのネットワークと通信する場合は、それぞれのノードで次のコマンドを実行することにより、可能となります。

              # route add -net 192.168.5.0 netmask 255.255.255.0 dev eth0 gw 192.168.4.50

			

コマンド実行後、IP経路テーブルを表示して確認します。次は、ホスト名"node16"で実行した実行例です。

              [root@node16 /root]# route -n
              Kernel IP routing table
              Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
              255.255.255.255 0.0.0.0         255.255.255.255 UH    0      0        0 eth0
              192.168.5.0     192.168.4.50    255.255.255.0   UG    0      0        0 eth0
              192.168.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
              0.0.0.0         192.168.4.1     0.0.0.0         UG    0      0        0 eth0
              [root@node16 /root]#
			

以上で、少なくとも、ホスト名"node9"や"node16"から、クラスターの入り口になる仮想IP 192.168.5.30にアクセス可能となります。

最後に、ホスト名"node20"でtcpdumpを実行し、TLCSが発行するハートビートブロードキャストを確認してみます。

              [root@node20 /root]# tcpdump -l -i eth0 |grep udp
              tcpdump: listening on eth0
              
              9 packets received by filter
              0 packets dropped by kernel
              
              [root@node20 /root]#
              [root@node20 /root]# tcpdump -l -i eth1 |grep udp
              tcpdump: listening on eth1
              18:31:18.016801 192.168.5.31.17100 > 192.168.5.255.17100: udp 37
              18:31:19.016962 192.168.5.31.17100 > 192.168.5.255.17100: udp 37
              18:31:20.017115 192.168.5.31.17100 > 192.168.5.255.17100: udp 37
              18:31:21.017282 192.168.5.31.17100 > 192.168.5.255.17100: udp 37
              18:31:22.017444 192.168.5.31.17100 > 192.168.5.255.17100: udp 37
              18:31:23.017597 192.168.5.31.17100 > 192.168.5.255.17100: udp 37
              
              6 packets received by filter
              0 packets dropped by kernel
              
              [root@node20 /root]#

			

ここでは説明を省略しますが、node20で、ipchainsを使用しファイアウォールを構築し、セキュリティと、ネットワーク負荷軽減を実現することが可能です。

関連文書

対象製品
  • Turbolinux Cluster Server 8
  • Turbolinux Cluster Server 7
  • Turbolinux Cluster Server 6
  • TurboCluster Server 4.0
Last modified : Tue Dec 9 JST 2003 # 1