GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar la conmutación por error y la vinculación de red de alta disponibilidad en Linux

Este tutorial explica cómo configurar la vinculación de red en un servidor Linux. Antes de comenzar, déjame explicarte qué es la vinculación de redes y qué hace. En un entorno de Windows, la vinculación de redes se denomina formación de equipos de red, esta es una función que ayuda a cualquier arquitectura de servidor a proporcionar alta disponibilidad y conmutación por error en escenarios donde uno de los principales cables de Ethernet tiene un mal funcionamiento o está mal configurado.

Normalmente, es una práctica recomendada y una función imprescindible que se debe implementar cuando configura un servidor con fines de producción. Aunque esta función se puede realizar en una configuración de entorno Linux, primero debe confirmar con el administrador de su red para asegurarse de que los conmutadores que están vinculados a su servidor sean compatibles con la vinculación de red. Hay varios modos de vinculación que puede implementar en su entorno de servidor. A continuación se muestra una lista de los modos disponibles y lo que hacen:

  • Saldo-rr
    Este modo proporciona funciones de equilibrio de carga y tolerancia a fallas (conmutación por error) a través de una política de turnos. Significa que transmite paquetes en orden secuencial desde el primer esclavo disponible hasta el último.
  • Copia de seguridad activa
    Este modo proporciona funciones de tolerancia a fallas a través de una política de copia de seguridad activa. Significa que una vez que la conexión de ethernet está activa, solo 1 de los esclavos de ethernet está activo. El otro esclavo de Ethernet solo se activará si y solo si el esclavo activo actual no se activa. Si elige este modo, notará que la dirección MAC de vinculación es visible externamente en solo un adaptador de red. Esto es para evitar confundir el interruptor.
  • Equilibrio-xor
    Este modo proporciona equilibrio de carga y tolerancia a fallas. Transmite según la política hash de transmisión seleccionada. Se pueden seleccionar políticas de transmisión alternativas a través de la opción xmit_hash_policy.
  • Transmitir
    Este modo solo proporciona tolerancia a fallas. Transmite todo en todas las interfaces ethernet esclavas.
  • 802.3ad
    Este modo proporciona equilibrio de carga y tolerancia a fallas. Crea un grupo de agregación que comparte la misma configuración de velocidad y dúplex. Utiliza todas las interfaces de ethernet esclavas en el agregador activo, se basa en la especificación 802.3ad. Para implementar este modo, ethtool debe admitir los controladores básicos para recuperar la velocidad y el modo dúplex de cada esclavo. El conmutador también debe admitir la agregación de enlaces dinámicos. Normalmente, esto requiere la intervención del ingeniero de red para una configuración detallada.
  • Balance-TLB
    Este modo proporciona capacidades de balanceo de carga, ya que el nombre TLB representa transmitir balanceo de carga . Para este modo, si la configuración tlb_dynamic_lb =1, el tráfico saliente se distribuye de acuerdo con la carga actual en cada esclavo. Si la configuración tlb_dynamic_lb =0, el equilibrio de carga está deshabilitado, pero la carga se distribuye solo mediante la distribución hasd. Para este modo, ethtool debe ser compatible con los controladores base para recuperar la velocidad de cada esclavo.
  • Equilibrio-ALB
    Este modo proporciona capacidades de equilibrio de carga, ya que el nombre TLB representa equilibrio de carga adaptativo . Similar a balance-tlb, excepto que tanto el tráfico de envío como el de recepción están enlazados. Recibe equilibrio de carga al lograr la negociación ARP. El controlador de enlace intercepta las respuestas ARP enviadas por el sistema local al salir y sobrescribe la dirección del hardware de origen con la dirección de hardware única de uno de los esclavos en el enlace. Para este modo, ethtool debe ser compatible con los controladores base para recuperar la velocidad de cada esclavo.


1. Nota Preliminar

Para este tutorial, estoy usando Oracle Linux 6.4 en la versión de 32 bits. Tenga en cuenta que, aunque la configuración se realiza en Oracle Linux, los pasos también se aplican a la distribución CentOS y Red Hat OS y también a los sistemas de 64 bits. El resultado final de nuestra configuración de ejemplo mostrará que la conexión realizada a nuestro servidor de vinculación permanecerá conectada aunque haya desactivado 1 de las redes Ethernet. En este ejemplo, mostraré cómo aplicar la vinculación de redes mediante el modo 1, que es la política de copia de seguridad activa.


2. Fase de instalación

Para este proceso, no se necesita instalación. Una instalación predeterminada de Linux de un servidor incluye todos los paquetes necesarios para una configuración de enlace de red.


3. Fase de Configuración

Antes de comenzar la configuración, primero debemos asegurarnos de tener al menos 2 interfaces Ethernet configuradas en nuestro servidor. Para verificar esto, vaya a la carpeta de configuración de red y enumere las interfaces de ethernet disponibles. A continuación se muestran los pasos:

cd /etc/sysconfig/network-scripts/
ls *ifcfg*eth*

El resultado es:

ifcfg-eth0 ifcfg-eth1 

Tenga en cuenta que actualmente tenemos 2 interfaces ethernet configuradas en nuestro servidor, que son ETH0 y ETH1.

Ahora configuremos una interfaz de vinculación llamada BOND0. Esta interfaz será una interfaz ethernet virtual que contiene la interfaz ethernet física de ETH0 y ETH1. A continuación se muestran los pasos:

vi ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
MASTER=yes
IPADDR=172.20.43.110
NETMASK=255.255.255.0
GATEWAY=172.20.43.1
BONDING_OPTS="mode=1 miimon=100"
TYPE=Ethernet

Luego ejecuta:

ls *ifcfg*bon*

El resultado es:

ifcfg-bond0 


Eso es todo. Tenga en cuenta que dentro de la interfaz BOND0, he incluido una dirección IP. Esta dirección IP será la única dirección IP conectada a nuestro servidor. Para continuar con el proceso, necesitamos modificar la interfaz ethernet física relacionada con la interfaz BOND0. A continuación se muestran los pasos:

vi ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes
vi ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes

Hecho. Hemos realizado la modificación de la interfaz ETH0 y ETH1. Tenga en cuenta que eliminamos la dirección IP dentro de ambas interfaces y agregamos MASTER =bond0. Esto es necesario para validar que ambas interfaces serán interfaces virtuales dedicadas a la interfaz ethernet BOND0.

Para continuar con la configuración. Vamos a crear un archivo de configuración de vinculación denominado bonding.conf en /etc/modprobe.d . A continuación se muestran los pasos:

vi /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bond0 mode=1 miimon=100
modprobe bonding 

Basándonos en la configuración anterior, hemos configurado un módulo de vinculación utilizando la interfaz BOND0. También asignamos la configuración de vinculación para usar el modo =1, que es una política de copia de seguridad activa. La opción miimon =100 representa la frecuencia de monitoreo de nuestro servidor de vinculación para monitorear el estado de la interfaz en milisegundos. Según la descripción anterior, este modo proporcionará características de tolerancia a fallas en la configuración de la red del servidor.

Como todo está configurado, reiniciemos el servicio de red para cargar la nueva configuración. A continuación se muestran los pasos:

service network restart
Shutting down interface eth0: [ OK ]
Shutting down interface eth1: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface bond0: [ OK ]


Excelente, ahora hemos cargado la nueva configuración que habíamos hecho arriba. Notará que la nueva interfaz llamada BOND0 se mostrará en la lista de redes. También notará que no hay una dirección IP asignada a las interfaces ETH0 y ETH1, solo la interfaz BOND0 muestra la IP.

ifconfig
bond0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
inet addr:172.20.43.110 Bcast:172.20.43.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe61:e488/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:1723 errors:0 dropped:0 overruns:0 frame:0
TX packets:1110 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:147913 (144.4 KiB) TX bytes:108429 (105.8 KiB)
eth0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1092 errors:0 dropped:0 overruns:0 frame:0
TX packets:1083 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:103486 (101.0 KiB) TX bytes:105439 (102.9 KiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:632 errors:0 dropped:0 overruns:0 frame:0
TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:44487 (43.4 KiB) TX bytes:3288 (3.2 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:208 errors:0 dropped:0 overruns:0 frame:0
TX packets:208 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:18080 (17.6 KiB) TX bytes:18080 (17.6 KiB)


También puede verificar el estado de vinculación a través de este comando:

cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:61:e4:88
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:c8:46:40
Slave queue ID: 0

Observe en lo anterior que hemos convertido con éxito las interfaces ETH0 y ETH1 en una configuración de vinculación mediante el modo de copia de seguridad activa. También se indicó que ahora el servidor está utilizando la interfaz ETH0, ETH1 será como interfaz de respaldo.


4. Fase de prueba

Ahora como todo está configurado como se esperaba. Hagamos una prueba simple para asegurarnos de que la configuración que hicimos es correcta. Para esta prueba, iniciaremos sesión en un nuevo servidor (o escritorio Linux) y comenzaremos a hacer ping a nuestro servidor de vinculación para ver si ocurre una conexión intermitente durante la prueba. A continuación se muestran los pasos:

login as: root
[email protected]'s password:
Last login: Wed Sep 14 12:50:15 2016 from 172.20.43.80
ping 172.20.43.110
PING 172.20.43.110 (172.20.43.110) 56(84) bytes of data.
64 bytes from 172.20.43.110: icmp_seq=1 ttl=64 time=0.408 ms
64 bytes from 172.20.43.110: icmp_seq=2 ttl=64 time=0.424 ms
64 bytes from 172.20.43.110: icmp_seq=3 ttl=64 time=0.415 ms
64 bytes from 172.20.43.110: icmp_seq=4 ttl=64 time=0.427 ms
64 bytes from 172.20.43.110: icmp_seq=5 ttl=64 time=0.554 ms
64 bytes from 172.20.43.110: icmp_seq=6 ttl=64 time=0.443 ms
64 bytes from 172.20.43.110: icmp_seq=7 ttl=64 time=0.663 ms
64 bytes from 172.20.43.110: icmp_seq=8 ttl=64 time=0.961 ms
64 bytes from 172.20.43.110: icmp_seq=9 ttl=64 time=0.461 ms
64 bytes from 172.20.43.110: icmp_seq=10 ttl=64 time=0.544 ms
64 bytes from 172.20.43.110: icmp_seq=11 ttl=64 time=0.412 ms
64 bytes from 172.20.43.110: icmp_seq=12 ttl=64 time=0.464 ms
64 bytes from 172.20.43.110: icmp_seq=13 ttl=64 time=0.432 ms

Durante este tiempo, volvamos a nuestro servidor de vinculación y apaguemos la interfaz ethernet ETH0. A continuación se muestran los pasos:

ifconfig eth0
eth0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1092 errors:0 dropped:0 overruns:0 frame:0
TX packets:1083 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:103486 (201.0 KiB) TX bytes:105439 (122.9 KiB)
ifdown eth0 

Ahora hemos desactivado los servicios para la interfaz de red ETH0. Vamos a comprobar el estado de vinculación. A continuación se muestran los pasos:

cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:c8:46:40
Slave queue ID: 0

Notará que ahora la interfaz ETH0 ya no existe en estado de vinculación. Durante este tiempo, regresemos al servidor de prueba anterior y verifiquemos el ping continuo a nuestro servidor de vinculación.

64 bytes from 172.20.43.110: icmp_seq=22 ttl=64 time=0.408 ms
64 bytes from 172.20.43.110: icmp_seq=23 ttl=64 time=0.402 ms
64 bytes from 172.20.43.110: icmp_seq=24 ttl=64 time=0.437 ms
64 bytes from 172.20.43.110: icmp_seq=25 ttl=64 time=0.504 ms
64 bytes from 172.20.43.110: icmp_seq=26 ttl=64 time=0.401 ms
64 bytes from 172.20.43.110: icmp_seq=27 ttl=64 time=0.454 ms
64 bytes from 172.20.43.110: icmp_seq=28 ttl=64 time=0.432 ms
64 bytes from 172.20.43.110: icmp_seq=29 ttl=64 time=0.434 ms
64 bytes from 172.20.43.110: icmp_seq=30 ttl=64 time=0.411 ms
64 bytes from 172.20.43.110: icmp_seq=31 ttl=64 time=0.554 ms
64 bytes from 172.20.43.110: icmp_seq=32 ttl=64 time=0.452 ms
64 bytes from 172.20.43.110: icmp_seq=33 ttl=64 time=0.408 ms
64 bytes from 172.20.43.110: icmp_seq=34 ttl=64 time=0.491 ms

Genial, ahora verá que a pesar de que hemos cerrado la interfaz ETH0, aún podemos hacer ping y acceder a nuestro servidor de vinculación. Ahora hagamos 1 prueba más. Vuelva a encender la interfaz ETH0 y apague la interfaz ETH1.

ifup eth0
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:c8:46:40
Slave queue ID: 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:61:e4:88
Slave queue ID: 0

Como la interfaz ETH0 ya estaba activa, apaguemos la interfaz ETH1.

ifdown eth1
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:61:e4:88
Slave queue ID: 0


Ahora regresemos al servidor de prueba y verifiquemos qué sucede con el ping continuo realizado en nuestro servidor de vinculación

64 bytes from 172.20.43.110: icmp_seq=84 ttl=64 time=0.437 ms
64 bytes from 172.20.43.110: icmp_seq=85 ttl=64 time=0.504 ms
64 bytes from 172.20.43.110: icmp_seq=86 ttl=64 time=0.401 ms
64 bytes from 172.20.43.110: icmp_seq=87 ttl=64 time=0.454 ms
64 bytes from 172.20.43.110: icmp_seq=88 ttl=64 time=0.432 ms
64 bytes from 172.20.43.110: icmp_seq=89 ttl=64 time=0.434 ms
64 bytes from 172.20.43.110: icmp_seq=90 ttl=64 time=0.411 ms
64 bytes from 172.20.43.110: icmp_seq=91 ttl=64 time=0.420 ms
64 bytes from 172.20.43.110: icmp_seq=92 ttl=64 time=0.487 ms
64 bytes from 172.20.43.110: icmp_seq=93 ttl=64 time=0.551 ms
64 bytes from 172.20.43.110: icmp_seq=94 ttl=64 time=0.523 ms
64 bytes from 172.20.43.110: icmp_seq=95 ttl=64 time=0.479 ms


¡Pulgares arriba! Hemos configurado y probado con éxito que nuestro servidor de vinculación se las arregla para atender el escenario de recuperación ante desastres en una condición de conmutación por error de la red.


Linux
  1. Cómo configurar la interfaz de red virtual en Redhat 7 Linux

  2. Cómo establecer una dirección IP estática y configurar la red en Linux

  3. Cómo configurar direcciones IP estáticas y dinámicas en Arch Linux

  4. Cómo instalar y configurar EMC PowerPath en Linux

  5. Cómo configurar la vinculación de Etherchannel de Linux para la interfaz de red HA

Cómo instalar y configurar el servidor DNS en Linux

Cómo instalar y configurar ZSH en distribuciones de Linux

Cómo instalar y configurar AnyDesk en el sistema Linux

Cómo instalar y configurar Django en un sistema Linux

Cómo instalar y configurar PrestaShop en el sistema Linux

Cómo instalar y configurar Elasticsearch en el sistema Linux