Configuración:

  • Dos conmutadores, cada uno con una ruta de Internet independiente
  • Servidores Centos con eth0 y eth1 enlazados como respaldo activo en bond0, eth0 en switch y eth1 en el otro
  • /etc/modprobe.conf configurado así, para bond0:

    alias bond0 bonding

    options bond0 mode=1 primary=eth0 miimon=100

  • eth0 a veces estaba conectado al interruptor principal, a veces al secundario.

Guión:

  • El interruptor secundario tiene falla de memoria
  • Las luces del enlace permanecen encendidas, pero el interruptor ya no maneja el tráfico

Entonces, debido a que usamos miimon, que solo obtiene el estado del enlace, ninguno de nuestros servidores desactivó ese enlace de su enlace cuando falló el cambio. Esto provocó interrupciones en la red y, en los servidores en los que eth0 estaba en ese conmutador secundario, dejaron de estar disponibles por completo. Irónicamente, esto es peor que si alguien acabara de pasar y arrancar todos los cables, ya que no fallaron.

He estado probando arp_interval como alternativa, pero según tengo entendido, arp_interval tiene dos limitaciones:

  • arp_ip_target solo toma una ip, lo que significa que si esa dirección IP falla, bond0 pensará erróneamente que el enlace debería estar inactivo y lo eliminará. Estaba usando la puerta de enlace como dirección IP, pero si la puerta de enlace fallara, sería bueno que aún continuara el tráfico interno al conmutador. arp_ip_target tampoco hará eso; simplemente cerrará todas las interfaces, incluso la última.
  • arp_interval depende de una cierta cantidad de tráfico de red (?), donde un enlace muy silencioso puede cerrarse por error.

¿Hay alguna forma de evitar esas limitaciones de arp_interval? ¿Se puede configurar miimon mejor? ¿Existe una mejor manera de lograr redes de alta disponibilidad? Hemos estado pensando en manejar la conmutación por error manualmente a través de un demonio en cada servidor, en lugar de usar arp_interval (es decir, monitorear los enlaces nosotros mismos y usar ifenslave para subirlos y bajarlos). Ya no estamos haciendo trunking por rendimiento; la fiabilidad es realmente nuestra prioridad aquí.

answer

¿Estás seguro de haberlo probado a fondo?

de acuerdo a esto :

arp_ip_target specifies the IP addresses to use as ARP monitoring peers whenarp_interval is > 0. Multiple IP addresses must be separated by a comma.

Tengo configuración de modo = 1 en un par de servidores [aunque con una sola IP proporcionada] y funciona bien, incluso sin que fluya tráfico. la conmutación por error se probó varias veces con y sin tráfico.