在设置我们的 OpenStack 环境时,我遇到了一个问题,即阻止实例联系在主机上运行的服务器。元数据服务(暴露 HTTP API)在主机的 8775 端口上运行,OpenStack 网络代码添加以下 DNAT 规则以通过端口 80 上的特殊地址授予访问权限:
-A PREROUTING -d 169.254.169.254/32
-p tcp -m tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8775
Run Code Online (Sandbox Code Playgroud)
实例通过本地桥接设备连接到主机,并169.254.169.254分配给lo.
虽然此规则成功匹配来自尝试访问的来宾实例的数据包http://169.254.168.254/,但它们永远不会到达侦听服务。
用基本上等效的 REDIRECT 替换此 DNAT 规则可使一切正常工作:
-A PREROUTING -d 169.254.169.254/32
-p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8775
Run Code Online (Sandbox Code Playgroud)
我试图理解为什么 REDIRECT 起作用而 DNAT 失败。从 iptables 文档中不清楚该DNAT规则是否适用于本地目标流量。我希望这里有人可以提供权威的答案,最好有文档支持,或者可以建议我的配置中可能有什么问题阻止了 DNAT 规则按预期工作。
在尝试使用 OpenStack调试网络问题时,我遇到了最奇怪的事情。我正在虚拟机之间进行 ping 测试。如果我在运行 nova-network 的节点上的网桥接口上执行了“tcpdump”,ICMP 请求数据包才会到达目标主机,该节点会转发数据包。如果我停止在该接口上执行 tcpdump,则不再看到请求到达主机。
一般来说,如何/为什么在 Linux 网桥接口上执行 tcpdump 会影响数据包是否被转发?
我对所有这些 *aaS 的东西都很陌生,目前我正试图围绕概念以及事物的基本工作原理。
目前让我有点困惑的是各种产品之间的差异,尤其是以下三种:
最后一个对我来说最容易掌握:它基本上是一个管理应用程序和服务实例的软件,因此您可以将自定义开发的应用程序推送到它并告诉它在多个实例上运行它,因此 Stackato 负责如何分发应用程序。
但现在我已经读到 Stackato 与 CloudFoundry 相关(参见http://strongloop.com/strongblog/in-the-loop-stackato-a-platform-as-a-service-that-you-can-deploy-并管理自己/)。它们基本上是两种彼此相似的产品,您可以相互交换吗?一个是另一个的分支(如詹金斯和哈德森),或者它们有什么关系?
然后我读到您可以在 OpenStack 之上安装 CloudFoundry。我最初认为 OpenStack 基本上只是另一种选择,但显然不是,而是更底层的东西。
任何人都可以对此有所了解,并给我一些提示吗?
我目前有一台运行 FreeNAS 的家庭服务器 (HP N40L),为我的家庭提供一些基本的东西,比如文件服务器、媒体流和一些虚拟化应用程序 + 一个 Windows XP 虚拟桌面。
它运行良好,但该软件总是落后于基于 Linux 的系统上可用的软件。我已经尝试过 OpenMediaVault 和其他一些,它们看起来都不错,但我真的很喜欢 OpenStack 随心所欲地设置和拆除服务的能力(另外,Web 管理控制台非常好)。我可以直接使用 Docker 解决方案,如果结果证明 OpenStack 对我的设置来说太过分了,我会这样做。
那么,鉴于以下情况,为家庭服务器运行 OpenStack 是否有意义:
我特别担心冗余存储。我目前在镜像阵列中使用 ZFS。OpenStack 使用不同的存储方案。如果我在一台机器上使用 OpenStack 的存储,我的数据会不会受到硬盘驱动器故障和 bitrot 的影响?
我建立了一个 OpenStack Folsom (2012.2) 多节点、单网络基础设施。一切都运行良好,实例在任何计算节点上运行良好,私有网络就像一个魅力,所有实例都可以从外部通过浮动 IP 访问并且可以到达外部。
但是当试图通过它的浮动 IP 执行从 VM 到自身的网络请求时,它失败了。
ping 和 ssh 都不起作用。
安全组都是开放的。
Ping 通过浮动 IP 从一个 VM 到另一个 VM 工作,但 SSH不行。
一个例子的一些数据
控制器上的 iptables 条目(关于 10.1.100.4/10.0.0.13)(包括网络在内的所有服务):
-A nova-network-2.7-OUTPUT -d 10.1.100.4/32 -j DNAT --to-destination 10.0.0.13
-A nova-network-2.7-PREROUTING -d 10.1.100.4/32 -j DNAT --to-destination 10.0.0.13
-A nova-network-2.7-float-snat -s 10.0.0.13/32 -o eth0 -j SNAT --to-source 10.1.100.4
Run Code Online (Sandbox Code Playgroud)
计算节点上的 iptables 条目:
关于 10.1.100.4/10.0.0.13:
-A nova-compute-2.7-local -d …Run Code Online (Sandbox Code Playgroud) 我目前正在准备 CentOS 7 和 Ubuntu 14.04 的 OpenStack 就绪映像。
对于“自动化”,我使用Packer,它由您通过 JSON 模板提供。Packer 然后使用您指定的虚拟化开始安装(在我的例子中是 qemu)。
安装后,Packer 和您提供的脚本通过 SSH 配置虚拟机。
状态:
我想在这里实现的目标:
问题:
这是行不通的。如果我只安装cloud-initorcloud-init和cloud-utilsorcloud-init和cloud-utilsand都没有关系cloud-utils-growpart。cloud-init除了通过 ssh 启用 root 登录之外,我不会更改默认配置。
除了这一行,我的 cloud-init 配置是标准配置
disable_root: 0
问题:有人已经这样做了吗?我似乎找不到一个有效的例子
我有基于 Openstack Icehouse 版本的云系统。现在我想在现有的云中测试新版本的 Openstack (Juno)。所有主机和访客都使用 Ubuntu 14.04 作为操作系统。KVM 是我正在使用的虚拟机管理程序。
因此,我在云上创建了虚拟机,并在其上安装了 Openstack Juno 的组件。但我在这些虚拟机上遇到网络连接问题。
Openstack 安装指南说:
如果您将 OpenStack 节点构建为虚拟机,则必须配置虚拟机管理程序以允许外部网络上的混杂模式。
但它没有说明这是如何完成的。我也无法通过谷歌搜索找到这些信息。我尝试了很多方法,例如使用命令在各种接口上启用混杂模式:ifconfig eth0 promisc但没有任何效果。那么如何在我的虚拟机管理程序上启用混杂模式呢?
编辑:使用时ifconfig我看到我的接口处于 state UP BROADCAST RUNNING PROMISC。另外,我在物理主机上安装之前也使用过类似的安装,没有任何问题。
我正在尝试减小qcow2容器的虚拟大小,以便它可以适应具有 10GB 磁盘的 openstack 风格。
root@node-10:~# qemu-img info zztop.qcow
image: zztop.qcow
file format: qcow2
virtual size: 80G (85899345920 bytes)
disk size: 2.6G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
Run Code Online (Sandbox Code Playgroud)
我按照此处的指南并用零填充磁盘的末尾,然后运行qemu-img convert -O qcow2. 然而,生成的 qcow2 保留了相同的磁盘大小和虚拟大小。
如何降低 qcow2 的虚拟大小,使其适合小于 80GB 的 openstack 风格?
检查使用列表中的音量
openstack volume list
Run Code Online (Sandbox Code Playgroud)
将状态设置为available卷
openstack volume set --state available [volume id]
Run Code Online (Sandbox Code Playgroud)
调整音量大小
openstack volume set --size 40 [volume id]
Run Code Online (Sandbox Code Playgroud)
再次检查尺寸和状态
Openstack volume show [volume id]
Run Code Online (Sandbox Code Playgroud)
状态变为in-use,大小变为 40。它附加到 /dev/vda。
然而,登录虚拟机,使用df -h检查,没有找到/dev/vda。
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 1.8G 19G 9% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 17M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
tmpfs 379M 0 379M …Run Code Online (Sandbox Code Playgroud)