查看原文
其他

自食狗粮 - 通过RDO管理一个异构集群(x86+ppc64le) 提供虚机服务

2016-09-24 谭晟 云技术实践

本文转载自:https://www.ibm.com/developerworks/community/blogs/5144904d-5d75-45ed-9d2b-cf1754ee936a/entry/20160701?lang=en

 

 

适宜读者:拥有一年及以上运维经验

背景知识:基础运维常识,Openstack概念

 

0. “狗粮”?

Eating your own dog food (或略称为dogfooding,直译为"吃自己的狗粮) 是一句俚语,指的是企业(尤其是IT企业)在内部使用自家产品。

 

1. 背景

目前,本人所在的开发团队从事x86和Power平台上的Linux内核、虚拟化以及Openstack相关的开发。在工作的过程中,开发人员会根据需要自己在团队拥有的若干台服务器上自行建立虚拟机供自己使用。 由于没有统一的管理,会出现各种问题:


  • 对于团队经理来说,无法随时了解当前的资产(如服务器)的状态和利用率,无法及时的判断是否 需要进行硬件的扩容等。

  • 对于团队的IT负责人,无法随时了解服务器及其中的虚拟机的各项指标,难以进行集中式的管理

  • 对于开发人员来说,每个人都需要通过命令行工具自己手动创建自己所需的虚拟机,过程繁琐, 影响工作效率。

  • 由于所有的开发人员都拥有root权限和带外管理的工具(如支持IPMI标准的IMM/AMM/FSP)密码, 一个人的误操作(如重启服务器)有可能影响其他人的工作

  • 团队中的各项公共的服务(如HTTP服务器、Pipeline)由不同的人维护,由于个人使用的技术不同,各项服务的构建方式都不同,维护起来麻

 

2. 目标

目前我所在组的mission之一是推动RDO社区在ppc64le架构上面的开发工作,从而提供给PowerLinux及OpenPOWER客户或合作伙伴一种便利的方式搭建ppc64le架构上面的IaaS层。针对目前工作中的现状,跟老板商量之后团队决定利用现有服务器搭建一个小的私有云,能达到以下一些目


  • 算是在一个Production环境实测RDO在x86+Power架构上的互操作

  • 管理目前团队目前的硬件设备(服务器),能监测硬件设备的状

  • 通过浏览器或者命令行工具自动的创建和管理虚拟

  • 提供不同的操作系统和不同硬件架构的虚拟

  • 为开发人员提供测试新技术方式

  • 尽量使用开源的软件和技术构建

换句话说,我们打算吃自己的狗粮了。

 

3. 架构

3.1 硬件与网络资源

目前团队拥有的硬件设备有:

  • 数据中心1中5台x86_64架构的服务

  • 数据中心2中2台Power8服务器

所有的服务器都只有一块网卡。

此外,由于安全策略的限制,可供虚拟机使用的内网IP地址不能访问外部网络。

团队拥有的设备的规划如下:

      

机器代号

架构

位置

基础架构云角色

X1

x86_64

数据中心1

控制节点、网络节点、HTTP/S

SH代理服务器

X2

x86_64

数据中心1

计算节点、

X3

x86_64

数据中心1

计算节点、

X4

x86_64

数据中心1

计算节点、

X5

x86_64

数据中心1

暂不加入Openstack

P1

Power8

数据中心2

计算节点

P2

Power8

数据中心2

暂不加入Openstack

 

各台服务器的物理连接情况如图3-1  

 

图3-1

 

3.2 部署Openstack

Power Linux提供了跟x86架构的Linux几乎一样的体验,加上使用Libvirt(或其衍生的工具,比如virsh)管理PowerKVM和管理x86平 台的KVM也一样,实际上部署这样一个异构(x86_64 + Power架构)的Openstack的过程跟一个普通的x86_64架构过程很接近。一个熟悉Openstack部署的IT管理员可以很快的上手完成相关工作。

 

3.2.1 准备

部署Openstack各项服务之前需要做如下准备

  • 安装操作系统(由于我们的工作平台就是CentOS,所以很自然选择

    Cent OS 7.2,Power平台选择ppc64le架构的pCent OS 7.2)

  • 配置Openstack Mitaka版本的yum源(对于Power服务器,需要准备好部分

    rpm包之后配置本地源

  • 在X1机器上安装packstack工具


3.2.2 部署和配置Openstack服务

通过packstack生成配置输入文件(answer file),经过修改确认之后再使用packstack工具部署Openstack服务。 其中需要注意的点包括


  • 由于只有一块物理网卡,配置时管理网络和数据网络无法分

  • 网络虚拟化技术选择Open vSwitch(因Cent OS 7的内核版本低于Linu

    xBridge所需的版本,macvtap相关配置不熟悉)

  • 网络类型选择VxLAN (也可以选择GRE)

  • 此阶段只安装Packstack默认选择的服务(Nova, Cinder, Glance, Neutron, Ceilometer, Keystone, Horizon)

  • Nova服务中虚拟CPU的分配比例为16,虚拟内存比例为1.2,虚拟硬盘比例为1,将来可能会做出完成部署之后,进行以下的配置

  • 为各项目组建立相应的项目(project/tenant

  • 为每个项目配置私有的网络(包括路由器)以使用Floating IP

  • 为每个团队成员建立各自的账号

  • 为团队中的管理员设置管理权限配置每个项目的资源配额(主要包括CPU、内存、硬盘、Floating IP)

  • 准备常用的镜像将之前服务器上需要保留(迁移)的虚拟机硬盘转为镜像,导入Openstack云并重新建立新的虚拟


关于镜像文件这里再多提一句。Ubuntu、Fedora等主流的Linux发行版都直接提供Power架构的cloud镜像,包括大端(ppc64)和小端(ppc64le或ppc64el)。对于没有提供镜像的发行版(如Cent OS),也可以很顺利的根据OpenStack Virtual Machine Image Guide的内容使用相应的安装光盘镜像来制作。

安装好Openstack之后网络节点的架构如图3-2所示 

图3-2

计算节点的架构如图3-3所示 

图3-3

 

3.2.3 进行相关配置

由于公司内部安全策略要求,虚拟机使用的Floating IP不能访问企业外部网络,虚拟机不能直接进行更新软件包、下载软件等操作。为此,在X2服务器上安装Squid软件作为HTTP服务器。为使用SSH代理,在各台虚拟机上配合proxytunnel工具使用。


为了方便开发者使用,将以上配置集成到自制的系统镜像之中。此外,由于镜像中关于网络的配置不能保留,准备好包含配置DNS服务器、yum源、用户名密码等内容的cloudinit脚本作为例子供组内成员使用。


到这里,供团队使用的异构Openstack云就搭建完成了。目前team正在和RDO社区密切合作推动ppc64le架构下相关dependency package的delivery,有兴趣做早期尝试的朋友可以联系笔者获取测试包。

 

 

 

作者:谭晟

邮箱shtanshATcn.ibm.com(AT@)

 

内容声:本文仅代表作者的个人观点,IBM立场、策略和观点无关。文中专业名词因翻译原因,表述中难免存在差异。如有疑惑,请以英文为准。同时数据来源于实验室环境,仅供参考。如果您对我们的话题感兴趣,请通过电子邮箱联系我们


KVM云社区微信群加入,联系北极熊:


KVM社区QQ群,99.99%纯技术交流气氛

QQ 1群:434720759(已满

QQ 2群:131961942,加入密码大写KVM

1000人VMWare技术交流群494084329,加入密码小写vm

OpenNebula QQ群:495571573 加入密码Nebula

2000人OpenStack开发纯技术群: 334605713 加入密码nova

Cloudstack纯技术交流群:515249455密码cs

2000人桌面云行业讨论: 484979056 加入密码大写VDI

2000超融合行业讨论群:65779632 加入密码大写HC

2000人云技术招聘求职群: 279875515 加入密码hr



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存