Loading... <p>OpenStack是一种免费的开源平台,帮助服务提供商实现类似于亚马逊EC2和S3的基础设施服务。OpenStack有两个主要部分——Nova,起初是为NASA的计算处理服务而开发;Swift,是Rackspace开发的存储服务组件。Rackspace称其目标是推动互操作服务的发展,或者说是允许客户在云服务提供商之间迁移工作量,使其不被锁定。</p> <p>Nova提供虚拟计算服务,Swift提供存储服务,Glance提供<span class="external-link"><a class="no-external-link" href="http://www.linuxde.net/tag/%e8%99%9a%e6%8b%9f%e6%9c%ba" target="_blank"><i data-feather="external-link"></i>虚拟机</a></span>镜像的注册、分发服务。</p> <p>他们之间的关系可以用这个简图来表示:</p> <p><img alt="OpenStack" src="http://www.linuxde.net/usr/uploads/2011/11/OpenStack_1.jpg" /></p> <h5>1. OpenStack能够做什么</h5> <p>OpenStack能帮我们建立自己的IaaS,提供类似Amazon Web Service的服务给用户:</p> <li>普通用户可以通过它注册云服务,查看运行和计费情况 </li> <li>开发和<span class="external-link"><a class="no-external-link" href="http://www.linuxde.net/category/linux_operation_and_maintenance_management_technology" target="_blank"><i data-feather="external-link"></i>运维</a></span>人员可以创建和存储他们应用的自定义镜像,并通过这些镜像启动、监控和终止实例 </li> <li>平台的管理人员能够配置和操作网络,存储等基础架构</li> <p><img alt="OpenStack" src="http://www.linuxde.net/usr/uploads/2011/11/OpenStack_2.jpg" /></p> <h5>2. OpenStack Compute(Nova)的软件架构</h5> <p>下图是Nova的软件架构,每个nova-xxx组件是由python代码编写的守护进程,每个进程之间通过队列(Queue)和<span class="external-link"><a class="no-external-link" href="http://www.linuxde.net/tag/%e6%95%b0%e6%8d%ae%e5%ba%93" target="_blank"><i data-feather="external-link"></i>数据库</a></span>(nova database)来交换信息,执行各种请求。而用户通过nova-api暴露的web service来同其他组件进行进行交互。Glance是相对独立的基础架构,nova通过glance-api来和它交互。</p> <p><img alt="OpenStack" src="http://www.linuxde.net/usr/uploads/2011/11/OpenStack_3.jpg" /></p> <h5>3. Nova各个组件的作用</h5> <p>nova-api是Nova的中心。它为所有外部调用提供服务,除了提供OpenStack本身的API规范外,他还提供了兼容EC2的部分API,所以也可以用EC2的<span class="external-link"><a class="no-external-link" href="http://www.linuxde.net/tag/%e7%ae%a1%e7%90%86%e5%b7%a5%e5%85%b7" target="_blank"><i data-feather="external-link"></i>管理工具</a></span>对nova进行日常管理。</p> <p>nova-compute负责对虚拟机实例进行创建、终止、迁移、Resize的操作。工作原理可以简单描述为:从队列中接收请求,通过相关的系统命令执行他们,再更新数据库的状态。</p> <li>nova-volume管理映射到虚拟机实例的卷的创建、附加和取消。 </li> <li>nova-network从队列中接收网络任务,然后执行任务控制虚拟机的网络,比如创建桥接网络或改变iptables的规则。 </li> <li>nova-scheduler 提供调度,来决定在哪台资源空闲的机器上启动新的虚拟机实例 </li> <li>Queue为守护进程传递消息。只要支持AMQP协议的任何Message Queue Sever都可以,当前官方推荐用RabbitMQ。 </li> <li>SQL database存储云基础架构中的各种数据。包括了虚拟机实例数据,网络数据等。 </li> <li>user dashboard是一个可选的项目。它提供了一个web界面来给普通用户或者管理者来管理、配置他们的计算资源。</li> <h5>4. Nova的硬件架构</h5> <p>Nova采用无共享、基于消息的架构,我们能安装每个nova-xxx组件在单独的<span class="external-link"><a class="no-external-link" href="http://www.linuxde.net/tag/%e6%9c%8d%e5%8a%a1%e5%99%a8" target="_blank"><i data-feather="external-link"></i>服务器</a></span>上,这样可以根据不同目的进行不同的配置安装:</p> <p><strong>单结点:</strong>一台服务器运行所有的nova-xxx组件,同时也驱动虚拟实例。这种配置只为尝试Nova,或者为了开发目的进行安装。</p> <p><img alt="OpenStack" src="http://www.linuxde.net/usr/uploads/2011/11/OpenStack_4.jpg" /></p> <p><strong>1控制节点+N个计算节点:</strong>一个控制结点运行除nova-compute外的所有nova-services,然后其他compute结点运行nova-compute。所有的计算节点需要和控制节点进行镜像交互,网络交互,控制节点是整个架构的瓶颈,这种配置主要用于概念证明或实验环境。</p> <p><img alt="OpenStack" src="http://www.linuxde.net/usr/uploads/2011/11/OpenStack_5.jpg" /></p> <p><strong>多节点:</strong>增加节点单独运行nova-volume,同时在计算节点上运行nova-network,并且根据不同的网络硬件架构选择DHCP或者VLan模式,让控制网络和公共网络的流量分离。</p> <p><img alt="OpenStack" src="http://www.linuxde.net/usr/uploads/2011/11/OpenStack_6.jpg" /></p> <h5>5. OpenStack的安装</h5> <p>OpenStack的安装是比较麻烦,可以参考官方文档进行: http://docs.openstack.org/diablo/openstack-compute/admin/content/ , 文档有一些地方没有更新到最新版本,会遇到一些小问题,推荐一个第3方脚本进行安装: http://devstack.org/ 它适合用来搭建实验环境。可以通过阅读这个脚本,同时配合官方文档来理解整个软件架构。</p> <p>同时通过<span class="external-link"><a class="no-external-link" href="http://www.linuxde.net/tag/ubuntu" target="_blank"><i data-feather="external-link"></i>Ubuntu</a></span>源安装的nova在实际使用过程中遇到一些小问题,都需要打补丁来解决,建议了解整个配置以后,可以改成从git上获取stable分支的代码进行安装,这样日后维护升级也比较方便。</p> <p>如果你需要从无到有搭建整个数据中心,推荐Crowbar实现自动化远程安装: https://github.com/dellcloudedge/crowbar 从裸机到可用系统只用在web界面点击几下即可完成,还自带各种SA常用功能(比如nagios监控等),不过这个东西也比较复杂,推荐有兴趣的SA们试用。</p> <h5>6. 遇到的问题</h5> <p>官方文档和devstack脚本基本上都是为了搭建实验环境写的,没有为生产环境做最佳实践的指导,在安装过程中遇到很多问题,比如:</p> <li>多节点部署的时候要用multi host参数 </li> <li>使用VLAN+硬件网关的时候做网络配置时候,需要指定dnsmasq_config_file来强制覆盖dnsmasq的网关配置 </li> <li>用KVM制作windows镜像的时候需要安装virtio驱动 </li> <li>通过Ubuntu源安装的Nova,在Ami格式的镜像启动的instance无法做snapshot,需要打补丁 </li> <li>通过Ubuntu源安装的Nova,在启用keystone进行身份认证的情况下,无法提供EC2的兼容API,也需要打补丁</li> <h5>7. Openstack 的各种资料</h5> <li>官网和wiki http://docs.openstack.org/ </li> <li>Devstack的脚本说明,对于了解如何配置各个组件非常有帮助 http://devstack.org/stack.sh.html </li> <li>Rackspace的参考架构,有很多很有用的信息,包括硬件,网络,软件配置等等,强烈推荐: http://www.referencearchitecture.org </li> <li>看你准备基于什么技术进行<span class="external-link"><a class="no-external-link" href="http://www.linuxde.net/tag/%e8%99%9a%e6%8b%9f%e5%8c%96" target="_blank"><i data-feather="external-link"></i>虚拟化</a></span>,KVM或者Xen的文档也是很有用的。</li> <h5>8. 展示</h5> <p>用dashboard管理虚拟机</p> <p><img alt="OpenStack" src="http://www.linuxde.net/usr/uploads/2011/11/OpenStack_7.jpg" /></p> <p>通过noVNC在web上连接到虚拟机</p> <p><img alt="OpenStack" src="http://www.linuxde.net/usr/uploads/2011/11/OpenStack_8.jpg" /></p> <p>来源:<span class="external-link"><a class="no-external-link" href="http://www.linuxde.net/2011/11/2040.html" target="_blank"><i data-feather="external-link"></i>http://www.linuxde.net/2011/11/2040.html</a></span></p> Last modification:October 6, 2023 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 如果觉得我的文章对你有用,请随意赞赏
One comment
学习了!openstack :wink: :wink: