У меня проблема, когда мои исходящие соединения используют неправильный интерфейс. Я считаю, что маршрутизация настроена правильно.
Я сталкиваюсь с проблемами, когда, как в последнем случае, соединение использует VIP БД в качестве исходящего интерфейса, а затем VIP базы данных переназначается другому блейд-серверу. Программа остается, но VIP ушел.
Вот IP-адреса, когда база данных локальная:
[root@xxxx-b1 ~]# ip addr list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 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
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
link/ether redacted
3: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether redacted
inet 172.18.3.12/22 brd 172.18.3.255 scope global bond0
inet 172.18.3.10/22 brd 172.18.3.255 scope global secondary bond0:0
inet6 readcted/64 scope link
valid_lft forever preferred_lft forever
База данных является вторичной связью 0: 0.
Вот мой маршрут:
[root@xxxx-b1 ~]# ip route list
172.18.0.0/22 dev bond0 proto kernel scope link src 172.18.3.12
169.254.0.0/16 dev bond0 scope link metric 1003
default via 172.18.0.1 dev bond0 src 172.18.3.12
Вот пример использования telnet для подключения к базе данных, когда VIP базы данных является локальным:
[root@xxxx-b1 ~]# telnet 172.18.3.10 2315 &
[1] 13676
[root@xxxx-b1 ~]# Trying 172.18.3.10...
Connected to 172.18.3.10.
Escape character is '^]'.
[1]+ Stopped telnet 172.18.3.10 2315
[root@xxxx-b1 ~]# netstat -np | grep telnet
tcp 0 0 172.18.3.10:53583 172.18.3.10:2315 ESTABLISHED 13676/telnet
Что мне не хватает? Есть ли способ заставить это исходящее соединение использовать адрес bond0 (172.18.3.12) вместо VIP базы данных? Установка src параметр на маршруте вроде не помогает. Может, это просто невозможно?
Спасибо за любой отзыв!