Назначьте внешние / публичные IP-адреса виртуальным машинам в OpenNebula (Open vSwitch)
Я прочитал несколько постов, задающих один и тот же вопрос, на форумах KVM и открытых туманностей, а также на форумах, посвященных виртуализации, но нашел только частичные или поддельные ответы.
Некоторая информация:
- Цель: иметь возможность арендовать VPS, развернутые на ПО
- Ubuntu Server 18.04 установлен несколько дней назад, обновлен
- ON находится в конфигурации одного хоста (интерфейс и хост - одно)
- У меня есть блок IP /29, я хотел бы использовать эти IP на виртуальных машинах
Вот что я собрал (и попытался) до сих пор:
Основываясь на документации OpenNebula, я настроил мост OVS следующим образом:
# Create bridge and add port
ovs-vsctl add-br ovsbr0
ovs-vsctl add-port ovsbr0 enp3s0
# Change external IP address from port to bridge
ip addr flush dev enp3s0
ip addr add xxx.xxx.110.50/29 dev ovsbr0
ip link set ovsbr0 up
ip route add default via xxx.xxx.110.49 dev ovsbr0
Это дает мне доступ к интернету и настройку моста, как в их примере:
dba23490-cd85-40f4-a3b5-dfe9c4e2e60a
Bridge "ovsbr0"
Port "enp3s0"
Interface "enp3s0"
Port "ovsbr0"
Interface "ovsbr0"
type: internal
ovs_version: "2.9.2"
прохладно! Ну, это та часть, где я потерялся. Что теперь? как добавить это в Open Nebula, чтобы у моих новых виртуальных машин были внешние IP-адреса?
Если я терплю неудачу, каким другим способом я могу это сделать?
Некоторая другая информация, которая может быть полезна:
# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master ovs-system state UP group default qlen 1000
link/ether 00:25:90:62:f9:60 brd ff:ff:ff:ff:ff:ff
3: enp4s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:25:90:62:f9:61 brd ff:ff:ff:ff:ff:ff
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:c6:e4:3e brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:c6:e4:3e brd ff:ff:ff:ff:ff:ff
17: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether fa:1d:97:0a:8e:1c brd ff:ff:ff:ff:ff:ff
18: ovsbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 00:25:90:62:f9:60 brd ff:ff:ff:ff:ff:ff
inet xxx.xxx.110.50/29 scope global ovsbr0
valid_lft forever preferred_lft forever
# ip route
default via xxx.xxx.110.49 dev ovsbr0
xxx.xxx.110.48/29 dev ovsbr0 proto kernel scope link src xxx.xxx.110.50
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown
Заранее спасибо. Ссылка на мой пост на форуме OpenNebula
1 ответ
Наконец-то все заработало!
Вот мой шаблон виртуальной сети:
BRIDGE = "ovsbr0"
BRIDGE_TYPE = "openvswitch"
DESCRIPTION = "Network with public IPs"
DNS = "8.8.8.8"
GATEWAY = "xxx.xxx.110.49"
OUTER_VLAN_ID = ""
PHYDEV = ""
SECURITY_GROUPS = "0"
VLAN = "YES"
VLAN_ID = ""
VN_MAD = "ovswitch"
# optional QoS params
INBOUND_AVG_BW = "5785"
INBOUND_PEAK_BW = "9000"
INBOUND_PEAK_KB = "20000"
OUTBOUND_AVG_BW = "4200"
OUTBOUND_PEAK_BW = "9000"
OUTBOUND_PEAK_KB = "20000"
Оказывается, эта информация не в руководстве по развертыванию, а в руководстве по эксплуатации, где вы можете найти шаблоны vnet.
Приведенный ими пример:
# Configuration attributes (OpenvSwitch driver)
NAME = "Public"
DESCRIPTION = "Network with public IPs"
BRIDGE = "br1"
VLAN = "YES"
VLAN_ID = 12
DNS = "8.8.8.8"
GATEWAY = "130.56.23.1"
LOAD_BALANCER = 130.56.23.2
AR=[ TYPE = "IP4", IP = "130.56.23.2", SIZE = "1"]
AR=[ TYPE = "IP4", IP = "130.56.23.34", SIZE = "1"]
AR=[ TYPE = "IP4", IP = "130.56.23.24", SIZE = "1"]
AR=[ TYPE = "IP4", IP = "130.56.23.17", MAC= "50:20:20:20:20:21", SIZE = "1"]
AR=[ TYPE = "IP4", IP = "130.56.23.12", SIZE = "1"]