Sep 172014
 

今天看到朋友推荐的一篇IBM的文章http://www.ibm.com/developerworks/cn/cloud/library/1401_zhaoyi_openswitch/index.html

文章内容很好,如果我只是收藏起来,那就实在是太浪费,还是动手练习一次,好好补一下我的网络。还是用UnitedStack的UOS,创建一个虚拟机来完成全部的试验。

文章就一个小笔误,把ns2写成ns3。外面很多转载的文章,都没注明出处,搞的以为是原创。如果错误都一样,就有点不好意思。

Continue reading »

Sep 102014
 

有朋友说,让别人对着完全不理解的文档进行命令操作,是一种非常不人道的行为。其实我也认同,不过我整理安装文档的时候,为了减少篇幅,很多时候,文字和解析很少,其实老外的文档,解析的很清楚。

从Essex版本开始学安装,一直到今天的Icehouse版本,整个安装过程,其实变化不算太大,装了次数多了,以前很多不理解的东西,就慢慢理解了。希望这篇说明,可以让大家安装过程了解的更多。如果有写的不对的地方,麻烦指出,我可不是开发者,也不是搞运维的,很可能会有些低级错误。

网络

当你准备测试Openstack的时候,你最困惑的就是网络。你的实际环境和文档的网络环境,很难做到一致。一旦不一致,你操作过程,就需要对很多网络相关的参数进行修改,这样就很容易导致出错。

那么利用虚拟化来测试,调整网络环境和文档一致,不过由于Openstack的多节点安装,经常是需要启动多个虚拟机,本地的虚拟化,有时候是力不从心。

能不能在IaaS下测试Openstack,能不能在Openstack下测试Openstack呢?这是我一直都希望去验证的问题。由于国内一直都没有Openstack公有云。现在UnitedStack推出了UOS公有云,我也就可以很好的验证我的想法。

Snap1

OpenStack官方文档,也是使用这个网络。大家注册一个UOS账号,https://www.ustack.com/ 目前注册用户,会获得10元的充值,应该可以做很多事情。

上面的网络拓扑,

  • 控制节点,2块网卡,
  • 网络节点,3块网卡
  • 计算节点,2块网卡
  • 存储节点,1块网卡

详细每块网卡的用途,大家可以去看安装文档,上面有介绍。这里想说的是,计算节点和存储节点,是不需要公网访问的,不过你安装软件的时候,需要连接外网来安装,在IaaS下,你很方便实现了这个需求,装完后,再把网络断开。

官方文档的图

Snap2

上面这个图,有点小问题,就是控制节点,没有外网,这样api接口就无法访问。

 

文档

目前OpenStack官方的文档,已经是很详细了。看官方文档,是了解Openstack的一个最佳途径。

官方文档地址:http://docs.openstack.org/

github上有朋友整理官方文档,加上了好几个图,看起来更加清晰 https://github.com/ChaimaGhribi/

我对着上面两个文档,也整理了一遍安装文档,大家可以在blog上看到。swift和trove没有覆盖外,剩下的都测试了一遍。

操作系统

很多人搞Openstack的,比较纠结就是用啥操作系统,CentOS还是Ubuntu。尤其是在国内,CentOS,redhat系列的用户比较多。

对于学习和了解OpenStack来说,Ubuntu会比较方便,文档和资料也比较多。生产中,用啥你自己决定,可以考虑选择更加严谨的Redhat系列。不过Redhat上的OpenStack,很多新的功能并不支持,所以对你学习,并不太好。

 

Mysql

Openstack基本所有的组件都需要用到数据库,那么一般来说,mysql就安装在控制节点上。你可以把mysql单独安装在一个节点上,如果mysql单独安装,那么你需要在控制节点上安装 mysql for python的包,这样python才能访问到mysql。对于Openstack来说,mysql的压力并不算大。

mysql的群集,其实这并不是Openstack本身的问题,mysql的高可用,是要靠Mysql来解决。

数据库的HA,我的理解就两种,

  • Active/Passive 冷备  一般作为standby的从节点的服务是不启动的,使用DRBD在主从节点之间做镜像然后再结合心跳heartbeat用pacemaker作切换。
  • Active/Active 热备  可用Galera,可同时对主从节点进行读写,主从节点的数据一致性由Galera来异步保证。

目前各大厂商都在都比较看好Active/Active方案,采用Galera 来实现。大家都在测试这个。经过了2年,应该已经成熟很多。

我个人一直都对这种数据库HA有所保留,因为这种HA出现问题的概率,远远大于那台机器硬件出现问题。github好几次出现故障,都是因为采用了热备。所以如果一定要采用HA,那么还是建议考虑采用冷备。

大家可以看看这篇文章 http://blog.csdn.net/quqi99/article/details/9392789

各个组件访问mysql,都是通过管理网络,如果你把mysql单独一个节点,那么放在管理网络里就可以。

RabbitMQ

消息队列,是Openstack的一个核心组件,基本所有组件都会和他进行交互。当你的计算节点数量超过100台,那么你最先遇到瓶颈,肯定是消息队列。

你的生产环境,可以考虑把RabbitMQ独立部署,也是放着管理网络就可以。rabbitmq的默认用户和密码是:guest guest,你可能需要修改。

对于OpenStack来说,目前支持3种消息队列,qpid,RabbitMQ,ZeroMQ。qpid,你基本可以放弃,这是Redhat推动,不过后来Redhat自己都放弃了。ZeroMQ比较理想,不过目前Openstack社区支持不太好。100个计算节点,RabbitMQ是完全可以顶住的。

RabbitMQ的群集,应该是Active/standby, 无法解决规模的问题。

NTP

同步时间服务,对于Openstack来说,是非常重要的,不然很多莫名其妙的问题。所以必须所有的机器的时间是同步的。

默认文档把控制节点变成NTP服务器,所有的节点都和他进行同步时间。

Keystone

这是Openstack的第一个组件,由于习惯,大家都习惯有一个控制节点,大家都默认把安装keystone的节点,作为控制节点。Openstack由于非常灵活,到底控制节点可以安装那些服务,完全是由你决定。所以不同的规模,需求也是不一样的。

keystone需要使用mysql,所以你需要在mysql里创建一个keystone的数据库,存放相关数据。

这里面需要理解的是

admin_token=ADMIN

这个admin_token,相当于超级管理员,有了这个token,你什么事情都可以做。所以这个token需要保密。

export OS_SERVICE_TOKEN=ADMIN
export OS_SERVICE_ENDPOINT=http://10.0.0.11:35357/v2.0

你可以做任何的操作

export OS_USERNAME=admin
export OS_PASSWORD=admin_pass
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://10.0.0.11:35357/v2.0

上面两个环境变量的设置,都可以创建用户,一个是使用token,一个是使用密码。

当我们使用token初始化系统,创建了admin租户,admin用户,设置admin密码后,我们出于安全的考虑,就不使用token,而使用admin账号相关信息进行操作。如果你使用token创建keystone的各种用户,endpoint,你会发现也是没啥问题的。

环境变量

其实这个是linux的知识,设置变量,是为了你输入命令可以更加简短,不需要输入那一长串。让环境变量失效,你可以unset,或者退出ssh,再登录。

网络

Openstack的网络,有3个,public,admin , internal,这3个网络,可以是3个单独的网段,你也可以使用1个网络,通常来说,都会使用2个网络

  1. public network , 就是api的访问到的网络
  2. admin和internal,这两个网络会使用同一个网络。

publicurl,就是所有组件的公网访问的API地址。

Openstack的组件的大概原理是:我请求一个镜像,他会先访问keystone,获取到glance的api的地址,也就是glance public URL,我再去glance public的url请求。

admin和internal url。这是管理使用,用horizon为例,你管理员登陆的时候,你是可以修改所有用户的密码,那么他admin url发出请求。如果我的Dashboard,无法访问到admin 网络,那么这些功能是无法使用的。

endpoint

组件的endpoint,就是告诉客户端他的IP地址和版本号。看一个glance的endpoint,理解一下

keystone service-create --name=glance --type=image --description="OpenStack Image Service"
keystone endpoint-create \
--service-id=$(keystone service-list | awk '/ image / {print $2}') \
--publicurl=http://192.168.100.11:9292 \
--internalurl=http://10.0.0.11:9292 \
--adminurl=http://10.0.0.11:9292

当我们把glance api装在控制节点上,所以public的IP,就是控制节点的公网IP地址。剩下的两个网络,就是管理网络。

加速你是把glance单独部署,glance api,不在控制节点上。那么这里的IP就需要调整。public IP,就是glance服务器的公网IP,intelnal和admin的IP,就是glance节点的管理网络IP。

Glance

如果你把glance安装在控制节点,其实很简单,需要做的事情不多。对着文档做就可以。

 

 

Sep 022014
 

说起来比较惭愧,整天吹API的重要性,其实我自己没怎么去调用过API,虽然我是知道web都是通过调用API来实现各种功能的。

测试API或者简单使用一下,可以用curl命令。下面就用这个来学习一下。

主要目的是修改网卡的port的属性,默认只是一个ip和mac地址可以访问,通过curl方法,添加多个IP和mac地址,通过一个port,访问网络。

Continue reading »

Sep 012014
 

其实这篇文章,是UnitedStack UOS安装多节点OpenStack延续,不过那篇文章太长了,所有就把heat的安装独立出来一篇文章。

必须强调,这几篇文档,都是翻译老外的文档完成https://github.com/MarouenMechtri/OpenStack-Heat-Installation/blob/master/Create-your-first-stack-with-Heat.rst

其实我是无比佩服他们,那么长的文档,我居然没发现一个错误。这要花费多少时间才能做到这种程度。

等我完全搞定在UOS下测试,一定联系这位朋友,告诉他的好消息,在OpenStack下安装OpenStack。

前段时间,有朋友微博发heat工程师招聘,2w的推荐费,看的真的很激动,牙痒痒,后悔怎么不早点让弟兄们开始研究这个呢?真的很后悔,所以今晚好好把heat安装整理一遍。

Heat,其实对于很多Openstack开发工程师,都是比较陌生的一个东西。不过Openstack的未来,很多故事都是需要Heat的完成,例如所谓的弹性扩展,没有Heat,是搞不定的。最热门的App Store,其实都是要考Heat去实现。这也就为啥大家都在下注Heat。当你的IaaS平台稳定后,你感觉还是无法满足你的需求,还是很麻烦,那么你就需要Heat,帮助你减轻负担。

Continue reading »