May 232016
 

现在OpenStack项目越来越多,要想搞清楚每个项目具体用途是啥,就算对于我们OpenStack创业公司,有时候都是有点吃力。很很多好玩的东西,我们不知道,这是比较可惜的事情。

到底从哪个项目开始介绍,选了半天,终于选了这个项目Shaker,和我的名字很类似。开玩笑,是用我名字创建的项目,所以就必须认真学习。

靠一个人的力量的搞定那么多项目,其实也不现实。这次就把我九州云同事江军波 OpenStack应用实战之Shaker安装测试 转载过来。

项目介绍

在以前OpenStack做网络的性能测试是比较麻烦的,各种的网络场景,vlan,vxlan,Flat模式,L3,Dvr,各家厂商的SDN插件,这些场景的性能测试工作量,是非常庞大的,你都需要登录虚拟机里面,使用工具进行互相打压,并且把数据记录下来。这样手工出来的测试结果,很难让人信服。

Shaker项目是Mirantis发起,专门针对OpenStack网络的性能的测试工具。通过模拟不同的网络场景,通过heat的模板,创建虚拟机,并且在虚拟机里运行iperf,iperf3, netperf等工具来对网络进行自动化性能测试,并且把测试的结果用网页形式输出。

目前OpenStack的另外一个著名测试工具Rally, 也是Mirantis发起,对OpenStack进行整体的测试的一个工具,可以对OpenStack的功能,存储的性能进行压力测试,可以测试磁盘的IOPS,并且提供很好的web展示。

Rally和Shaker有各自的重点,两个工具结合起来,在OpenStack交付给用户的场景下,可以提供一份比较客观的验收报告。

环境说明

需要有一个可用的openstack环境,需要配置好heat服务,因为shaker会使用编排服务启动各种场景下的虚拟机,由于测试网络性能,所以计算节点需要两个以上,采用的neutron L3网络。

为了好说明,专门拿一台机器跑Shaker,其实安装在控制节点,也是可以的。控制节点也可以跑计算服务。

本文环境如下

角色 IP 备注
Controller 192.168.1.41 网络节点在上面
Compute1 192.168.1.42  
Compute2 192.168.1.43  
Shaker 192.168.1.43  

 

安装篇

在Shaker机器上 (CentOS 7.2)

安装Shaker项目,这里我把github的源替换成trystack.cn, 为了加快下载的速度。

git clone http://git.trystack.cn/openstack/shaker
cd shaker
pip install

制作镜像

这个环节其实是最容易出错,如果有已经做好的镜像,其实就可以跳过这一步。目前发现制作镜像出现错误都是因为网络原因导致,大家要留意网络。

设置环境变量,这个是需要admin的权限。

source ./keystonerc

你可以设置镜像的创建参数,etc/shaker.conf ,默认参数应该就够用。默认是采用ubuntu的镜像来进行测试

shaker-image-builder

heat,作为一个编排软件,日常其实很少用到,这次倒是体会了一次heat编排功能的强大,shaker-image-builder,大概需要完成的内容大概是:

  1. 创建路由器
  2. 创建内部网络,连接到路由器上,
  3. 把外网连接到路由器上,
  4. 创建一个专用Flavor shaker-flavor
  5. 下载一个ubuntu镜像,上传到glance上
  6. 通过镜像,创建一个虚拟机
  7. 通过cloud init 安装所有的测试工具
  8. 装完后,关机,做快照,上传到glance,镜像命名为shaker-imag
  9. 删除虚拟机。并且把第一次下载的ubuntu镜像,网络,路由都删除。

你的OpenStack就是多了一个镜像和一个Flaovr。

上面这些事情如果手工来完成,估计没1,2个小时是搞不定,而且很容易出错。shaker-image-builder就是调用Heat模板来完成。

https://github.com/openstack/shaker/blob/master/shaker/resources/image_builder_templates/ubuntu.yaml

上面最容易出错是第三步,路由器连接外网。你需要提前在你的OpenStack里,创建一个外部网络,heat通过代码检测出那个网络是外部网络,就接到路由器上,这样你创建的虚拟机才能联网。不然肯定就会出错。

日后其实可以考虑把做好的镜像提供出去,下载直接就可以使用。

制作镜像原理

shaker-image-builder这个命令底层就调用了一个python函数,shaker/engine/image_builder.py 中的 build_image 函数

shaker提供了三种制作shaker-image镜像的模板,centos、debian、ubutnu,默认使用ubuntu,可以使用 –image-builder-template 参数指定使用哪个镜像,使用哪个镜像对shaker来说都一样,shaker在乎的是镜像中的pyshaker-agent、iperf、netperf、flent工具,换句话说,你镜像中只要有这几个工具,啥系统都可以

build_image函数会创建名字为 shaker-flavor的flavor(1vcpu,512mb memory,3g disk),以及名字为shaker-image的glance镜像,shaker创建镜像底层使用的技术是heat,build_image函数读取 shaker/resources/image_builder_templates/ 目录下的模板文件,默认是ubuntu,然后由heat创建需要的network、router,下载原始镜像,然后通过cloud-init工具,安装shaker需要的工具,build_image函数会等待虚拟机关机,最后创建虚拟机的快照,上传到glance中

build_image函数创建镜像之前会检查glance是否存在名为shaker-imag的镜像以及名为shaker-flavor的flavor,如果已经存在,就不会再次创建了,所以不管使用哪个原始镜像创建shaker-image镜像,都只会创建出一个,例如第一次使用ubuntu,那么第二次使用centos,shaker-image-builder 命令会直接返回,不会继续。

测试

环境有限,只进行了如下简单测试,对一个tenant网络进行了测试 (scenario:openstack/full_l2),这个环境下,会在每个计算节点启动一个虚拟机,然后在虚拟机里面对tcp、icmp进行测试

source ./keystonerc
shaker --output output.json --verbose \
--server-endpoint 192.168.1.44:4000 --scenario openstack/full_l2

参数说明

–output 指定把raw格式的报告存放到哪个文件

–server-endpoint 这个ip地址和端口,是运行shaker命令的本机的ip地址和端口,端口随意,不冲突就好,虚拟机中的shaker-agent会连接到这个socket上,跟shaker命令通讯,由shaker告知需要测试的项目以及相关节点信息(如ip)

–scenario Shaker 项目提供多种场景的模板进行测试,详细可以查看https://github.com/openstack/shaker/tree/master/shaker/scenarios/openstack

我们例子使用的是full_l2.yaml 来进行测试。

测试原理

同样shaker也使用heat启动各种场景下的虚拟机,这个示例使用的是 openstack/full_l2 ,根据描述,shaker会启动成对的虚拟机(master/slave),每个虚拟机起在不同的compute节点上,在虚拟机中使用iperf、netperf工具测试

heat还是会按照一个基本流程,创建网络,路由,安全组,打开相应的端口。

根据结果生成报告

shaker-report –input output.json –report a.html

shaker-report 可以根据结果生成html格式的报告

shaker

 

Snap2

 

相关链接

https://github.com/openstack/shaker/
http://pyshaker.readthedocs.io/en/latest/

Apr 092016
 

OpenStack的Mitaka版本4月7号发布,这应该是OpenStack项目管理采用大帐篷后第一个版本,发布的形式也做了很多调整,已经没有统一的发布声明。

OpenStack项目的数量已经不是以前的10几个项目,在stackalytics统计的项目,就达到538个。要统一所有的项目在相同时间发布,还是有不少问题的。例如Fuel,kolla等安装部署项目,他们的测试都是需要基于上游的包来进行,目前大部分项目都已经进入bug修复阶段,本月份应该发布正式版本。

目前大家都是通过http://stackalytics.com/网站来了解各个公司的贡献的排名。OpenStack的贡献统计,有很多维度,从不同的维度,会得出不同的结果。

关于liberty的统计分析,大家可以参考 http://www.chenshake.com/openstack-liberty-community-statistics/

下面的数据截止2016年4月9日,在未来一个月内,数据应该还是会发生变化。

还是需要强调一下,做这个统计,目的是对我们过去半年里所做的工作的一个总结,了解我们对OpenStack的社区贡献情况,和国际同行的差距。而并不是为了所谓的企业的排名,谁是第一。

还是引用这句话:No Measurement, No Improvement.

Continue reading »

Mar 252016
 

有了国内的git源,搞明白local.conf的参数,就简单很多,下面参数,我基本是一个一个逐一验证。如果有错误,希望大家指出。

开始

配置文件第一行必须是,否则不会生效。

[[local|localrc]]

修改github源

默认Devstack会从github下载所有需要的代码,包括OpenStack。这其实是导致Devstack安装时间太长的一个重要原因。

目前 git.trystack.cn 提供OpenStack的所有github的mirror。对于Devstack来说,只需要在配置文件增加3行就可以。

# use TryStack git mirror
GIT_BASE=http://git.trystack.cn
NOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.git
SPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git

主机IP

这个是必须指定,否则会报错。

HOST_IP=192.168.27.128

镜像下载

安装devstack的时候,默认会下载相应的镜像,这些镜像都在国外,我们可以指定连接来下载相关镜像。下一步trystack会提供相关的镜像下载。

# Define images to be automatically downloaded during the DevStack built process.
DOWNLOAD_DEFAULT_IMAGES=False
IMAGE_URLS=http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

IPV4

现在默认会创建网络是支持ip v6,通常我们是用不到。我是希望仅仅支持ip v4.

# only support IP v4
SERVICE_IP_VERSION=4

Keystone版本

现在默认就是支持keystone v3,除非你需要使用v2。

# only support keystone v2
ENABLE_IDENTITY_V2=True

网络

默认Devstack会创建一个网络,如果你不需要创建

#not create default network
NEUTRON_CREATE_INITIAL_NETWORKS=False

我们也可以指定相关的网络

# instead of default network
FLOATING_RANGE="192.168.27.0/24"
FIXED_RANGE="10.0.0.0/24"
Q_FLOATING_ALLOCATION_POOL=start=192.168.27.102,end=192.168.27.110
PUBLIC_NETWORK_GATEWAY="192.168.27.2"

指定版本安装

对于普通用户,想了解某个版本的功能,可以在配置文件指定版本

# Branches
KEYSTONE_BRANCH=stable/liberty
NOVA_BRANCH=stable/liberty
NEUTRON_BRANCH=stable/liberty
SWIFT_BRANCH=stable/liberty
GLANCE_BRANCH=stable/liberty
CINDER_BRANCH=stable/liberty

我们使用的Devstack,也需要使用相同的版本,这样才能避免安装失败可能性。

git clone http://git.trystack.cn/openstack-dev/devstack -b stable/liberty

默认大家都是使用devstack的master。

 

Neutron网络

这是最复杂的地方,目前devstack默认的网络还是nova network,所以你要采用Neutron,你必须

# Enabling Neutron (network) Service
disable_service n-net
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
enable_service q-metering
enable_service neutron

vlan模式

# VLAN configuration.
Q_PLUGIN=ml2
ENABLE_TENANT_VLANS=True
TENANT_VLAN_RANGE=1100:2999

离线安装

当我们修改参数,重新运行devstack的时候,这个时候,你不希望重新下载git和操作系统的update

# Work offline
#OFFLINE=True
# Reclone each time
RECLONE=no

 

 

 

参考文档

http://markelov.org/wiki/index.php/Devstack_installation_with_VirtualBox

https://ask.openstack.org/en/question/66561/devstack-without-default-networkssubnets-routers/

http://www.gossamer-threads.com/lists/openstack/dev/29668

http://docs.openstack.org/developer/devstack/guides/neutron.html

http://blog.csdn.net/Tomstrong_369/article/details/50411878

http://www.weston.la/2014/08/blog/

Mar 212016
 

去年七月做了第二次保养,本来计划到6月份去保养,这两天汽车提示换机油,从上次保养到现在已经跑了1万1千公里,既然已经提示,那就保养吧,也不差那几个月。车辆也刚好开了2年。

这次是去亦庄港龙基业保养,周日去到4S店,感觉有点怪怪,没啥人看车。车的首保是在这家店,

据销售经理说,维修保养价格都上涨了。看到空调滤芯,空气滤芯都比较脏,也就顺便换了。价格也就上去了。

  • 机油:5升,450元 (5W20,由于4升装的,已经没有,就换成5桶1升的)
  • 机滤,105元
  • 空调滤芯:156元
  • 空气滤芯:237元
  • 渗透润滑剂:6元

上面材料费用就954元。机油比上次贵40块钱,机滤贵25元。价格还是可以接受。

保养的工时费,

  • 保养(更换机油机滤)220元
  • 更换空滤:22元
  • 更换空调滤芯:22元

总工时费264,打了一个八折,211元。

总费用是1166元。结账走人。价格感觉应该比东北旺那家贵点。不过也可能是今年涨价了不少。还是可以接受。

Feb 182016
 

今天刚好在红帽官方网站看到Ceph安装文档,我顺便动手测试一下。

参考文档

红帽官方Ceph安装文档

Ceph installation on CentOS 7.2

Install Ceph Infernalis(v9.2.0) in CentOS 7.2

 

管理节点

对于分布式文件系统,都是需要同步时间。而且这点经常由于忽略导致大问题。

yum install ntp
systemctl start ntpd
systemctl enable ntpd

设置FQDN

hostnamectl set-hostname ceph-admin.chenshake.com

设置 /etc/hosts

cat << EOF >> /etc/hosts
192.168.1.120   ceph-admin.chenshake.com          ceph-admin
192.168.1.121   ceph-monitor1.chenshake.com       ceph-monitor1
192.168.1.122   ceph-monitor2.chenshake.com       ceph-monitor2
192.168.1.123   ceph-node1.chenshake.com          ceph-node1
192.168.1.124   ceph-node2.chenshake.com          ceph-node2
192.168.1.125   ceph-node3.chenshake.com          ceph-node3
EOF

Cephuser 账号

groupadd -g 2000 cephgroup
useradd -c "ceph user" -g cephgroup -u 2000 cephuser
echo "cephuser:shake-pass" | chpasswd

sudo和tty

cat << EOF >/etc/sudoers.d/cephuser
cephuser ALL = (root) NOPASSWD:ALL
Defaults:cephuser !requiretty
EOF
chmod 0440 /etc/sudoers.d/cephuser

 

SSH (admin only)

创建ssh秘钥分发到所有节点上

su - cephuser
ssh-keygen -t rsa
cp -p .ssh/id_rsa.pub .ssh/authorized_keys
for H in ceph-monitor1 ceph-monitor2 ceph-node1 ceph-node2 ceph-node3 ; do scp -rp .ssh $H:. ; done