I'm following the Full Mesh guide, method 2 (routing, not broadcast), and everything works.
I want to add faul tolerance, to handle cable/nic port failures.
At first, I thought to use bonding: I have 3 nodes, with 4 10Gb ports each. I connected each node with each other with 2 bonded cables. It works, but I have 10%-50% packets lost if one of the two connections fails. Also, I found a RedHat document that states that bonding without a switch is an unsupported method, highly dependant on NIC hardware.
The other option I'm thinking of, is to use route to reach all nodes using the "other" node if the primary connection fails. I mean:
NODEA: 10.10.2.10
NODEB: 10.10.2.11
NODEC: 10.10.2.12
I enable ip forwarding in NODEC:
I ping NODEB from NODEA
I ping NODEB from NODEC
Bring down primary NODEA-NODEB connection
Now, I would like that NODEA reaches NODEB through NODEC, but it doesn't work:
All advice welcome.
I want to add faul tolerance, to handle cable/nic port failures.
At first, I thought to use bonding: I have 3 nodes, with 4 10Gb ports each. I connected each node with each other with 2 bonded cables. It works, but I have 10%-50% packets lost if one of the two connections fails. Also, I found a RedHat document that states that bonding without a switch is an unsupported method, highly dependant on NIC hardware.
The other option I'm thinking of, is to use route to reach all nodes using the "other" node if the primary connection fails. I mean:
NODEA: 10.10.2.10
NODEB: 10.10.2.11
NODEC: 10.10.2.12
Code:
root@NODEA:~# ip a
[...]
6: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether ac:1f:6b:ba:a4:7a brd ff:ff:ff:ff:ff:ff
inet 10.10.2.10/24 brd 10.10.2.255 scope global eno1
valid_lft forever preferred_lft forever
inet6 fe80::ae1f:6bff:feba:a47a/64 scope link
valid_lft forever preferred_lft forever
[...]
8: enp24s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether ac:1f:6b:ba:a4:78 brd ff:ff:ff:ff:ff:ff
inet 10.10.2.10/24 brd 10.10.2.255 scope global enp24s0f0
valid_lft forever preferred_lft forever
inet6 fe80::ae1f:6bff:feba:a478/64 scope link
valid_lft forever preferred_lft forever
[...]
Code:
root@NODEA:~# ip route add 10.10.2.11/32 nexthop dev enp24s0f0 weight 10 nexthop dev eno1 weight 1
root@NODEA:~# ip r
[...]
10.10.2.11
nexthop dev enp24s0f0 weight 10
nexthop dev eno1 weight 1
10.10.2.12 dev eno1 scope link
I enable ip forwarding in NODEC:
Code:
root@NODEC:~# echo 1 > /proc/sys/net/ipv4/ip_forward
Code:
root@NODEA:~# ping 10.10.2.11
PING 10.10.2.11 (10.10.2.11) 56(84) bytes of data.
64 bytes from 10.10.2.11: icmp_seq=1 ttl=64 time=0.156 ms
Code:
root@NODEC:~# ping 10.10.2.11
PING 10.10.2.11 (10.10.2.11) 56(84) bytes of data.
64 bytes from 10.10.2.11: icmp_seq=1 ttl=64 time=0.208 ms
Code:
root@NODEA:~# ip link set enp24s0f0 down
Now, I would like that NODEA reaches NODEB through NODEC, but it doesn't work:
Code:
root@NODEA:~# ping 10.10.2.11
PING 10.10.2.11 (10.10.2.11) 56(84) bytes of data.
^C
--- 10.10.2.11 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
All advice welcome.