Я работаю над настройкой OpenStack, используя контейнеры LXC для виртуализации. Я могу запускать экземпляры (по крайней мере, отчеты журнала отчетов об этом). Однако я не могу ни пропинговать их, ни соединиться с ними через ssh, и журнал экземпляра сообщает, что сетевые интерфейсы не могут быть установлены должным образом (см. Журнал ниже). Никаких дальнейших ошибок в новых и нейтронных журналах не возникает.
Я протестировал настройку LXC, локально запустив контейнер непосредственно на вычислительном узле и подключившись к нему, как предполагалось. Для этого трафик соединяется напрямую с контейнером, как здесь. Из этого наблюдения я бы пришел к выводу, что все требования к модулю, относящиеся к LXC, выполнены (отчеты lxc-checkconfig тоже так). Затем я извлек изображение (учебник) и предоставил его OpenStack для создания экземпляра контейнера.
Более того, я попытался отследить пакеты, переданные во время попытки ping командой tcpdump. Кажется, они достигают управляющего узла, но не передаются на вычислительный узел (или экземпляр / контейнер). Тем не менее, я не понимаю, где они на самом деле теряются и почему.
Вопрос:
Как я могу узнать, где на самом деле проблема, то есть, если это OpenStack или это сеть внутри контейнера? У меня есть небольшая проблема "курица с яйцом", поскольку я не могу войти в контейнер, чтобы выяснить, не работает ли сеть там из-за проблем с сетью ...
Фон:
Настройка OpenStack состоит из управляющего узла, на котором работают все службы планирования и сетевых служб, и (на данный момент) одного вычислительного узла, на котором запускаются контейнеры.
Программа установки работает под Ubuntu 16.04 с пользовательским ядром (4.8) на вычислительном узле и использует OpenStack Newton, установленный через devstack.
Конфигурация:
Конфигурация devstack на управляющем узле:
[[local|localrc]]
MULTI_HOST=1
RECLONE=no
PIP_UPGRADE=False
PASSWORD=ostack
ADMIN_PASSWORD=$PASSWORD
SERVICE_TOKEN=$PASSWORD
MYSQL_PASSWORD=$PASSWORD
RABBIT_PASSWORD=$PASSWORD
SERVICE_PASSWORD=$PASSWORD
HOST_IP=192.168.0.112
DEST=/opt/stack
SERVICE_DIR=$DEST/status
DATA_DIR=$DEST/data
LOGDIR=$DEST/logs
LOGFILE=$LOGDIR/stack.sh.log
GIT_BASE=http://github.com
export ENABLE_DEBUG_LOG_LEVEL=False
# enable Neutron networking
disable_service n-net
enable_service q-svc q-agt q-dhcp q-l3 q-meta neutron
# Install the tempest test suite
enable_service tempest
disable_service zookeeper
# enable Heat service
enable_service heat h-api h-api-cfn h-api-cw h-eng
# KVM
LIBVIRT_TYPE=qemu
PUBLIC_NETWORK_GATEWAY=192.168.0.1
PUBLIC_INTERFACE=enp4s0
# Neutron configuration
#FIXED_RANGE=10.0.0.0/24
FLOATING_RANGE=192.168.0.0/24
Q_USE_SECGROUP=True
Q_FLOATING_ALLOCATION_POOL=start=192.168.0.5,end=192.168.0.99
Q_USE_PROVIDERNET_FOR_PUBLIC=True
OVS_PHYSICAL_BRIDGE=br-ex
PUBLIC_BRIDGE=br-ex
OVS_BRIDGE_MAPPINGS=public:br-ex
Q_L3_ENABLED=True
Конфигурация devstack на вычислительном узле:
[[local|localrc]]
HOST_IP=192.168.0.106
#
IFACE=br0
#
FLAT_INTERFACE=$IFACE
FIXED_RANGE=10.0.0.0/20
FIXED_NETWORK_SIZE=256
HOST=192.168.0.112
SERVICE_HOST=$HOST
MYSQL_HOST=$HOST
RABBIT_HOST=$HOST
Q_HOST=$HOST
GLANCE_HOSTPORT=$HOST:9292
ADMIN_PASSWORD=ostack
DATABASE_PASSWORDD=$ADMIN_PASSWORD
MYSQL_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
## Neutron options
PUBLIC_INTERFACE=$IFACE
ENABLED_SERVICES=n-cpu,rabbit,q-agt
# newly added
MULTI_HOST=1
DEST=/opt/stack
SERVICE_DIR=$DEST/status
DATA_DIR=$DEST/data
LOGDIR=$DEST/logs
LOGFILE=$LOGDIR/stack.sh.log
GIT_BASE=http://github.com
# nova -- LXC
LIBVIRT_TYPE=lxc
# logging
export ENABLE_DEBUG_LOG_LEVEL=False
Конфигурация lxc на вычислительном узле (/etc/lxc/default.conf):
lxc.network.type = veth
lxc.network.link = br0
lxc.network.flags = up
lxc.network.hwaddr = 00:16:3e:xx:xx:xx