- PR -

1つのbondingに2つのIPアドレスを持たせることは可能ですか?

投稿者投稿内容
yasu_morizo
会議室デビュー日: 2007/02/21
投稿数: 7
投稿日時: 2007-02-21 13:29
はじめて投稿させていただきます。

現在、Apacheのバーチャルホスト<バーチャルIP>を使用しようと考えています。
例としてバーチャルIPに
 192.168.1.1
 192.168.1.11
を設定することとします。

そこで、1枚のNICであれば、

/etc/sysconfig/network-scripts/ifcfg-eht0
のIPアドレス
IPADDR=192.168.1.1

/etc/sysconfig/network-scripts/ifcfg-eth0:1
のIPアドレス
IPADDR=192.168.1.2

として設定してあげれば問題なく動作することと考えます。

【本題】
2枚のNICになった場合です。
bondingの使用を考えており
設定は以下のとおりを考えています。

/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROT=none
IPADDR=192.168.1.1
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
USERCTL=no
MACADDR=aa:bb:cc:dd:ee:ff

/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

【問題】
ここでbondingをした場合、1つのbondデバイスに2つのIPを持たせることは
可能でしょうか?
つまり仮想IPのようにeth0:1のようにbond0:1を使用することは可能でしょうか?
つまりは、1つのbondingを使用してApacheのバーチャルIP機能を使用することが
できますでしょうか?

よろしくお願い致します。
F/A
ぬし
会議室デビュー日: 2006/03/18
投稿数: 312
お住まい・勤務地: Tokyo
投稿日時: 2007-02-21 22:15
確か可能です。
どこかのクラスタ製品はbond0に仮想IPを割り振ってたと記憶しています。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2007-02-21 22:24
こんばんわ.
引用:

yasu_morizoさんの書き込み (2007-02-21 13:29) より:

ここでbondingをした場合、1つのbondデバイスに2つのIPを持たせることは
可能でしょうか?
つまり仮想IPのようにeth0:1のようにbond0:1を使用することは可能でしょうか?


はい,複数の IP address を持たせることが可能です.
yasu_morizo
会議室デビュー日: 2007/02/21
投稿数: 7
投稿日時: 2007-02-22 09:21
kazさん、F/Aさん、ご回答ありがとうございます。

できそうなので、やってみようと思います。
ちなみにbond0:1を使用した際の設定は、以下のとおりを
考えています。
bond0:1の仮想化に伴って、eth0とeth1の仮想化(eth0:1,eth1:1)
も行わないとですよね。

以上、問題ないでしょうか?また、ほかに注意するとこなど
ありましたら、ご指摘を頂きたく思います。

よろしくお願いいたします。

----bond0の設定------
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROT=none
IPADDR=192.168.1.1
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
USERCTL=no
MACADDR=aa:bb:cc:dd:ee:ff

/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

----bond1の設定------
/etc/sysconfig/network-scripts/ifcfg-bond0:1
DEVICE=bond0:1
BOOTPROT=none
IPADDR=192.168.1.2
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
USERCTL=no
MACADDR=aa:bb:cc:dd:ee:ff

/etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:1
USERCTL=no
ONBOOT=yes
MASTER=bond0:1
SLAVE=yes
BOOTPROTO=none

/etc/sysconfig/network-scripts/ifcfg-eth1:1
DEVICE=eth1:1
USERCTL=no
ONBOOT=yes
MASTER=bond0:1
SLAVE=yes
BOOTPROTO=none
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2007-02-22 09:51
おはようございます。
eth0:1 と eth1:1 を bonding して bond0:1 を構成する、という考え方ではなく、eth0 と eth1 を bonding した bond0 に第二のアドレスを割り振る ( bond0:1 ) という考え方になると思いますので、bond0:1 の MACADDR や、eth0:1, eth1:1 等の設定はいらないように思いますが…

※XXX:1 は、セカンダリIPの付与であって、仮想化ではないですよね。
 普段から、ifconfig(8)やroute(8)ではなく、ip(8)を使ってみた方が分かりやすいかも。

[ メッセージ編集済み 編集者: angel 編集日時 2007-02-22 10:13 ]
yasu_morizo
会議室デビュー日: 2007/02/21
投稿数: 7
投稿日時: 2007-02-22 19:29
angelさん> ご返答、ありがとうございました。
大変、参考になります。
セカンダリIPの付与という考え方なのですね。
よくわかりました。IPコマンドを初めて知りました。
ちょっと調査してみます。

設定は、angelさんの助言を参考にさせていただき、
以下のようにしたいと思います。
----bond0の設定------
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROT=none
IPADDR=192.168.1.1
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
USERCTL=no
MACADDR=aa:bb:cc:dd:ee:ff

----bond0:1の設定------
/etc/sysconfig/network-scripts/ifcfg-bond0:1
DEVICE=bond0:1
BOOTPROT=none
IPADDR=192.168.1.2
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
USERCTL=no

/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
yasu_morizo
会議室デビュー日: 2007/02/21
投稿数: 7
投稿日時: 2007-05-08 11:45
今回は4つのポートで2つのbonding設定を行いました。
その際に注意が必要な箇所がありました。

/etc/modprobe.conf
に、ドライバとしてaliasを定義しますが、2つのbondingを行う際には、
以下のようにしないと、2つ目のbondingが認識されません。

【駄目な例】
alias bond0 bonding
alias bond1 bonding

【成功例】
install bond0 /sbin/modprobe bonding -o bond0 arp_ip_target=xxx.xxx.xxx.xxx arp_interval=1000 mode=1 primary=eth0
install bond1 /sbin/modprobe bonding -o bond1 arp_ip_target=xxx.xxx.xxx.xxx arp_interval=1000 mode=1 primary=eth1

なぜこの設定にしなければならないとの原因はわかっておらず、調査中です。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2007-05-08 12:19
こんにちわ.
引用:

yasu_morizoさんの書き込み (2007-05-08 11:45) より:

/etc/modprobe.conf
に、ドライバとしてaliasを定義しますが、2つのbondingを行う際には、
以下のようにしないと、2つ目のbondingが認識されません。



RHEL4 であれば,
alias bond0 bonding
alias bond1 bonding
と書いてから,一つ目(bond0)は
options 〜
二つ目(bond1)は
install 〜
と書けばよろしいのではないでしょうか?

スキルアップ/キャリアアップ(JOB@IT)