Подключение к локальному VIP: используется неверный исходящий интерфейс
У меня проблема с тем, что мои исходящие соединения используют неправильный интерфейс. Я полагаю, что все маршруты настроены правильно.
- У меня есть активная / резервная база данных на двух блейдах, которые используют виртуальный IP. VIP переназначается на блейд с активной базой данных.
- У меня есть процессы, работающие на тех же блейдах, которые подключаются к базе данных
- Если DB VIP находится на другом блейде, соединения с базой данных выполняются с использованием адреса src интерфейса по умолчанию, и все в порядке.
- Если БД VIP находится на локальном блэйде, соединения с базой данных выполняются с использованием базы данных VIP.
Я сталкиваюсь с проблемами, когда, как и в этом последнем случае, соединение использует DB DB в качестве своего исходящего интерфейса, а затем 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 на маршруте, похоже, не помогает. Может быть, это просто невозможно?
Спасибо за любые отзывы!