Перенаправление портов для экземпляров OpenStack

Добрый день,

Сегодня я пытаюсь перенаправить весь входящий и исходящий трафик с частного IP-адреса моего экземпляра BareMetal на IP-адрес, изначально предоставленный DevStack во время установки.

Настройка OpenStack BareMetal Cloud

Как я пришел к этой ситуации? Я работаю со средой OpenStack, в которой я могу развернуть экземпляр BareMetal (плавающий IP-адрес: XXX.YYY.88.171, частный IP-адрес: 10.140.82.189 [на eth0]). Образ, используемый для раскрутки этого экземпляра, - это Ubuntu 14.04 с установленным DevStack / Master. Снимок этого образа с установленным на нем DevStack изначально был создан на BareMetal с локальным IP: 10.140.82.125 [On eth0]. Поэтому теперь всякий раз, когда вы используете этот дополнительный экземпляр с этим образом, среда Baremetal OpenStack назначает частный IP-адрес (в данном случае 10.140.82.189), отличный от IP-адресов, содержащихся на всех конечных точках DevStack (10.140.82.125).

Как вы понимаете, это доставляет нам много проблем.

Я могу придумать два лучших подхода к решению этой проблемы:

  1. Изменение всех конечных точек DevStack с 10.140.82.125 на 10.140.82.189 (есть много проблем, которые следует учитывать при каждом обновлении, следуя этому маршруту)

  2. Перенаправление всего трафика с 10.140.82.189 на 10.140.82.125 для каждой конечной точки.

Мой прогресс:

Сначала я даже не смог получить доступ к панели инструментов горизонта (хотя она отображалась при вводе текста в браузере), которая, по сути, будет следовать:

XXX.YYY.88.171 -> 10.140.82.189:8800 -> 10.140.82.125:8800

По какой-то причине отображается панель управления Horizon экземпляра. Когда я наберу свое имя пользователя и пароль, я вернусь с

Не удалось установить соединение с конечной точкой Keystone.

В терминале, где я отправляю ssh на 10.140.82.189, если я запрашиваю:

openstack catalog list
Unable to establish connection to http://10.140.82.125:5000/v2.0/tokens

Таким образом, похоже, что 10.140.82.189 передает в своем API-вызове свой IP-адрес и запрашивает ключевой камень для токена на 10.140.82.125:5000. Из-за несовпадения IP-адресов возникает проблема, и я не могу войти в систему.

Я приступил к выполнению небольшого перенаправления портов, выполнив следующие действия:

 sudo ip addr add 10.140.82.125/22 dev eth0

 sudo iptables -t nat -A  PREROUTING -d 10.140.82.189 -j DNAT --to-destination 10.140.82.125

 sudo iptables -t nat -A POSTROUTING -s 10.140.82.125 -j SNAT --to-source 10.140.82.189

Теперь я могу войти в учетную запись mi и получить конечные точки в терминале. К сожалению, в пределах горизонта никакая информация не извлекается из nova (http://10.140.82.125:8774) или любого из другие услуги. Попытка развернуть экземпляр в среде DevStack дает мне следующее:

Error: Failed to get network list Connection to neutron failed: HTTPConnectionPool(host='10.140.82.125', port=9696): Max retries exceeded with url: //v2.0/networks.json?shared=False&tenant_id=bec332d4b9e6415cae0f51bb3e0de720 (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7fd168377b90>: Failed to establish a new connection: [Errno 111] Connection refused',))

Список конечных точек: отображается в комментариях

Я постоянно получаю ошибки. В качестве примера (с использованием экрана в стеке разработки):

На взгляд-реестр:

 2016-01-20 06:09:23.173 DEBUG eventlet.wsgi.server [-] (8212) accepted ('10.140.82.189', 38273) from (pid=8212) server /usr/local/lib/python2.7/dist-packages/eventlet/wsgi.py:826

Нейтрон-СВХ (Q-SVC)

 2016-01-20 06:17:30.581 WARNING neutron.db.agents_db [req-48ebcdf0-126c-4dfb-b3b2-f4b48ec9704a None None] Agent healthcheck: found 4 dead agents out of 4:
            Type       Last heartbeat host
      DHCP agent  2016-01-13 19:08:16 gonzalo-devstack-ss
        L3 agent  2016-01-13 19:08:08 gonzalo-devstack-ss
  Metadata agent  2016-01-13 19:07:51 gonzalo-devstack-ss
 Open vSwitch agent  2016-01-13 19:08:16 gonzalo-devstack-ss
 2016-01-20 06:17:32.319 ERROR oslo.messaging._drivers.impl_rabbit [-] AMQP server 10.140.82.125:5672 closed the connection. Check login credentials: Socket closed

q-agt:

 2016-01-20 06:19:14.308 ERROR oslo.messaging._drivers.impl_rabbit [-] AMQP server 10.140.82.125:5672 closed the connection. Check login credentials: Socket closed

И я мог продолжать. Каковы были бы рекомендации по дальнейшему продвижению?


person Gonzalo De La Torre    schedule 20.01.2016    source источник
comment
Конечные точки DevStack [ссылка] (paste.openstack.org/show/484373)   -  person Gonzalo De La Torre    schedule 20.01.2016


Ответы (1)


Предлагаемый подход невозможен, если вы не создадите дополнительный «traducer» API, который заменяет старый IP новым IP и старое имя хоста новым именем хоста.

Решение этой проблемы - полностью заменить предыдущий IP-адрес новым IP-адресом, а предыдущее имя хоста - новым именем хоста. Это должно быть сделано в / etc и / opt / stack в дополнение к информации, содержащейся во всех таблицах в базах данных mysql.

person Gonzalo De La Torre    schedule 04.02.2016