我是一名 Web 开发人员,但我也对一些管理任务感兴趣。因此,从纯管理转向开发运营的新举措对我来说很方便。
无论如何,我有一些问题要将一些事情放入关系中。也许没有,所以我想寻求帮助澄清。
基本上,我想关联的是四种类型的软件(根据我的理解)。确切的产品并不重要,您可以放置任何类似的软件作为替代:
问题 1:我的解释是对的,还是我对这些消费的某些(或全部)有误?
问题 2:我如何混合所有这些工具?这有什么意义吗?
在我的想象和我的理解中,你可以去
这样对吗?如果是这样,你能给我一个关于如何开始使用所有这些的建议(同时使用很多,我还不知道从哪里开始)?
用户数据存储在两个相当大(>1 PB)的 OpenStack Swift 存储集群上。让它们成为Cluster A和Cluster B。
此外,还有几个PoP需要与该数据进行交互。这些 PoP 中的服务器实际上是无盘的,这意味着没有用户数据存储在它们上面,也没有下载到它们。PoP 可以分为一般的世界区域(例如北美、南非、中欧等)。
一些 PoP 与任何集群的 Swift 端点相距很远,从而引入了不受欢迎的延迟。为了在一定程度上缓解这种情况,我想在每个区域中设置一个缓存网关服务器,它将缓存 r/w 请求到最近的集群。
目前,任何 PoP 中的客户端都通过永久安装的swift 虚拟文件系统访问用户数据,这是一个 FUSE 模块,将 Swift 对象存储安装为块设备(或多或少)。然而,svfs 并不是那么稳定,在未来,客户端应该通过 NFS 访问缓存服务器。
这是所需架构的一个分支的图:
+------------------+ +------------------+ NFS +------------------+
| Cluster A | SVFS | Region 1 Cache +----------> R1 PoP a Client |
| +----------------> | | |
|Persistent Storage| |Ephemeral Storage+----+ |Generates R/W Load|
+-----------------++ +------------------+ | …Run Code Online (Sandbox Code Playgroud) 每个用户每天创建和销毁 15 个以上的 VM。VM 在公司内部的 OpenStack 云中创建。
每次为新虚拟机分配一个先前已分发的 IP 地址时,用户都会收到可怕的主机密钥验证失败错误。这是因为 ssh 密钥与用户known_hosts文件中的 IP 地址不匹配。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xxxxxxxxxxx
Please contact your system administrator.
Add correct host key …Run Code Online (Sandbox Code Playgroud) 通常,https : //serverfault.com/a/268727/126950:
但是,http : //docs.openstack.org/folsom/openstack-ops/content/snapsnots.html说
在 OpenStack 中,实例快照是一个映像。直接上传到glance 的图像与通过快照创建的图像之间的唯一区别在于,通过快照创建的图像在glance 数据库中具有附加属性。
那么为什么 OpenStack 将图像与快照区分开来呢?
我正在尝试使用多 VM vagrant 环境作为部署 OpenStack 的测试平台,并且在尝试从一个 VM 到 VM-inside-of-a-VM 进行通信时遇到了网络问题。
我有两个 Vagrant 节点,一个云控制器节点和一个计算节点。我正在使用仅主机网络。我的 Vagrantfile 看起来像这样:
Vagrant::Config.run do |config|
config.vm.box = "precise64"
config.vm.define :controller do |controller_config|
controller_config.vm.network :hostonly, "192.168.206.130" # eth1
controller_config.vm.network :hostonly, "192.168.100.130" # eth2
controller_config.vm.host_name = "controller"
end
config.vm.define :compute1 do |compute1_config|
compute1_config.vm.network :hostonly, "192.168.206.131" # eth1
compute1_config.vm.network :hostonly, "192.168.100.131" # eth2
compute1_config.vm.host_name = "compute1"
compute1_config.vm.customize ["modifyvm", :id, "--memory", 1024]
end
end
Run Code Online (Sandbox Code Playgroud)
当我尝试启动一个(基于 QEMU 的)VM 时,它在计算 1 上成功启动,并且它的虚拟网卡 (vnet0) 通过桥接器 br100 连接:
root@compute1:~# brctl show 100
bridge name bridge …Run Code Online (Sandbox Code Playgroud) 我的初衷是为openstack创建centos镜像。虽然我直接用kvm做了,但仍然想知道错误。
正在使用本手册来完成我的任务。
在这个命令之后:
# virt-install --virt-type kvm --name centos-6.4 --ram 1024 \
--cdrom=/data/isos/CentOS-6.4-x86_64-netinstall.iso \
--disk /tmp/centos-6.4.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel6
Run Code Online (Sandbox Code Playgroud)
我有一个错误:
ERROR Error in network device parameters: Virtual network 'default' does not exist: Network not found: no network with matching name 'default'
Run Code Online (Sandbox Code Playgroud)
不用说,我正在使用RDO。默认情况下,我没有为 libvirt 预先配置任何网络设备。问题是哪些网络设备可用?或者如果没有,如何创建一个?也许 RDO 在 libvirt 网络上有不同的方法?
我正在测试 Openstack,我想知道如何了解实例(虚拟机)内的资源利用率。
Openstack 在我的测试环境中使用 kvm、qemu 和 libvirt。有没有办法在不登录机器的情况下获取这些统计信息(CPU、内存、交换、网络流量)?我想从管理程序或通过 libvirt 收集这些数据。
有什么建议?
在设置我们的 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 会影响数据包是否被转发?
我目前有一台运行 FreeNAS 的家庭服务器 (HP N40L),为我的家庭提供一些基本的东西,比如文件服务器、媒体流和一些虚拟化应用程序 + 一个 Windows XP 虚拟桌面。
它运行良好,但该软件总是落后于基于 Linux 的系统上可用的软件。我已经尝试过 OpenMediaVault 和其他一些,它们看起来都不错,但我真的很喜欢 OpenStack 随心所欲地设置和拆除服务的能力(另外,Web 管理控制台非常好)。我可以直接使用 Docker 解决方案,如果结果证明 OpenStack 对我的设置来说太过分了,我会这样做。
那么,鉴于以下情况,为家庭服务器运行 OpenStack 是否有意义:
我特别担心冗余存储。我目前在镜像阵列中使用 ZFS。OpenStack 使用不同的存储方案。如果我在一台机器上使用 OpenStack 的存储,我的数据会不会受到硬盘驱动器故障和 bitrot 的影响?
openstack ×10
libvirt ×2
networking ×2
qemu ×2
vagrant ×2
bridge ×1
centos ×1
chef ×1
disk-cache ×1
docker ×1
icmp ×1
iptables ×1
linux ×1
lxc ×1
monitoring ×1
nat ×1
nfs ×1
snapshot ×1
ssh ×1
ssh-keygen ×1
ssh-keys ×1
tcpdump ×1
virtualbox ×1