我正在尝试建立一个可以启动nova实例的最小devstack,一些将具有公共地址,一些将需要打开到公共网络的连接.我希望能够为实例分配浮动ips,并使来自具有公共地址的实例的流量到达公共网络.
Devstack将在一个带有两个物理接口的Ubuntu 14.04盒子上运行.第一个接口eth0
是在10.48.4.0/22,我拥有地址10.48.6.232; 这是与盒子的管理连接.第二个接口eth1
是10.48.8.0/22,拥有地址10.48.11.6和10.48.11.57-10.48.11.59.eth1
配置为使用10.48.11.6地址,为浮动范围留下一小段地址.
auto eth1
iface eth1 inet static
address 10.48.11.6
netmask 255.255.252.0
Run Code Online (Sandbox Code Playgroud)
我想使用范围10.48.11.57-10.48.11.59作为浮动IP池.这构成了我的开始local.conf
[[local|localrc]]
# Devstack host IP eth1 address
HOST_IP=10.48.11.6
# Private network
FIXED_RANGE=10.90.100.0/24
NETWORK_GATEWAY=10.90.100.1
# Public network
Q_FLOATING_ALLOCATION_POOL=start=10.48.11.57,end=10.48.11.59
FLOATING_RANGE=10.48.8.0/22
PUBLIC_NETWORK_GATEWAY=10.48.8.1
# Public network is eth1
PUBLIC_INTERFACE=eth1
Run Code Online (Sandbox Code Playgroud)
我的相关部分的其余部分local.conf
是配置neutron和ovs以使用公共网络.我按照评论中的说明进行操作neutron-legacy
.
# Neutron
# -------
PUBLIC_BRIDGE=br-ex
Q_USE_PROVIDERNET_FOR_PUBLIC=True
PUBLIC_PHYSICAL_NETWORK=public
OVS_BRIDGE_MAPPINGS=public:br-ex
# Neutron Provider Network
ENABLE_TENANT_TUNNELS=True
PHYSICAL_NETWORK=public
OVS_PHYSICAL_BRIDGE=br-ex
# Use ml2 and openvswitch
Q_PLUGIN=ml2
Q_ML2_PLUGIN_MECHANISM_DRIVERS=openvswitch,logger
Q_AGENT=openvswitch
enable_service q-agt
# …
Run Code Online (Sandbox Code Playgroud) 我正在使用以下文档设置openstack配置: http://docs.openstack.org/juno/install-guide/install/apt/openstack-install-guide-apt-juno.pdf 并到达第72页,其中显示去做这个:
# ovs-vsctl add-port br-ex INTERFACE_NAME
Run Code Online (Sandbox Code Playgroud)
但我输入了错误的 INTERFACE_NAME,现在我必须纠正这个错误(这是一个真正的接口,但错误的接口,我应该在那里放另一个接口)。
但我很难撤销它。
我试过:
# ovs-vsctl del-port br-ex INTERFACE_NAME
Run Code Online (Sandbox Code Playgroud)
但它告诉我 /etc/openvswitch/conf.db (或类似的东西)是只读的
然后我尝试了
# ovs-vsctl del-br br-ex
Run Code Online (Sandbox Code Playgroud)
然后它说你不能只删除一个端口,你需要删除整个网桥(或类似的东西)。这对我来说很奇怪,我认为该命令会删除桥......
那么有人知道删除我错误创建的端口的正确方法吗?
编辑:我以root身份尝试了所有这些。
EDIT2:我刚刚尝试在练习机器上做同样的事情,犯同样的错误,然后用以下方法修复它:
# ovs-vsctl del-port br-ex INTERFACE_NAME
Run Code Online (Sandbox Code Playgroud)
它起作用了,没有只读的废话,所以我真的不明白。有什么建议么?
根据官方文档,我正在尝试在虚拟机Devstack
上的Ubuntu 18.04 Server
OS上部署OS。devstack节点只有一个网卡(ens160)通过以下CIDR连接到网络10.20.30.40/24
。我需要在该网络上公开访问我的实例(从10.20.30.240到10.20.30.250)。因此,我还是设法通过以下官方浮动IP 文档来形成此local.conf
文件:
[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
PUBLIC_INTERFACE=ens160
HOST_IP=10.20.30.40
FLOATING_RANGE=10.20.30.40/24
PUBLIC_NETWORK_GATEWAY=10.20.30.1
Q_FLOATING_ALLOCATION_POOL=start=10.20.30.240,end=10.20.30.250
Run Code Online (Sandbox Code Playgroud)
这将导致形成一个br-ex
具有全局IP地址10.20.30.40
和辅助IP地址10.20.30.1
的网关(网关已经在网络上;PUBLIC_NETWORK_GATEWAY
参数不是在谈论网络上的真实网关吗?)
现在,在成功部署之后,禁用ufw
(根据此方法),创建具有用于ping和ssh的适当安全组的cirros实例并附加浮动IP,我只能在devstack节点上访问我的实例,而不能在整个网络上访问我的实例!同样从cirros实例内部,我无法访问外部世界(即使我可以从devstack节点访问外部世界)
之后,观看此视频,我对local.conf
文件进行了如下修改:
[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
FLAT_INTERFACE=ens160
HOST_IP=10.20.30.40
FLOATING_RANGE=10.20.30.240/28
Run Code Online (Sandbox Code Playgroud)
成功部署和实例设置后,我仍然只能在devstack节点上访问我的实例,而不能从外部访问!但是好消息是我可以从cirros实例内部访问外界。
任何帮助,将不胜感激!
更新资料
在第二种配置中,在tcpdump
对实例浮动IP执行ping操作时检查数据包,我观察到实例的浮动IP的who-has
广播数据包从网络路由器到达devstack节点。但是不会is-at
生成任何答复,因此ICMP数据包不会路由到devstack节点和实例。
因此,通过一些技巧,我创建了响应,然后一切正常。但这当然不是解决方案,我认为devstack应该开箱即用而无需任何调整,这可能是因为devstack的配置错误。
我在我的CentOs VM上安装了Openstack,当我尝试查看已启动实例的列表时,我收到此错误
$ openstack server list
Ignoring domain related config user_domain_name because identity API version is 2.0
Ignoring domain related config user_domain_name because identity API version is 2.0
Ignoring domain related config user_domain_name because identity API version is 2.0
Ignoring domain related config user_domain_name because identity API version is 2.0
Expecting to find domain in user - the server could not comply with the request since it is either malformed or otherwise incorrect. The client is assumed to be in …
Run Code Online (Sandbox Code Playgroud) 我是openstack热文件的新手.我做了搜索,但没有找到我的问题的相关答案.这里我的模板加热yaml文件:
heat_template_version: newton
description: Simple template to deploy a single compute instance with an attached volume
resources:
my_instance:
type: OS::Nova::Server
properties:
name: instance-name
flavor: std.cpu1ram1
block_device_mapping_v2:
- device_name: vda
image: RHEL-7.4
volume_size: 30
delete_on_termination: true
networks:
- network: network-name.admin-network
security_group:
- security_group: [security-name.group-sec-default]
my_volume:
type: OS::Cinder::Volume
properties:
size: 10
my_attachment:
type: OS::Cinder::VolumeAttachment
properties:
instance_uuid: { get_resource: my_instance }
volume_id: { get_resource: my_volume }
mountpoint: /dev/vdb
Run Code Online (Sandbox Code Playgroud)
这个加热文件有效,但我不知道如何将浮动IP附加到"my_instance".我能够在Horizon内部完成它并且它在没有PB的情况下工作.在Horizon界面下,我选择"Router_dmz"作为创建并允许浮动IP的池.据我所知,浮动IP地址应与"network-name.admin-network"相关联.我读了很多文档,我不知道是否要使用操作系统:Neutron :: FloatingIPAssociation资源或OS :: Nova :: FloatingIPAssociation.我试过了,我没有问题.
我想创建一些使用openstack在其上安装ubuntu的实例.
我尝试了以下步骤
方法1
安装了冰室devstack
git clone -b stable/icehouse https://github.com/openstack-dev/devstack.git
cd devstack
./stack.sh
Run Code Online (Sandbox Code Playgroud)安装成功后,我上传了一个ubuntu图片
glance image-create --name Ubuntu --disk-format iso --container-format bare <~/sumit/images/ubuntu-14.04.2-desktop-amd64.iso
Run Code Online (Sandbox Code Playgroud)登录仪表板并使用此映像启动实例(m1.small,RAM GB,总磁盘20GB).
它显示所需的空间(6.5GB)不可用.
我试着安装中子和热量
方法2
安装了冰室devstack
git clone -b stable/icehouse https://github.com/openstack-dev/devstack.git
cd devstack
vi localrc
Run Code Online (Sandbox Code Playgroud)
我的localrc看起来像
DEST=/opt/stack
LOGFILE=$DEST/logs/stack.sh.log
VERBOSE=True
LOG_COLOR=False
SCREEN_LOGDIR=$DEST/logs/screen
ADMIN_PASSWORD=password
MYSQL_PASSWORD=openstack
RABBIT_PASSWORD=openstack
SERVICE_PASSWORD=openstack
SERVICE_TOKEN=tokentoken
GLANCE_BRANCH=stable/icehouse
HORIZON_BRANCH=stable/icehouse
KEYSTONE_BRANCH=stable/icehouse
NOVA_BRANCH=stable/icehouse
NEUTRON_BRANCH=stable/icehouse
HEAT_BRANCH=stable/icehouse
CEILOMETER_BRANCH=stable/icehouse
DISABLED_SERVICES=n-net ENABLED_SERVICES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta,q-metering,neutron
ENABLED_SERVICES+=,q-lbaas
ENABLED_SERVICES+=,heat,h-api,h-api-cfn,h-api-cw,h-eng
HEAT_STANDALONE=True
ENABLED_SERVICES+=,ceilometer-acompute,ceilometer-acentral,ceilometer-collector,ceilometer-api
ENABLED_SERVICES+=,ceilometer-alarm-notify,ceilometer-alarm-eval
Run Code Online (Sandbox Code Playgroud)
在这之后
./stack.sh
Run Code Online (Sandbox Code Playgroud)成功安装后Ι上传了一个ubuntu映像
glance image-create --name Ubuntu --disk-format iso --container-format bare <~/sumit/images/ubuntu-14.04.2-desktop-amd64.iso
Run Code Online (Sandbox Code Playgroud)登录仪表板并使用此映像启动实例(m1.small,RAM GB,总磁盘20GB).
但现在它显示出来了
Error: Unable …
Run Code Online (Sandbox Code Playgroud)我已经按照 Icehouse 文档安装了一个 3 节点环境,我的 openstack 节点是在 CentOS 中使用 libvirt 构建为虚拟机的
http://docs.openstack.org/icehouse/install-guide/install/yum/content/basics-networking-neutron.html
-controller-node : 10.0.0.11 (management network)
-network-node : 10.0.0.21 (management network), 10.0.1.21 (data network)
-compute-node : 10.0.0.31 (management network), 10.0.1.31 (data network)
-external network : 192.168.125.0/24
-demo network : 172.30.1.0/24
Run Code Online (Sandbox Code Playgroud)
在我的网络节点中,外部 NIC 根据文档配置为没有 IP。(PROMISC="yes")
DEVICE="eth1"
TYPE="Ethernet"
ONBOOT="yes"
PROMISC="yes"
BOOTPROTO="none"
HWADDR="52:54:00:D3:92:E2"
UUID="7f8a9e99-fbd0-4c59-900f-2369c9e8f780"
Run Code Online (Sandbox Code Playgroud)
但是,添加网络服务后。 我无法在以下阶段ping 外部网络。
1)内部(网络节点上的租户路由器网关)->外部(外部geteway)
[root@network-node ~]# ping 192.168.125.254
PING 192.168.125.254 (192.168.125.254) 56(84) bytes of data.
From 192.168.125.54 icmp_seq=1 Destination Host Unreachable
From 192.168.125.54 icmp_seq=2 …
Run Code Online (Sandbox Code Playgroud) 我在openstack中子读了下面的代码.
class APIRouter(wsgi.Router):
@classmethod
def factory(cls, global_config, **local_config):
return cls(**local_config)
def __init__(self, **local_config):
# do something. Not using local_config
Run Code Online (Sandbox Code Playgroud)
我这里有两个问题.
从工厂代码我们可以知道它用于创建APIRouter
实例.但为什么我们需要呢?为什么我们不只是api_router = ApiRouter()
用来获取实例?
在__init__
和工厂,local_config
并global_config
没有使用.为什么我们在功能中定义它?
我想使用工厂而不是构造函数应该有一些优势.就像JAVA中的设计模式一样.我希望答案可以说明优势或原因.更好的一些exapmle
我花了最后6个小时阅读流行语,高级,高级文档/博客/文章/幻灯片,试图完全围绕OpenStack .我明白那个:
OpenStack是一个免费的开源云计算软件平台.用户主要将其部署为基础架构即服务(IaaS)解决方案.
但同样,这是一个非常崇高,高水平,有光泽的细节总结,对我作为一名工程师来说并没有什么意义.
我认为我得到了基本的概念,但是想要反省我的理解,另外我很难看到关于OpenStack组件主题的"穿越树林".
我的理解是OpenStack:
所以,如果到目前为止我所说的关于OpenStack的任何内容都不正确,请先纠正我!
假设我或多或少是正确的,我对各种OpenStack组件的理解是它们实际上只是API并且需要开源社区提供具体的实现:
以上,我相信所有组件都是API.但是这些API必须具有对OpenStack部署者/维护者有意义的实现.所以我想象有多个Neutron API提供商,多重Nova API提供商等等.但是,在今天早上审阅了所有官方文档之后,我找不到这些API的提供者.这让我感到恶心,就像我从根本上误解了OpenStack的组件一样.有人可以帮我点点滴滴吗?
virtualization cloud-platform openstack openstack-nova openstack-neutron
openstack ×7
devstack ×3
openvswitch ×3
composition ×1
factory ×1
floating-ip ×1
plugins ×1
python ×1