自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 资源 (1)
  • 收藏
  • 关注

原创 mass collection

之前配置java环境变量的时候一般只是执行java -version, 今天手贱多执行了一句javac,结果发现总是“不是内部或者外部命令”,环境变量的确配置没有问题,后来发现原来要把命令行窗口关掉之后重新打开才可以。。。

2015-11-20 13:49:12 444

原创 docker entry

最近太忙了,除了项目上的事情,也和一些公司的人聊了,云计算的风口还在,不过在国内,IaaS恐怕已经不好做了,除非有技术上的突破(目前看来不太可能),除了国外的AWS,Azure和IBM的产品逼进来,国内BAT(当然IaaS的话还是只能说A了),UCloud,QingCloud,UniteStack,Keytone Cloud等等,无论是基于openstack的还是不是,现在进入我感觉机会已

2015-09-22 20:19:32 585

原创 do your test before you deliver your code to community

测试是openstack中的重要一环,一个大型的项目,要想报障product的质量,没有测试只能是瞎玩,单元测试,功能测试,集成测试等等,我们这里主要说的是unittest,也就是单元测试。早期的openstack项目里面都有runtest.sh 脚本文件,运行脚本可以生成virtual 环境,从而在不破坏现有环境下下载测试所需要的相关一类包,而CI的流行,对于大型的openstack来说

2015-09-09 15:36:37 648

原创 about kvm

kernel  based virtual machine, 作为hypervisor的一种实现方式,随着hvm的出现得到发展,要理解kvm分两个方面:1. 现在kvm已经进入linux kernel之中,熟悉linux 源码的话,可以加入KVM社区,共享源码,KVM本身也是现在很火的开源项目2. 了解KVM特性,强化KVM使用,已经KVM原理了解后,优化基于KVM的系统,比如openst

2015-09-03 22:39:08 568

原创 ironic related projects in git

如果刚开始接触ironic的时候,在ironic的wiki页面:https://wiki.openstack.org/wiki/Ironic 会看到一堆的项目,感觉ironic是个很大的项目,可能会产生疑问,是否每一个部分都需要了解,参与开发的话,哪些模块进行contribute比较合适?我记录一下,免得自己有时候也忘记了:1. ironic这个自然是ironic项目的主体,之前记录了

2015-08-24 14:37:09 640

原创 from linux kernel to kvm -- kinds of hypervisor

标题留在这里,但是最近一直太忙, 没有时间来管blog,今天补上,内容都是我自己的理解,不一定完全正确,就像前面的文章一样,可能到后来我自己的理解变了,我又会写一篇新的。其实现在云计算这么流行,并不是技术上有什么突破,只是服务方式或者思维的一种转变得到了大家的认可,趁着互联网化的风潮,云计算以其基础性地位得到很大的重视,说云计算,肯定绕不开虚拟化, 云计算不等于虚拟化,二者不是一个层面

2015-08-24 13:32:13 436

原创 from linux kernel to kvm -- debug linux kernel by eclipse

https://www.kernel.org/pub/linux/kernel/v2.6/ 下载linux-2.6.24.tar.gz 或者其他由于我是在虚机(14.04ubuntu)中进行开发,可能2.6的kernel有点儿老,编译的时候不通过,make bzImage也问题多多,后来改用linux 3.18版本通过1. make defconfig2. apt-get in

2015-08-19 15:40:37 359

原创 make your driver as a deb package

做完自己的开发之后,想要发布自己的代码,怎么办呢,比如如何给已有的系统打补丁,或者作为一个安装包在新部署的系统环境中存在呢?其实要分情况,如果是社区兼容性的东西(符合社区blueprint),能够被社区admin review通过的,当然直接提交到社区比较合适;如果是自己特有的功能,仅仅是少数几个文件的修改,使用diff/patch 将改动做成patch,之后apply 即可,如果涉及到文

2015-08-19 14:45:05 395

原创 more detail pxe deploy in ironic

前面提过ironic的deploy过程,主要关注了vendor passthru中的方式是如何调用的,这次决定从配置开始记录下来,以免忘记又得看代码重查。不得不说官网的流程图是最详细的资料,之前刚开始学习ironic时,看流程图和各模块之间的关系图时比较迷茫,现在重新回过头去看,一切变得非常清晰:http://docs.openstack.org/developer/ironic/de

2015-08-04 18:00:28 1118

原创 openstack git

前面一篇基本上平时使用git时会遇到的操作都涵盖了,其他的遇到时再补充,对应实际的openstack开发,还需要有几个东西要了解。1. launchpad2. git review进行openstack的开发,首先需要一个launchpad的账号, 什么是launchpad呢,launchpad我理解是一个社区,这里有很多开源项目,也进行代码的托管发布,各个组织在这里建立圈子,

2015-08-02 21:20:58 1419

原创 git guide

一直想记下俩git的操作,有时候总是忘记,前面写过一点点,这次有忘记了,决定写个详细点儿的,有的是自己亲手试过,有的是网络经验:)在学校的时候,为了防止本机磁盘坏了或者不同人之间共享一份代码(版本管理),使用SVN,搭建SVN服务器,创建repository,本机使用命令行或者eclipse(大部分时候我是写java)的SVN插件,一般也不用多个branch或者tag的时候,把reposi

2015-07-31 17:04:22 457

原创 how openstack console works

看nova中instance的console,有noVNC, serial,spice, rdp,平时配置使用libvirt管理虚机,配置virttype为kvm或者qemu,一般用配noVNC的最常见,之前做VDI的时候知道RH的spice,据说性能也不错,包括USB的pass thru等,没研究过。从页面点击到后台,console一共经历几个部分:第一部分,horizon点击,返回连接

2015-07-13 20:29:55 805

原创 service group

在nova service启动时,还有一个小地方,需要提一下,那就是service group,听起来可能有些不太好理解,初始化阶段主要有三个动作和其相关:self.servicegroup_api = servicegroup.API()self.service_ref = objects.Service.get_by_host_and_binary(ctxt, self.host, s

2015-07-12 22:08:09 2014

原创 what happened while start nova compute service

前面已经对nova创建instance和其他操作讲了不少,回到detail上,在nova中,api,conductor,scheduler,compute都有对应的manager,在cmd包中启动各种service时,除了api是WSGI service,其他的都是Service,更直接一点儿的话启动的是RPC的service,但这些服务中,compute的地位是不一样的,特别是启动时,做

2015-07-10 16:32:43 351

原创 control your panel

本科的时候学了点儿UI开发的皮毛,研究生的时候摆弄过Django,后来终究还是把UI那一套东西留在某个角落了,虽然horizon提供了极为动态的扩展修改机制,并不需要对UI有太多的了解就能开发出不错的效果(终究是一个Django项目,要想实现自己的复杂的js效果,还是需要专门搞UI的人来写html页面的), 前面讲了好几篇关于怎么实现horizon的东西,有几个疑问需要收尾:1. 各种

2015-07-10 10:58:41 549

原创 storage -cinder(2)

在storage -cinder(1)中说过,知道host的情况下,直接使用rpc call在指定host上创建volume,否则则需要调度,就是是提到的volume_scheduler,到调度host上create volume。 self.scheduler_rpcapi.create_volume #这里的scheduler_rpcapi即 cinder/scheduler/rpca

2015-06-27 21:30:26 479

原创 storage - cinder(1)

前面也说过存储,也提过cinder, 从horizon串到nova,串到ironic,中间穿着说了keystone和neutron,基本上各个openstack的module都提到了,按照我做事的风格,我要再捋一遍,细节的地方不会像前面,从api service收到请求开始讲,会直接从重要地方开始。和看nova代码,最首先肯定是看创建虚机的流程一样,看cinder,从创建volume开始:

2015-06-26 13:41:48 477

原创 add customized javascript and globalization

硬件provision终于收尾了,产品化,国际化,基本测试都齐活了,从前到后的一套东西,虽然之前自认为已经知道了,实际做下来,中间和预想的有差异,但最终结果就是我所想的样子,心情也不错!这里记录几个自己遇到的问题,以后若有查阅也方便:一. 模板问题大部分的horizon页面效果的实现是不需要特别的css或者js的引入的,特别是table相关的操作,horizon自己做了很好的封装,

2015-06-25 17:58:49 612

原创 period task

前面讲过如何在ironic中hold住计算的状态,可以通过period task定期调用,更新数据库的值,从而得到计算的状态。添加period task,我们可以在conductor的manager中进行,例如_sync_power_status等ironic本身的周期性调用,如果是各个Driver自己的调用呢?K版中着重加强了对period_task的部分,追踪period_task的部

2015-06-17 13:15:48 635

原创 integrated dev into product env.

前面讲了很多,通过horizon的virtual_env进行开发,所有的东西都在一个virtual 目录下,操作很方便,利于快速开发,除了自己建git提交代码,用持续集成工具,将代码制作rpm包,实际部署之外,要想将自己的代码直接放到现有环境中也是可以的。运行 find / -name "openstack_dashboard", 看看安装完成后openstack_dashboard在哪里

2015-06-11 18:52:24 284

原创 confluent integrated

传统的虚机创建后,使用console从web上通过vnc连到虚机,对于物理机来说,不同厂商有自己的remote control方案,这里记录一下最新的confluent技术:confluent-1.1-repo.tbz2  #包含confluent_client和confluent_server两个rpm包confluent-dep-rh7-x64.tar.bz2 #包含confl

2015-06-09 12:42:01 786

原创 nova quota

quota中文叫配额,是云计算中重要的概念之一,云计算提供什么,按需提供服务(各种资源),按需是云的精髓,要多少给多少,超限的响应也不能给。在openstack中nova随处可见,trace openstack的源码,安全组,网络数量,tenant的cpu,内存,磁盘,等等都有quota的身影。quota的变动是一个数据库事务,包含reservation/commit/rollback三个

2015-06-01 18:50:52 535

原创 fsm in ironic

hardware management 的技术发展了很多年,很多公司有自己的系统,deploy os 作为hardware management中最常用的功能之一,每个公司可能都有几种自己的系统来完成这一操作,虽然实际的底层技术大同小异,但是每个系统封装的不同,实际扩展ironic时(ironic的确给出了一个框架,但是有框架就有限制),需要对现有的框架有充分的认识,才能游刃有余,这其中比

2015-05-29 10:33:19 533

原创 ironic db alembic

前面说nova的时候说过数据库的部分,nova用的是oslo.db中的类用来更新和迁移数据库,在nova/db/sqlalchemy/migrate_repo/versions中按序号由小到大编号,进行改动,复写upgrade和downgrade来在不同版本的数据库之间进行变动。前面也说过ironic作为新的openstack模块,在快速搭建的过程中,用到了更多开源的东西,除了好用,最主要

2015-05-18 10:44:19 527

原创 config drive and cloud-init

在config drive和cloud init之前,先要从制作镜像说起。一般情况下,我们可以从ubuntu或者fedora等的官网上下载镜像,启动虚机时从镜像启动即可,前面提过启动instance,root disk,swap等的意义,在开发项目的过程中,如果我们希望自己的镜像中自带某些已经安装好的服务,一些库,或者一些通用的配置文件等,除了使用cloud init,这个之后会说,其实制

2015-05-15 15:41:57 4756 1

原创 know more if you want, nova API3 and API21

在nova的paste配置文件中(事实上其他模块也会有这种情况,版本演进的过程中,新的概念会放在新的api version中,同时又兼容老的version,最大程度的满足不同情况的用户使用):/v1.1: openstack_compute_api_v2/v2: openstack_compute_api_v2/v2.1: openstack_compute_api_v21/v

2015-05-14 16:45:16 309

原创 small-mid-scale openstack cluster HA

安装openstack的过程中,区分controller和compute节点,配置网络,计算时不同类型的节点上启动的服务是不一样的。我们来把openstck的服务分一下:keystone做认证,目前没配过HA的集群;Ceph做集群后端,配分布式存储集群,集群本身有备份冗余,HA是天生的;使用OVS时候,neutron在计算节点需要配置openvswitch agent,计算节点挂点

2015-05-10 18:29:48 405

原创 storage, especially cinder(2)

前面说到并非所有的存储都是文件存储,一般说存储类型分为三种,文件存储,块存储,对象存储。在mark link 1中有个不错的讲解,我的理解是,块存储:将没有格式化过的裸盘映射给server(虚拟的,物理的)使用,而这里所谓的“裸盘”,可以是物理概念上的一块硬盘,也可以是逻辑上的一块硬盘(实际上由若干部分组成,每一部分都在不同的物理硬盘上),对server来说二者没有区分,ser

2015-05-08 14:46:14 472

原创 storage, especially cinder(1)

网络,计算,存储,是IT的基础,neutron是网络,nova是计算,存储在openstack中必然也有相当重要的地位,openstack中存储也扮演了十分重要的角色,而在存储发力的openstack也是主要的存储供应商,IBM,EMC,HUAWEI等。存储本身是十分复杂的,且类型各异,方式种种,openstack中的存储竟然对应了三个子项目,可想其重要性和复杂性。Cinder: 提供

2015-05-08 13:36:17 445

原创 generally, we use libvirt(2)

libvirt分为三层,接口层,抽象驱动层和具体驱动层:其中接口层可以使用libvirt的api或者virsh command调用;抽象驱动层则包括各种不同的driver,network driver,storage driver,device driver等等;具体驱动层则是针对qemu或者xen,Lxc的驱动。对于一般的开发者来说,也就看到接口层,调用libvirt的接口生成虚机,到此

2015-05-06 14:50:58 465

原创 generally, we use libvirt(1)

说openstack和cloud,cloud提供什么能力,计算,存储,网络,存储可能是单独的提供,现在软件定义存储也很火爆,网络也可以脱离计算存在,软件定义网络一样火,但是对普通用户来说,用openstack或者其他云平台(当然这里仅仅是指IaaS,至于PaaS和SaaS看到的又不一样),直观感受到的是虚机,看起来是计算/存储/网络的综合(现在ironic希望把物理机和虚机统一起来,尽管我

2015-05-05 20:03:39 348

原创 policy and pbr/distibution

关于policy:前面说keystone的时候,keystone的作用是认证/授权,这里policy我理解成鉴权,功能有很大的交叠部分,也可以认为属于一类,不过侧重点不一样,即使认证通过,还得通过鉴权再次细分。无论是nova还是neutron等模块,/etc/xxx下基本都有policy.json的文件,内容风格近似,在nova中,我们可以看到nova.policy.enfor

2015-05-05 19:03:24 376

原创 flexibility of openstack(4)

把这一条trace完,让它更清晰吧,接着上一节,build_instances时,message的direction为down,选中child_cells中的一个:next_hop.send_message(self)执行CellState的send_message方法,即self.driver.send_message_to_cell(self, message),前面提到的driv

2015-05-04 22:45:52 281

原创 flexibility of openstack(3)

接着上一篇,到MessageRunner执行build_instances, 调用nova/cells/messaging.py中_TargetedMessage的process方法:在_TargetedMessage(_BaseMessage)的__init__中:message_type = 'targeted'if isinstance(target_cell, cells_

2015-05-04 21:34:15 265

原创 flexibility of openstack(2)

前面说了region,az,aggregate,专门把对cell的积累做一节,当openstack部署成为公有云或者规模庞大的私有云时,还是存在性能瓶颈,我们能想到的:1. keystone,使用uuid而非PKI时,keystone感觉立刻就会成为瓶颈,实际生产环镜肯定是配PKI的,当然了不只是openstack,很多大型网站,高并发时authorization都是问题;2. dat

2015-05-04 16:27:04 214

原创 flexibility of openstack(1)

作为一个云平台,最看重的几个因素,在我看来是扩展性,安全性,容错性,不是说其他的不重要,而是这三点是称之为“云”的关键而已,说到扩展性,openstack很多概念就是为其而生的,基本上都能在AWS找到对应,毕竟在AWS面前,openstack还是学生,不过我相信,很快它会变成老师。我想这些概念肯定会看起来很熟悉:region, available zone, aggregate

2015-05-03 22:18:33 244

原创 sqlalchemy is important(2)

有必要了解一下sqlalchemy的一些基本概念,当然了没有比官方文档更好的地方,官网的文档写的也算是简介明了,以其为主:http://docs.sqlalchemy.org/en/rel_1_0/如果你不是关注与openstack的数据库方面,比如百度的人搞openstack貌似想做这方面的东西,他们想优化openstack的数据库。从网络上或者官网上可以看到sqlalchemy分为

2015-05-02 19:41:38 302

原创 two ways to hold the states of a job in ironic

具体说之前,先说一下如何在horizon中做点击link跳转至别的页面,对于Django来说这是一个很简单的问题,有用shortcuts.redirct的,也可以在url配置之后使用一个function,在function中return HttpResponseRedirect的,总之是可以办到的,但是在horion中,要是表格中的某一项是一个link,点击后跳转到新的页面怎么办呢。我

2015-05-01 16:47:38 328

原创 sqlalchemy is important(1)

如果亲手配置过openstack,不论是standalone的还是分布式的,肯定对类似这样一句有深刻的印象:connection=mysql://xxx/glancexxx是user:passwd@url的形式,当然了大部分情况下使用的都是mysql,也有postgresql,sqlite的,但是我知道最多的还是mysqlsqlalchemy是什么?简单的说用来做ORM,或者说做数据的

2015-04-29 16:29:43 321

原创 once you dive into the notifier(2)

前面说到用MQ做解耦,为系统扩展性提供了很好的方式,如果仔细看source code可以看到:NOTIFIER = messaging.Notifier(TRANSPORT, serializer=serializer)def get_notifier(service=None, host=None, publisher_id=None):    assert NOTIFIER

2015-04-29 13:22:16 450

hadoop In action

讲述hadoop 下mapreduce的编程,与hadoop guide配合使用很好

2011-02-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除