Подключение к локальному 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 на маршруте, похоже, не помогает. Может быть, это просто невозможно?

Спасибо за любые отзывы!

0 ответов

Другие вопросы по тегам