RHEL 6.4: Mode 1 channel bonding tidak gagal

11

Saya menjalankan RHEL 6.4, kernel-2.6.32-358.el6.i686, pada HP ML 350 G5 dengan dua onboard Broadcom NetXtreme II BCM5708 1000Base-T NICs. Tujuan saya adalah menyalurkan ikatan kedua antarmuka menjadi mode=1pasangan failover.

Masalah saya adalah bahwa terlepas dari semua bukti bahwa ikatan telah diatur dan diterima, menarik kabel keluar dari NIC primer menyebabkan semua komunikasi terhenti.

ifcfg-etho dan ifcfg-eth1

Pertama, ifcfg-eth0:

DEVICE=eth0
HWADDR=00:22:64:F8:EF:60
TYPE=Ethernet
UUID=99ea681d-831b-42a7-81be-02f71d1f7aa0
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes

Selanjutnya, ifcfg-eth1:

DEVICE=eth1
HWADDR=00:22:64:F8:EF:62
TYPE=Ethernet
UUID=92d46872-eb4a-4eef-bea5-825e914a5ad6
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes

ifcfg-bond0

File konfigurasi ikatan saya:

DEVICE=bond0
IPADDR=192.168.11.222
GATEWAY=192.168.11.1
NETMASK=255.255.255.0
DNS1=192.168.11.1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
BONDING_OPTS="mode=1 miimmon=100"

/etc/modprobe.d/bonding.conf

Saya memiliki /etc/modprobe.d/bonding.conffile yang diisi sebagai berikut:

alias bond0 bonding

ip addr output

Ikatan sudah habis dan saya dapat mengakses layanan publik server melalui alamat IP ikatan:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000
    link/ether 00:22:64:f8:ef:60 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000
    link/ether 00:22:64:f8:ef:60 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 00:22:64:f8:ef:60 brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.222/24 brd 192.168.11.255 scope global bond0
    inet6 fe80::222:64ff:fef8:ef60/64 scope link 
       valid_lft forever preferred_lft forever

Modul Kernel Berikat

... dimuat:

# cat /proc/modules | grep bond
bonding 111135 0 - Live 0xf9cdc000

/ sys / class / net

Sistem /sys/class/netfile menunjukkan hal-hal baik:

cat /sys/class/net/bonding_masters 
bond0
cat /sys/class/net/bond0/operstate 
up
cat /sys/class/net/bond0/slave_eth0/operstate 
up
cat /sys/class/net/bond0/slave_eth1/operstate 
up
cat /sys/class/net/bond0/type 
1

/ var / log / messages

Tidak ada masalah muncul di file log. Bahkan, semuanya terlihat agak bahagia.

Jun 15 15:47:28 rhsandbox2 kernel: Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: setting mode to active-backup (1).
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: setting mode to active-backup (1).
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: setting mode to active-backup (1).
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: setting mode to active-backup (1).
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: Adding slave eth0.
Jun 15 15:47:28 rhsandbox2 kernel: bnx2 0000:03:00.0: eth0: using MSI
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: making interface eth0 the new active one.
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: first active interface up!
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: enslaving eth0 as an active interface with an up link.
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: Adding slave eth1.
Jun 15 15:47:28 rhsandbox2 kernel: bnx2 0000:05:00.0: eth1: using MSI
Jun 15 15:47:28 rhsandbox2 kernel: bonding: bond0: enslaving eth1 as a backup interface with an up link.
Jun 15 15:47:28 rhsandbox2 kernel: 8021q: adding VLAN 0 to HW filter on device bond0
Jun 15 15:47:28 rhsandbox2 kernel: bnx2 0000:03:00.0: eth0: NIC Copper Link is Up, 1000 Mbps full duplex
Jun 15 15:47:28 rhsandbox2 kernel: bnx2 0000:05:00.0: eth1: NIC Copper Link is Up, 1000 Mbps full duplex

Jadi apa masalahnya?!

Menyentak kabel jaringan dari eth0 menyebabkan semua komunikasi menjadi gelap. Apa yang bisa menjadi masalah dan langkah apa lagi yang harus saya ambil untuk memecahkan masalah ini?

EDIT:

Pemecahan Masalah Lebih Lanjut:

Jaringan adalah satu subnet, VLAN tunggal yang disediakan oleh switch ProCurve 1800-8G. Saya telah menambahkan primary=eth0untuk ifcfg-bond0dan jasa networking restart, tapi hal itu tidak mengubah perilaku apapun. Saya memeriksa /sys/class/net/bond0/bonding/primarysebelum dan sesudah menambahkan primary=eth1dan memiliki nilai nol, yang saya tidak yakin baik atau buruk.

Tailing /var/log/messagesketika eth1kabelnya dilepas menunjukkan tidak lebih dari:

Jun 15 16:51:16 rhsandbox2 kernel: bnx2 0000:03:00.0: eth0: NIC Copper Link is Down
Jun 15 16:51:24 rhsandbox2 kernel: bnx2 0000:03:00.0: eth0: NIC Copper Link is Up, 1000 Mbps full duplex

Saya menambahkan use_carrier=0untuk ifcfg-bond0's BONDING_OPTSbagian untuk memungkinkan penggunaan ioctls MII / ethtool. Setelah memulai kembali layanan jaringan, tidak ada perubahan gejala. Menarik kabel dari eth0menyebabkan semua komunikasi jaringan terhenti. Sekali lagi, tidak ada kesalahan dalam /var/log/messagesmenyimpan untuk pemberitahuan bahwa tautan pada port itu turun.

Wesley
sumber
1
Bisakah Anda menambahkan beberapa informasi lebih lanjut seperti sakelar membuat / model terhubung ke, penyetelan VLAN saat sakelar, status slave bond dan / var / log / pesan setelah kabel ke eth0 dicabut?
Andy Shinn
@AndyShinn Switch yang terhubung langsung ke ProCurve 1800-8G. Tidak ada VLAN di jaringan. Ini adalah subnet tunggal yang sederhana, jaringan VLAN tunggal.
Wesley
@AndyShinn Ah, dan juga negara budak ikatan keduanya dilaporkan up. Tailing /var/log/messagespada saat eth0 dicabut hanya menunjukkan bahwa tautan tembaga telah dicabut. Tidak ada pesan dari modul bonding.
Wesley

Jawaban:

21

BACA. ANDA. KONFIGURASI.

Dan ketika itu gagal ...

BACA. SEMUA. OUTPUT.

Apakah Anda melihat apa yang ada di ifcfg-bond0dalamnya? Tidak, apakah Anda mengerti apa yang ada di ifcfg-bond0dalamnya?
Apa yang ada di dunia penguin yang licin miimmon=100?
Oh, maaf, maksud Anda miimon=100?

Ya, saya pikir Anda maksud miimondan tidak miimmon.

Juga, hadiah besar adalah bahwa ketika Anda me-restart layanan jaringan Anda, Anda melihat ini:

service network restart
Shutting down interface bond0:                             [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface bond0:  ./network-functions: line 446: /sys/class/net/bond0/bonding/miimmon: No such file or directory
./network-functions: line 446: /sys/class/net/bond0/bonding/miimmon: No such file or directory
                                                           [  OK  ]

Perhatikan baik-baik semua yang Anda ketik dan saat Anda melakukan kesalahan pengetikan yang tidak terhindarkan, perhatikan dengan cermat setiap hasil yang Anda lihat.

Anda adalah orang jahat dan Anda harus merasa buruk.

Wesley
sumber
8
KUCING NAKAL! semprotan dengan selang
voretaq7
2

Coba tentukan salah satu NICS sebagai budak utama.

DEVICE=bond0
IPADDR=192.168.11.222
GATEWAY=192.168.11.1
NETMASK=255.255.255.0
DNS1=192.168.11.1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
BONDING_OPTS="mode=1 miimmon=100 primary=eth0"

Lebih banyak dokumentasi dari RH :

primary = Menentukan nama antarmuka, seperti eth0, perangkat utama. Perangkat utama adalah yang pertama dari antarmuka ikatan yang akan digunakan dan tidak ditinggalkan kecuali jika gagal. Pengaturan ini sangat berguna ketika satu NIC di antarmuka ikatan lebih cepat dan, karenanya, mampu menangani beban yang lebih besar. Pengaturan ini hanya valid ketika antarmuka ikatan dalam mode cadangan aktif. Rujuk ke /usr/share/doc/kernel-doc-/Documentation/networking/bonding.txt untuk informasi lebih lanjut.

dmourati
sumber
Sebelum saya edit ifcfg-bond0saya memeriksa /sys/class/net/bond0/bonding/primarydan jawabannya kosong. Saya menambahkan primary=eth0untuk ifcfg-bond0dan restart layanan jaringan. Tidak ada perubahan dalam gejala dan tidak ada perubahan untuk /sys/class/net/bond0/bonding/primaryTerima kasih atas sarannya!
Wesley
coba tambahkan use_carrier = 0? lihat di atas dokumen kesehatan reproduksi untuk perincian
dmourati
Selesai - menambahkan informasi ke pertanyaan. Tidak ada perubahan dalam perilaku, tapi itu pilihan yang bagus untuk diketahui.
Wesley
2

Tambahkan opsi ikatan berikut downdelay = xxxx dalam milidetik yang gagal et setelah terdeteksi sebagai gagal dan mengatur budak utama untuk yang tersisa. Jika parameter ini tidak ada dalam bonding_opt, bond mendeteksi kegagalan (karena Anda memasukkan miimom = yyyy) tetapi tidak pernah gagal dengan eth0. Anda dapat melihat ini terjadi dengan melihat file / proc / net / bonding / bondX.

Bagaimanapun, dengan RHEL 6.3 (versi yang hampir sama dengan milik Anda) kami mengalami beberapa masalah lain dengan ikatan yang terkait dengan kegagalan kembali, duplikasi addr mac yang terlihat dari saklar.

semoga berhasil.

mcw
sumber