OpenStack管理员培训CertifiedOpenStackAdministrator上课时间❖授课时间为时三天❖第四天考试(非强制)❖9:30-11:30❖01:30-16:30上课环境❖物理机:32GRAMI5SSD硬盘❖系统:ubuntu14.04❖OpenStack版本:Newton❖OpenStack部署工具:Devstack课本使用注意事项❖课本中的所有需要大家手动输入的代码都会以粗体+斜体❖课程中root用户没有密码,如果需要切换到root中需要使用sudo-s并输入密码:trystack❖整个OpenStack环境中所有的OpenStack相关的服务都运行在stack用户中,stack用户没有密码,所以要切换到stack用户必须要通过root用户然后sustack❖重置devstack的方法❖cd/home/devstack❖echo‘OFFLINE=True’local.conf❖./unstack.sh&&./stack.sh什么是OCA❖COA的全称是CertifiedOpenStackAdministrator,他是由OpenStack官方主导的一门认证考试,意在于检验我们那些经常和OpenStack打交道的工程师们是否能熟练的使用OpenStack。❖考试是由老外通过摄像头来监考的,考试的时间有150分钟。❖通过考试以后3个工作日内会讲证书的pdf发到你们的邮箱里里。自我介绍课程安排❖第一天上午❖OpenStack的生态圈介绍❖Keystone❖第一天下午❖horizon❖nova❖第二天上午❖glance❖cinder❖第二天下午❖Swift❖Neutron❖第三天上午❖heat❖排错监控等等❖第三天下午❖综合模拟题练习❖第四天考试什么是OpenStack❖OpenStack是一个开源的云平台,他属于云计算当中我们常说的IAAS(infrastructureasaservice),简单的讲他是来管理我们的硬件设施的,我们在我们的设备上部署Linux操作系统然后在操作系统上部署OpenStack,然后由OpenStack来帮助我们决定哪些虚拟机应该启动在哪些物理的计算节点上,最早由美国宇航局(NASA)和Rackspace为OpenStack贡献了第一个项目swift。OpenStack的使⽤用场景OpenStack的使用场景OpenStack组件介绍❖OpenStack是由很多个核心组件组合而成,每个组件都负责他们自己的一小块的功能比如负责提供计算服务的是Nova,提供网络服务的是Neutron,他们各自都有属于自己的管理接口,所谓管理接口就是一个基于http请求的一个Web服务,主要是用于接受命令行工具或者组件的http请求。OpenStack的生态圈OpenStack的组件介绍keystonnovahorizonswiftglaneneutroncinderceilometerHeat我负责管理OpenStack的在线镜像仓库,用户上传的镜像都是我来管理。我为OpenStack提供网络服务,我管理着整个OpenStack的网络资源和网络走向。我为OpenStack提供磁盘的服务,我可以和各种存储的文件系统集成。我是提供计量服务的,他可以收集每个租户对OpenStack资源的使用量我是编排服务的,我可以实现各种在OpenStack当中的自动化。核心组件keystone介绍❖keystone为OpenStack提供身份认证服务和管理接口的目录服务,他还可以和微软的AD目录来集成,我们看下keystone中有哪些概念我们需要知道:❖用户(user)---最基本的用户,一个通常意义上的账号有用户名和密码还有一些相关的比如邮件等信息,在OpenStack中只是创建一个用户是不可以使用OpenStack中的资源的。❖角色(role)---角色是限制用户对OpenStack中的资源访问权限的,角色只有当把用户添加到一个租户中去的时候才会和用户产生关联,而且一个用户在不同的租户当中可以属于不同的角色。❖组(group)---组顾名思义就是一个用户的集合,一般我们会把一个用户关联到一个项目中,每次关联的时候都要设置一个角色比较麻烦,有了组以后我们可以把组加到租户当中去并关联一个角色,以后所以加入到这个组当中的用户就继承了这个组在这个租户当中的角色。Domain、user、project、role核心组件keystone介绍❖项目/租户(project/tenant)---project顾名思义是项目的意思或者用我们熟知的话就是租户,在本书中我们都会称之为项目而不是租户,租户是OpenStack中一个核心的概念,基本上所有的资源都是按照租户隔离,比如网络、实例、路由等资源,所以我们可以想象一个用户必须要先关联到一个项目中去才能正确使用OpenStack资源。❖域(domain)---这里域并非windows当中的域的定义,在OpenStack当中域是⽤来实现真正的多项⽬/租户模式的⼀种⽅法,在没有域出现之前OpenStack有着⼀个权限的场景,当你把⼀个用户任何一个项目/租户当中去的时候,你如果关联的是admin的⾓⾊的话,这个时候这个⽤户突然就成为了OpenStack超级管理员,这并非我们所希望的场景,使用了域以后我们就可以实现真正意义上的多项目/租户模式了,把一个用户加到default以外的域中的项目并关联到admin的时候,这个用户就不再是整个OpenStack的管理员了,他只能管理这个域下⾯的所有的项目/租户,当然你要开启多项目/租户模式你得替换掉/etc/keystone/policy.json文件来开启。核心组件keystone介绍❖服务终点(serviceendpoint)---服务终点即一个服务提供的地址比如,这就是一个服务终点,服务终点是用来提供基于http请求的API方法的一个地址。keystone目录服务❖目录服务---之前提到OpenStack有很多个核心组件组合而成的,每个组件都有一个或多个管理接口,每个管理接口提供服务都是以web服务的形式出现的,那么他们都有一个服务的终点地址比如keystone的(),我们怎么才能找到每个组件的终端呢?因为这些服务可以很方便的迁移到任何网络可达的物理服务器上,所有这里我们要一个机制来集中管理服务的终点,就像服务终点的路由器一样,更好理解的是像dns。keystone与命令行工具keystone的管理练习❖创建一个用户❖openstackusercreate-passwordjohnpasswordjohn❖更新一个用户❖openstackuserset-passwordnewpasswordjohn❖删除一个用户❖openstackuserdeletejohn❖用户列表❖openstackuserlist❖查看详细❖openstackusershowjohn❖将用户关联到项目/租户❖openstackuserroleadd-userjohn-projectmyprojectAdmin核心组件horizon介绍❖Horizon为OpenStack提供了界面管理服务,让OpenStack管理员和用户都能来通过界面的方式来管理OpenStack,而不是纯粹的命令行管理,因为一般用户很难接受使用命令行的方式来使用和管理他们在OpenStack中创建的资源。❖一般Horizon会安装在OpenStack的控制器上面,我们只需要打开浏览器输⼊即可访问你的的Horizon的界面。核心组件horizon介绍❖Horizon使用了以下技术:❖Django---是python的开源的做web技术,基于mvc框架(model、view、controller)的webframework。❖AngulaJS---前端javascript脚本,是谷歌研发的,为了在浏览器端来提高用户互动体验的一套javascript框架。horizon练习❖修改默认样式❖修改配置以支持多域来登录OpenStack。核心组件nova介绍❖nova为OpenStack提供计算服务,nova其实更多扮演了管理者和调度者的角色,OpenStack默认Kvm作为默认的虚拟机监控器(hypervisor),当然你的硬件CPU必须支持硬件加速的虚拟化。nova相关知识---虚拟化❖全虚拟化---这类虚拟化可以完全模拟OS环境,GuestOS可以方便的模拟所有的操作指令,不需要做操作系统做任何修改,比较有名的比如Vmware、Gemu等等,但比起运行效率没有半虚拟化好。❖半虚拟化---半虚拟化修改底层SystemCall提高了GuestOS运行的效率,但是不足之处是我们需要修改GuestOS的内核,比较有名就是Xen,当然Xen即支持半虚拟化也支持全虚拟化。nova相关知识---kvm❖kvm---kernelvirtualmachine他属于硬件加速的全虚拟化,他依赖于cpu的虚拟化功能intel-vt或者amd-v等技术。❖qemu-kvm---帮助kvm进行io模拟的虚拟机监控器,主要负责模拟io(input/output)。❖支持的hypervisor:kvm、xen、virtualbox、vpc、vmware核心组件nova介绍❖我们回到nova中,之前提到openstack使用的hypervisor是用kvm当然可以支持很多中的hypervisor比如virtualbox、vmware、xen、qemu当我们的计算的节点的cpu不⽀持硬件加速的时候我们可以使用qemu来代替。nova高级特性❖region---物理地域的区分,比如我们在大连部署了一套openstack还在上海部署了一套openstack,他们的除了管理界面和keystone是共享的其他的资源都是独立。❖availablezone---可用区域是对用户可见,比如我们使用阿里云的时候我们会去选需要哪个机房的服务器。❖hostaggregation---我们把一组比较有特性的计算节点归类到一个分组中我们叫做hostaggregation,比如一组cpu都是I7的cpu的计算节点归类到一个hostaggregation中,结合flavor这个hostaggregation下的计算节点只有特定租户下的用户才可以在上面启动虚拟机,hostaggregation用户是不可见的,是管理员来设置的,他会影响novascheduler的算法。❖flavor---预建的虚拟机配置的列表。❖keypair---keypair是用来连接实例的秘钥。❖安全组---控制实例的访问策略。nova核心服务❖nova-api---和其他核心项目组件一样都一个管理接口。❖nova-scheduler---将虚拟机分配到具体的计算节点的服务。❖nova-compute---运行在计算节点上的服务,负责调度libvirt启动虚拟机的服务。nova虚拟机启动内部过程nova高级特性❖region---物理地域的区分,比如我们在大连部署了一套openstack还在上海部署了一套openstack,他们的除了管理界面和keystone是共享的其他的资源都是独立。❖availablezone---可用区域是对用户可见,比如我们使用阿里云的时候我们会去选需要哪个机房的服务器。❖hostaggregation---我们把一组比较有特性的计算节点归类到一个分组中我们叫做hostaggregation,比如一组cpu都是I7的cpu的计算节点归类到一个hostaggregation中,结合flavor这个hostaggregation下的计算节点只有特定租户下的⽤用户才可以在上⾯面启动虚拟机,hostaggregation用户是不可见的,是管理员来设置的,他会影响novascheduler的算法。nova计算资