OVM免费虚拟化管理平台

workingmom 发表了文章 • 2 个评论 • 45 次浏览 • 2017-08-16 11:45 • 来自相关话题

OVM作为完全免费、公益的一款产品,不仅拥有商业软件同样的稳定性、易用性、高性能,而且还拥有开源软件一样的开放性、可扩展性。面向中小型虚拟化环境,打造简单易用的虚拟化管理平台。让零基础的用户在几个小时内可以部署、使用自己的虚拟化系统。

OVM从设计之初就决定要做一款完全符合国人使用习惯和特点的“新国货”Iaas产品。OVM产品架构的设计严格按照商业产品架构的高标准要求,始终把产品的稳定性、易用性、可扩展性,以及产品的高性能放在第一位。OVM采用分布式、松耦合的模块化架构,分布式特点可以规避单点故障,松耦合的模块化特点让产品在扩展性方面不受任何限制。

产品理念

目前市场上一些比较成熟的开源产品,发现这些产品大多是有国外开发者主导的社区产品,既然这些开源产品是国外开发者主导的,那么这些产品里面就肯定没有太多中国元素,国内的企业要想使用这些产品,首页要对其中文化,其二还要花费相当多的时间来苦读英文文档来学习这些产品;另外我们发现目前市场上的这类开源产品更加偏向于拥有大规模数据中心的企业采用,中小企业用起来有些大材小用了。一般中小企业拥有的数据中心规模并不大,运维团队一般也比较小,对于Openstack、Cloudstack这些产品的确不适合这类中小企业使用。另外还有一个严重的问题就是,在使用开源产品过程中,如果遇到Bug或者重大安全隐患,中小企业并不具备解决问题的能力,那么对于他们来说只能等待开源社区推出Bug补丁包。基于以上的原因,我们决定筹备一个团队开发OVM产品,OVM定位为一个企业级的虚拟化管理平台,完全基于国内企业特点开发,更多的关注中小企业用户的产品需求,OVM想要带给用户的是一个稳定、简单、易用、易扩展的企业级Iaas产品。

OVM架构设计

OVM采用分布式、松耦合的模块化插件架构,分布式特点可以使管理平台规避单点故障,达到业务持续高可用,松耦合的模块化特点让产品在后期的扩展性方面不受任何限制,使其向下可以兼容数据中心所有硬件(通过OVM标准的Rest API接口),向上可以实现插件式的工作流引擎、计费引擎、报表引擎、桌面云引擎和自动化运维引擎。

OVM产品目前由三大组件、七大模块组成。其中三大组件分别为OVMUI、OVMAPI和OVM数据中心组件,OVMUI提供WEB自服务界面,OVMAPI负责UI和数据中心组件之间的交互,OVM数据中心组件分别提供不同的功能。七大模块分别负责不同的功能实现,和三大组件之间分别交互。下图所示是OVM的总体架构图,体现了OVM三大组件与七大模块之间相辅相成的关系,由于每个模块各司其职,即使单个模块出现了故障也只是影响到该模块功能的使用,而不会影响平台整体使用。

易用性

OVM的易用性首先体现在安装部署方面。传统的开源软件安装部署相信对于运维人员来说不会陌生,他们大多只会提供安装包和简单的安装文档,而这些安装过程大多会涉及到数据库、redis、rabbitmq、ruby等环境的配置,这些环境的配置也要求运维人员必须先去熟悉这些相关软件的安装部署,毕竟一步配置错误就会导致整体的安装部署失败,整个安装部署少则也需要2-3天时间才可搞定,多则需要1-2周,复杂的安装部署过程让运维人员疲惫不堪。

OVM安装部署全部(包括管理平台和计算节点)采用一键式的ISO安装部署,整个安装过程就像是在安装一个Centos操作系统一样的简单,只用花费10-20分钟的过程就可以完成OVM的安装部署,极大的方便了运维人员,为他们省去了很多的宝贵时间。因为我们觉得真正易用的软件不会在安装部署上让运维人员为难,OVM要做的就是即使是一个刚进入运维行业的新人,通过OVM提供的iso镜像也可在1小时内完成整个产品的安装部署。

OVM的易用性其次还体现在升级方面。对于一个产品来说,迭代升级是必然的事情,因为一个产品总是要向前发展的,OVM在设计之初就在考虑如何可以让用户不费吹灰之力就可以升级使用中的版本到最新版本。经过我们OVM团队多次的讨论,最终将升级与UI无缝结合,用户只用点击WEB管理平台中的一键升级按钮就可轻松实现版本的快速升级,整个升级过程用户几乎感知不到,丝毫不会影响到用户业务的运行。

稳定性、可扩展性

OVM从架构设计之初就充分考虑到产品的稳定性,把产品的稳定放在第一位。因为作为一款Iaas虚拟化管理软件,其本身不仅仅是一个软件,而是连接用户数据中心的中枢(包括物理机、存储、网络、防火墙、灾备等)。在架构设计上,OVM分别参考了同行业开源软件、商业软件的产品架构,作为一款Iaas软件首先要保证产品无单点故障,即管理平台高可用;其次支持分布式部署,将不可预估因素造成的损失降到最小。因此OVM架构设计之一就是分布式、插件式,分布式和插件式的特点可以允许用户将不同的模块和服务,既可以部署在同一台Server上面,也可以将其分开部署在多台Server上,大大了提高了部署的灵活性,同时也可将单点故障的风险降到最小。另外OVM也引入了Zookeeper、Pacemaker等软件来为OVM提供高可用,避免单点故障的发生。此外,OVM的每个版本均经过严格的内测——OVM核心测试团队测试——市场公测——正式版发布,每一个环节我们都严把质量关,将稳定性自始至终贯穿到OVM的每个环节。

分布式和插件式的特点也为OVM的扩展提供了无限大的可能。模块化的插件式架构允许用户根据自己的需求来定制自己所需的模块,毕竟不同行业的用户还是存在不少差异的,即使是相同行业不同企业的用户也是会有所差距的,此时每个用户都可能会有自己的不同需求,获益于OVM插件式的架构,用户只需要根据自己的需求增加不同的模块来实现自己所需的功能就可以,可谓是真正的无限扩展,另外OVM完善的API可以助力用户、商业软件生产商集成第三方软件到OVM平台。比如IDC运营商想要的是一个公有云门户对外提供有偿服务,那么就可以根据自己的需要增加一个公有云模块到OVM平台,一般企业用户想要的是一个私有云,那么可以直接使用OVM轻松构建自己的私有云平台,而政府、事业单位、以及大规模企业则想要的是一个混合云环境,因为这类单位既有自己内部的高保密业务,也有对外提供服务的公有云业务,那么此类单位则可以使用OVM的API借口对接阿里云、腾讯云、亚马逊云、Openstack等,实现自己的混合办公需求。

高效

高效是检验一个平台设计是否优秀的关键。大家都希望管理平台能为自己的工作带来高效率,这也是选择使用一个平台的初衷,OVM设计之初就将平台的高效性视为关键,整体采用全异步、无等待、无锁架构来确保平台的每个任务都是独立执行,即使同时有存储任务、网络任务、虚拟机任务等都在执行也互不干扰,从此避免了多任务同时执行带来的阻塞问题。另外OVM全异步架构也可以为一些批量任务的执行带来高效率,比如虚拟机的批量创建、监控数据的采集、节点状态的检测等,这些任务都可以为用户节省大量的时间,全异步架构说简单点就是各干各的事情,极大的提高了完成工作的效率。OVM无锁、无等待架构既保证了高并发,也兼顾了整体的性能。

功能特点

1、一站式自服务门户

OVM提供了一个完整的门户,单一控制台管理全球基础设施,利用OVMAPI,自助创建虚拟企业租户、虚拟数据中心的分租户和虚拟应用程序,完全自定义“快速”的实施,并提供一个简单的服务目录。门户还支持可选的审批工作流,包括完整的电子邮件集成的”一键式”管理。

2、基于角色的多租户权限

基于角色的访问控制提供可定义无限数量的独立用户角色,并指定权限到任意组合,选择从一个全局的范围或局部(虚拟企业、数据中心、虚拟数据中心)的范围,提供了无限的细粒度用户权限控制。集成LDAP,允许企业通过LDAP或Active Directory完全管理OVM用户。

3、云应用商店平台

OVM提供了一个基于Web的最终用户的门户网站,企业可以建立一个服务目录,只需在目录中点击一下按钮,即能以预配置虚拟设备的形式部署和使用多层应用,包括虚拟机、操作系统映像和其他介质,也可以从移动设备如iphone和ipad。可建立公共、共享和私有库,允许建立企业私有标准或预定义镜像库。允许把复杂的多层应用程序融合在一个易用的用户界面,只需从镜像库拖拽单个虚拟机,自定义资源,一键多批VM部署。

4、网络

OVM管理两种网络:

内部网络OVM默认网络。OVM完全可以管理这些网络,用户也可以在自助服务的基础上创建他们自己的私人网络。OVM机架配置定义Vlan可用池,OVM会自动将未使用的 VLAN 分配给一个新的内部网络。内部网络适用于OVM云不提供对外部通信的状况。允许用户VM在同一虚拟数据中心互相沟通。

外部网络外部网络允许基础设施的通信,云管理员必须分配ip地址范围和Vlan,每个外部网络被分配到OVM虚拟企业,可为每个云租客分配VLAN,以连接到外部基础设施。服务提供商可分配每个客户用的VLAN,通过现有的MPLS或VPN无缝连接到云或公司的局域网。

5、存储

OVM支持自动配置多种存储类型,包括NFS,ISCSI,光纤通道等八种存储类型。通过hypervisior,OVM可以提供新的虚拟机到任何存储类型包括光纤通道、iSCSi和NFS。

深度集成的iSCSiOVM现成集成与存储解决方案包括NetApp OnTap、Nexenta和 Linux LVM。集成的iSCSi为用户提供一个完整的自助服务经验,无需管理员便能创建他们自己的卷,并附加到虚拟机或删除这些卷。

存储池及层可以将多个存储设备添加到OVM以分配给存储层中的云用户。存储层能够为多个存储类型提供不同的性能、功能和价格点。允许云用户选择适合他们的要求或其价格点的存储层。iSCSi存储SDK允许第三方创建自己集成的存储插件和额外的存储平台。

6、监控

7×24小时全天候可用性和性能监控,并自动收集一套全面的可用性能指数和利用率的指标,比如CPU,内存,存储,网络I/O,通过高度可定制的的交互式图表,能够快速识别性能趋势,提前布局; 查看全部
OVM作为完全免费、公益的一款产品,不仅拥有商业软件同样的稳定性、易用性、高性能,而且还拥有开源软件一样的开放性、可扩展性。面向中小型虚拟化环境,打造简单易用的虚拟化管理平台。让零基础的用户在几个小时内可以部署、使用自己的虚拟化系统。

OVM从设计之初就决定要做一款完全符合国人使用习惯和特点的“新国货”Iaas产品。OVM产品架构的设计严格按照商业产品架构的高标准要求,始终把产品的稳定性、易用性、可扩展性,以及产品的高性能放在第一位。OVM采用分布式、松耦合的模块化架构,分布式特点可以规避单点故障,松耦合的模块化特点让产品在扩展性方面不受任何限制。

产品理念

目前市场上一些比较成熟的开源产品,发现这些产品大多是有国外开发者主导的社区产品,既然这些开源产品是国外开发者主导的,那么这些产品里面就肯定没有太多中国元素,国内的企业要想使用这些产品,首页要对其中文化,其二还要花费相当多的时间来苦读英文文档来学习这些产品;另外我们发现目前市场上的这类开源产品更加偏向于拥有大规模数据中心的企业采用,中小企业用起来有些大材小用了。一般中小企业拥有的数据中心规模并不大,运维团队一般也比较小,对于Openstack、Cloudstack这些产品的确不适合这类中小企业使用。另外还有一个严重的问题就是,在使用开源产品过程中,如果遇到Bug或者重大安全隐患,中小企业并不具备解决问题的能力,那么对于他们来说只能等待开源社区推出Bug补丁包。基于以上的原因,我们决定筹备一个团队开发OVM产品,OVM定位为一个企业级的虚拟化管理平台,完全基于国内企业特点开发,更多的关注中小企业用户的产品需求,OVM想要带给用户的是一个稳定、简单、易用、易扩展的企业级Iaas产品。

OVM架构设计

OVM采用分布式、松耦合的模块化插件架构,分布式特点可以使管理平台规避单点故障,达到业务持续高可用,松耦合的模块化特点让产品在后期的扩展性方面不受任何限制,使其向下可以兼容数据中心所有硬件(通过OVM标准的Rest API接口),向上可以实现插件式的工作流引擎、计费引擎、报表引擎、桌面云引擎和自动化运维引擎。

OVM产品目前由三大组件、七大模块组成。其中三大组件分别为OVMUI、OVMAPI和OVM数据中心组件,OVMUI提供WEB自服务界面,OVMAPI负责UI和数据中心组件之间的交互,OVM数据中心组件分别提供不同的功能。七大模块分别负责不同的功能实现,和三大组件之间分别交互。下图所示是OVM的总体架构图,体现了OVM三大组件与七大模块之间相辅相成的关系,由于每个模块各司其职,即使单个模块出现了故障也只是影响到该模块功能的使用,而不会影响平台整体使用。

易用性

OVM的易用性首先体现在安装部署方面。传统的开源软件安装部署相信对于运维人员来说不会陌生,他们大多只会提供安装包和简单的安装文档,而这些安装过程大多会涉及到数据库、redis、rabbitmq、ruby等环境的配置,这些环境的配置也要求运维人员必须先去熟悉这些相关软件的安装部署,毕竟一步配置错误就会导致整体的安装部署失败,整个安装部署少则也需要2-3天时间才可搞定,多则需要1-2周,复杂的安装部署过程让运维人员疲惫不堪。

OVM安装部署全部(包括管理平台和计算节点)采用一键式的ISO安装部署,整个安装过程就像是在安装一个Centos操作系统一样的简单,只用花费10-20分钟的过程就可以完成OVM的安装部署,极大的方便了运维人员,为他们省去了很多的宝贵时间。因为我们觉得真正易用的软件不会在安装部署上让运维人员为难,OVM要做的就是即使是一个刚进入运维行业的新人,通过OVM提供的iso镜像也可在1小时内完成整个产品的安装部署。

OVM的易用性其次还体现在升级方面。对于一个产品来说,迭代升级是必然的事情,因为一个产品总是要向前发展的,OVM在设计之初就在考虑如何可以让用户不费吹灰之力就可以升级使用中的版本到最新版本。经过我们OVM团队多次的讨论,最终将升级与UI无缝结合,用户只用点击WEB管理平台中的一键升级按钮就可轻松实现版本的快速升级,整个升级过程用户几乎感知不到,丝毫不会影响到用户业务的运行。

稳定性、可扩展性

OVM从架构设计之初就充分考虑到产品的稳定性,把产品的稳定放在第一位。因为作为一款Iaas虚拟化管理软件,其本身不仅仅是一个软件,而是连接用户数据中心的中枢(包括物理机、存储、网络、防火墙、灾备等)。在架构设计上,OVM分别参考了同行业开源软件、商业软件的产品架构,作为一款Iaas软件首先要保证产品无单点故障,即管理平台高可用;其次支持分布式部署,将不可预估因素造成的损失降到最小。因此OVM架构设计之一就是分布式、插件式,分布式和插件式的特点可以允许用户将不同的模块和服务,既可以部署在同一台Server上面,也可以将其分开部署在多台Server上,大大了提高了部署的灵活性,同时也可将单点故障的风险降到最小。另外OVM也引入了Zookeeper、Pacemaker等软件来为OVM提供高可用,避免单点故障的发生。此外,OVM的每个版本均经过严格的内测——OVM核心测试团队测试——市场公测——正式版发布,每一个环节我们都严把质量关,将稳定性自始至终贯穿到OVM的每个环节。

分布式和插件式的特点也为OVM的扩展提供了无限大的可能。模块化的插件式架构允许用户根据自己的需求来定制自己所需的模块,毕竟不同行业的用户还是存在不少差异的,即使是相同行业不同企业的用户也是会有所差距的,此时每个用户都可能会有自己的不同需求,获益于OVM插件式的架构,用户只需要根据自己的需求增加不同的模块来实现自己所需的功能就可以,可谓是真正的无限扩展,另外OVM完善的API可以助力用户、商业软件生产商集成第三方软件到OVM平台。比如IDC运营商想要的是一个公有云门户对外提供有偿服务,那么就可以根据自己的需要增加一个公有云模块到OVM平台,一般企业用户想要的是一个私有云,那么可以直接使用OVM轻松构建自己的私有云平台,而政府、事业单位、以及大规模企业则想要的是一个混合云环境,因为这类单位既有自己内部的高保密业务,也有对外提供服务的公有云业务,那么此类单位则可以使用OVM的API借口对接阿里云、腾讯云、亚马逊云、Openstack等,实现自己的混合办公需求。

高效

高效是检验一个平台设计是否优秀的关键。大家都希望管理平台能为自己的工作带来高效率,这也是选择使用一个平台的初衷,OVM设计之初就将平台的高效性视为关键,整体采用全异步、无等待、无锁架构来确保平台的每个任务都是独立执行,即使同时有存储任务、网络任务、虚拟机任务等都在执行也互不干扰,从此避免了多任务同时执行带来的阻塞问题。另外OVM全异步架构也可以为一些批量任务的执行带来高效率,比如虚拟机的批量创建、监控数据的采集、节点状态的检测等,这些任务都可以为用户节省大量的时间,全异步架构说简单点就是各干各的事情,极大的提高了完成工作的效率。OVM无锁、无等待架构既保证了高并发,也兼顾了整体的性能。

功能特点

1、一站式自服务门户

OVM提供了一个完整的门户,单一控制台管理全球基础设施,利用OVMAPI,自助创建虚拟企业租户、虚拟数据中心的分租户和虚拟应用程序,完全自定义“快速”的实施,并提供一个简单的服务目录。门户还支持可选的审批工作流,包括完整的电子邮件集成的”一键式”管理。

2、基于角色的多租户权限

基于角色的访问控制提供可定义无限数量的独立用户角色,并指定权限到任意组合,选择从一个全局的范围或局部(虚拟企业、数据中心、虚拟数据中心)的范围,提供了无限的细粒度用户权限控制。集成LDAP,允许企业通过LDAP或Active Directory完全管理OVM用户。

3、云应用商店平台

OVM提供了一个基于Web的最终用户的门户网站,企业可以建立一个服务目录,只需在目录中点击一下按钮,即能以预配置虚拟设备的形式部署和使用多层应用,包括虚拟机、操作系统映像和其他介质,也可以从移动设备如iphone和ipad。可建立公共、共享和私有库,允许建立企业私有标准或预定义镜像库。允许把复杂的多层应用程序融合在一个易用的用户界面,只需从镜像库拖拽单个虚拟机,自定义资源,一键多批VM部署。

4、网络

OVM管理两种网络:

内部网络OVM默认网络。OVM完全可以管理这些网络,用户也可以在自助服务的基础上创建他们自己的私人网络。OVM机架配置定义Vlan可用池,OVM会自动将未使用的 VLAN 分配给一个新的内部网络。内部网络适用于OVM云不提供对外部通信的状况。允许用户VM在同一虚拟数据中心互相沟通。

外部网络外部网络允许基础设施的通信,云管理员必须分配ip地址范围和Vlan,每个外部网络被分配到OVM虚拟企业,可为每个云租客分配VLAN,以连接到外部基础设施。服务提供商可分配每个客户用的VLAN,通过现有的MPLS或VPN无缝连接到云或公司的局域网。

5、存储

OVM支持自动配置多种存储类型,包括NFS,ISCSI,光纤通道等八种存储类型。通过hypervisior,OVM可以提供新的虚拟机到任何存储类型包括光纤通道、iSCSi和NFS。

深度集成的iSCSiOVM现成集成与存储解决方案包括NetApp OnTap、Nexenta和 Linux LVM。集成的iSCSi为用户提供一个完整的自助服务经验,无需管理员便能创建他们自己的卷,并附加到虚拟机或删除这些卷。

存储池及层可以将多个存储设备添加到OVM以分配给存储层中的云用户。存储层能够为多个存储类型提供不同的性能、功能和价格点。允许云用户选择适合他们的要求或其价格点的存储层。iSCSi存储SDK允许第三方创建自己集成的存储插件和额外的存储平台。

6、监控

7×24小时全天候可用性和性能监控,并自动收集一套全面的可用性能指数和利用率的指标,比如CPU,内存,存储,网络I/O,通过高度可定制的的交互式图表,能够快速识别性能趋势,提前布局;

Prometheus时间序列监控方案

push 发表了文章 • 0 个评论 • 349 次浏览 • 2017-05-26 00:00 • 来自相关话题

最近一直在折腾时序类型的数据库,经过一段时间项目应用,觉得十分不错。而Prometheus又是刚刚推出不久的开源方案,中文资料较少,所以打算写一系列应用的实践过程分享一下。
 

Prometheus 是什么?

Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。

Prometheus 的优点

非常少的外部依赖,安装使用超简单已经有非常多的系统集成 例如:docker HAProxy Nginx JMX等等服务自动化发现直接集成到代码设计思想是按照分布式、微服务架构来实现的
 

Prometheus 的特性

自定义多维度的数据模型非常高效的存储 平均一个采样数据占 ~3.5 bytes左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G。强大的查询语句轻松实现数据可视化
 
等等, 相对于Graphite这种产品,还是有不少优点的。最让我觉得不错的是非常优秀的写性能和读取性能,它数据结构实现和OpenTSDB是有相似之处,有兴趣可以看看这个文档:解密OpenTSDB的表存储优 。

Prometheus 的系统架构





它的服务过程是这样的 Prometheus daemon 负责定时去目标上抓取 metrics(指标) 数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。

Prometheus支持通过配置文件、文本文件、zookeeper、Consul、DNS SRV lookup等方式指定抓取目标。
Alertmanager 是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。
Prometheus支持很多方式的图表可视化,例如十分精美的Grafana,自带的Promdash,以及自身提供的模版引擎等等,还提供HTTP API的查询方式,自定义所需要的输出。

PushGateway这个组件是支持Client主动推送 metrics 到PushGateway,而Prometheus只是定时去Gateway上抓取数据。

如果有使用过statsd的用户,则会觉得这十分相似,只是statsd是直接发送给服务器端,而Prometheus主要还是靠进程主动去抓取。

Prometheus 的数据模型

Prometheus 从根本上所有的存储都是按时间序列去实现的,相同的 metrics(指标名称) 和 label(一个或多个标签) 组成一条时间序列,不同的label表示不同的时间序列。为了支持一些查询,有时还会临时产生一些时间序列存储。
 
metrics name & label 指标名称和标签
每条时间序列是由唯一的 指标名称 和 一组 标签 (key=value)的形式组成。
指标名称 一般是给监测对像起一名字,例如 http_requests_total 这样,它有一些命名规则,可以包字母数字_之类的的。

通常是以应用名称开头_监测对像_数值类型_单位这样, 例如:
push_totaluserlogin_mysql_duration_secondsapp_memory_usage_bytes
 
标签 就是对一条时间序列不同维度的识别了,例如 一个http请求用的是POST还是GET,它的endpoint是什么,这时候就要用标签去标记了, 最终形成的标识便是这样了:http_requests_total{method="POST",endpoint="/api/tracks"}记住,针对http_requests_total这个metrics name 无论是增加标签还是删除标签都会形成一条新的时间序列。
查询语句就可以跟据上面标签的组合来查询聚合结果了。

如果以传统数据库的理解来看这条语句,则可以考虑 http_requests_total是表名,标签是字段,而timestamp是主键,还有一个float64字段是值了。(Prometheus里面所有值都是按float64存储)。

Prometheus 的四种数据类型

Counter:
Counter 用于累计值,例如 记录 请求次数、任务完成数、错误发生次数。一直增加,不会减少。重启进程后,会被重置。
例如:http_response_total{method="GET",endpoint="/api/tracks"} 100
10秒后抓取 http_response_total{method="GET",endpoint="/api/tracks"} 100
Gauge:
Gauge 常规数值,例如 温度变化、内存使用变化。可变大,可变小。重启进程后,会被重置
例如: memory_usage_bytes{host="master-01"} 100 < 抓取值
memory_usage_bytes{host="master-01"} 30
memory_usage_bytes{host="master-01"} 50
memory_usage_bytes{host="master-01"} 80 < 抓取值
Histogram:
Histogram 可以理解为柱状图的意思,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。它特别之处是可以对记录的内容进行分组,提供 count 和 sum 全部值的功能。
例如:{小于10=5次,小于20=1次,小于30=2次},count=7次,sum=7次的求和值



 
Summary:
Summary和Histogram十分相似,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。同样提供 count 和 sum 全部值的功能。例如:count=7次,sum=7次的值求值它提供一个quantiles的功能,可以按%比划分跟踪的结果。例如:quantile取值0.95,表示取采样值里面的95%数据。
 
分享阅读原文:http://www.cnblogs.com/vovlie/p/Prometheus_CONCEPTS.html  查看全部
最近一直在折腾时序类型的数据库,经过一段时间项目应用,觉得十分不错。而Prometheus又是刚刚推出不久的开源方案,中文资料较少,所以打算写一系列应用的实践过程分享一下。
 


Prometheus 是什么?


Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。


Prometheus 的优点


  • 非常少的外部依赖,安装使用超简单
  • 已经有非常多的系统集成 例如:docker HAProxy Nginx JMX等等
  • 服务自动化发现
  • 直接集成到代码
  • 设计思想是按照分布式、微服务架构来实现的

 


Prometheus 的特性


  • 自定义多维度的数据模型
  • 非常高效的存储 平均一个采样数据占 ~3.5 bytes左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G。
  • 强大的查询语句
  • 轻松实现数据可视化

 
等等, 相对于Graphite这种产品,还是有不少优点的。最让我觉得不错的是非常优秀的写性能和读取性能,它数据结构实现和OpenTSDB是有相似之处,有兴趣可以看看这个文档:解密OpenTSDB的表存储优 。


Prometheus 的系统架构


prometheus.png

它的服务过程是这样的 Prometheus daemon 负责定时去目标上抓取 metrics(指标) 数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。

Prometheus支持通过配置文件、文本文件、zookeeper、Consul、DNS SRV lookup等方式指定抓取目标。
Alertmanager 是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。
Prometheus支持很多方式的图表可视化,例如十分精美的Grafana,自带的Promdash,以及自身提供的模版引擎等等,还提供HTTP API的查询方式,自定义所需要的输出。

PushGateway这个组件是支持Client主动推送 metrics 到PushGateway,而Prometheus只是定时去Gateway上抓取数据。

如果有使用过statsd的用户,则会觉得这十分相似,只是statsd是直接发送给服务器端,而Prometheus主要还是靠进程主动去抓取。


Prometheus 的数据模型


Prometheus 从根本上所有的存储都是按时间序列去实现的,相同的 metrics(指标名称) 和 label(一个或多个标签) 组成一条时间序列,不同的label表示不同的时间序列。为了支持一些查询,有时还会临时产生一些时间序列存储。
 
metrics name & label 指标名称和标签
每条时间序列是由唯一的 指标名称 和 一组 标签 (key=value)的形式组成。
指标名称 一般是给监测对像起一名字,例如 http_requests_total 这样,它有一些命名规则,可以包字母数字_之类的的。

通常是以应用名称开头_监测对像_数值类型_单位这样, 例如:
  1. push_total
  2. userlogin_mysql_duration_seconds
  3. app_memory_usage_bytes

 
标签 就是对一条时间序列不同维度的识别了,例如 一个http请求用的是POST还是GET,它的endpoint是什么,这时候就要用标签去标记了, 最终形成的标识便是这样了:
http_requests_total{method="POST",endpoint="/api/tracks"}
记住,针对http_requests_total这个metrics name 无论是增加标签还是删除标签都会形成一条新的时间序列。
查询语句就可以跟据上面标签的组合来查询聚合结果了。

如果以传统数据库的理解来看这条语句,则可以考虑 http_requests_total是表名,标签是字段,而timestamp是主键,还有一个float64字段是值了。(Prometheus里面所有值都是按float64存储)。


Prometheus 的四种数据类型


Counter:
  • Counter 用于累计值,例如 记录 请求次数、任务完成数、错误发生次数。
  • 一直增加,不会减少。
  • 重启进程后,会被重置。

例如:http_response_total{method="GET",endpoint="/api/tracks"} 100
10秒后抓取 http_response_total{method="GET",endpoint="/api/tracks"} 100

Gauge:
  • Gauge 常规数值,例如 温度变化、内存使用变化。
  • 可变大,可变小。
  • 重启进程后,会被重置

例如: memory_usage_bytes{host="master-01"} 100 < 抓取值
memory_usage_bytes{host="master-01"} 30
memory_usage_bytes{host="master-01"} 50
memory_usage_bytes{host="master-01"} 80 < 抓取值

Histogram:
  • Histogram 可以理解为柱状图的意思,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。它特别之处是可以对记录的内容进行分组,提供 count 和 sum 全部值的功能。

例如:{小于10=5次,小于20=1次,小于30=2次},count=7次,sum=7次的求和值
sum.png

 
Summary:
  • Summary和Histogram十分相似,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。同样提供 count 和 sum 全部值的功能。
  • 例如:count=7次,sum=7次的值求值
  • 它提供一个quantiles的功能,可以按%比划分跟踪的结果。例如:quantile取值0.95,表示取采样值里面的95%数据。

 
分享阅读原文:http://www.cnblogs.com/vovlie/p/Prometheus_CONCEPTS.html 

influxdata监控系统介绍

koyo 发表了文章 • 0 个评论 • 1009 次浏览 • 2016-09-12 20:03 • 来自相关话题

influxdata是一个强大的实时监控系统,分为4个部分,系统架构图如下: 





Telegraf

Telegraf负责收集监控数据,并将数据输出到influxDB数据库,它支持多种类型的数据输入,比如httpjson、mysql、rabbitMQ等等。
 

InfluxDB





InfluxDB 是一个开源分布式时序、事件和指标数据库。使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。
 

Chronograf





从InfluxDB时间序列数据的数据可视化工具,负责从InfluxDB收集数据,并将数据图表以web的形式发布。
 

Kapacitor





Kapacitor是InfluxDB的数据处理引擎,主要作用是时间序列数据处理、监视和警报。
 

Enterprise Manager

Enterprise Manager是正在开发的UI系统,用于更加广泛的图形展示。

InfluxData平台是第一个专用,端到端解决方案收集、存储、可视化和警报在时间序列数据规模。基于堆栈,所有组件平台的设计无缝地协同工作。TICK堆栈是什么?这是influxdata的愿景管理时间序列数据的完整的数据平台。 查看全部
influxdata是一个强大的实时监控系统,分为4个部分,系统架构图如下: 
influxdata.png


Telegraf


Telegraf负责收集监控数据,并将数据输出到influxDB数据库,它支持多种类型的数据输入,比如httpjson、mysql、rabbitMQ等等。
 


InfluxDB


influxdb.png

InfluxDB 是一个开源分布式时序、事件和指标数据库。使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。
 


Chronograf


chronrogf.png

从InfluxDB时间序列数据的数据可视化工具,负责从InfluxDB收集数据,并将数据图表以web的形式发布。
 


Kapacitor


kapacitor.png

Kapacitor是InfluxDB的数据处理引擎,主要作用是时间序列数据处理、监视和警报。
 


Enterprise Manager


Enterprise Manager是正在开发的UI系统,用于更加广泛的图形展示。

InfluxData平台是第一个专用,端到端解决方案收集、存储、可视化和警报在时间序列数据规模。基于堆栈,所有组件平台的设计无缝地协同工作。TICK堆栈是什么?这是influxdata的愿景管理时间序列数据的完整的数据平台。
tick-stack-grid.jpg

Docker的Web Ui管理和监控系统海鸥

OpenSkill 发表了文章 • 0 个评论 • 1543 次浏览 • 2016-08-23 00:33 • 来自相关话题

功能介绍

Seagull是一套友好的Web用户界面,用来全面的管理和监控Docker管理系统。
易于安装和Docker容器内卸载一键启动/停止/删除容器和image超快速(<10ms)的搜索和过滤支持多主机管理和监控国际化包括英语,中国,德国和法国
欲了解更多信息,请访问dockerseagull.com ,看三分钟的视频和官方的幻灯片 。
 

安装

安装非常简单,一条命令搞定,就是so easy!docker run -d -p 10086:10086 -v /var/run/docker.sock:/var/run/docker.sock tobegit3hub/seagull 或者运行:docker-compose up -d然后直接访问http://127.0.0.1:10086监控你的Docker容器;对于boot2docker用户,请运行boot2docker ip找到真正的IP地址。
 

Web效果图










多主机

海鸥支持监视多个服务器。 请确保你启动Docker的守护进程是这个样子 docker -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -api-enable-cors=true -d

参与开发

海鸥是用Go和JavaScript实现的,使用了Beego、AngularJS、Bootstrap、Bower、JQuery和Docker等工具。你可以Fork这个项目并且按你的需求发送Pull-request。
配置Go路径然后尝试echo $GOPATHgo get github.com/astaxie/beegogo get github.com/beego/beegit clone https://github.com/tobegit3hub/seagull.git $GOPATH/src/github.com/tobegit3hub/seagull/go build seagull.go或者运行bee run seagull来调试./seagull或者运行sudo ./seagull来访问/var/run/docker.sock
更详细的海鸥设计和实施,还有非常好完善的帮助文档 。

注意

问题 #2表明,如果海鸥的IP和端口暴露每个人都可以访问您的Docker守护进程。 为了安全,你可以绑定到localhost来限制访问。
 
项目地址:https://github.com/tobegit3hub/seagull
  查看全部


功能介绍


Seagull是一套友好的Web用户界面,用来全面的管理和监控Docker管理系统。
  • 易于安装和Docker容器内卸载
  • 一键启动/停止/删除容器和image
  • 超快速(<10ms)的搜索和过滤
  • 支持多主机管理和监控
  • 国际化包括英语,中国,德国和法国

欲了解更多信息,请访问dockerseagull.com ,看三分钟的视频和官方的幻灯片
 


安装


安装非常简单,一条命令搞定,就是so easy!
docker run -d -p 10086:10086 -v /var/run/docker.sock:/var/run/docker.sock tobegit3hub/seagull 
或者运行:
docker-compose up -d
然后直接访问http://127.0.0.1:10086监控你的Docker容器;对于boot2docker用户,请运行boot2docker ip找到真正的IP地址。
 


Web效果图


docker_web_ui.png

DockerWebUI.png


多主机


海鸥支持监视多个服务器。 请确保你启动Docker的守护进程是这个样子
 docker -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -api-enable-cors=true -d 


参与开发


海鸥是用Go和JavaScript实现的,使用了Beego、AngularJS、Bootstrap、Bower、JQuery和Docker等工具。你可以Fork这个项目并且按你的需求发送Pull-request。
  • 配置Go路径然后尝试echo $GOPATH
  • go get github.com/astaxie/beego
  • go get github.com/beego/bee
  • git clone https://github.com/tobegit3hub/seagull.git $GOPATH/src/github.com/tobegit3hub/seagull/
  • go build seagull.go或者运行bee run seagull来调试
  • ./seagull或者运行sudo ./seagull来访问/var/run/docker.sock

更详细的海鸥设计和实施,还有非常好完善的帮助文档 。


注意


问题 #2表明,如果海鸥的IP和端口暴露每个人都可以访问您的Docker守护进程。 为了安全,你可以绑定到localhost来限制访问。
 
项目地址:https://github.com/tobegit3hub/seagull
 


华为开源支持Apache Hadoop的列式存储文件格式的CarbonData

Geek小A 发表了文章 • 0 个评论 • 889 次浏览 • 2016-06-14 21:35 • 来自相关话题

CarbonData是由华为开发、开源并支持Apache Hadoop的列式存储文件格式,支持索引、压缩以及解编码等,其目的是为了实现同一份数据达到多种需求,而且能够实现更快的交互查询。目前该项目正处于Apache孵化过程中。

为什么重新设计一种文件格式

目前华为针对数据的需求分析主要有以下5点要求:
[]支持海量数据扫描并取其中几列;[/][]支持根据主键进行查找,并在压秒级响应;[/][]支持在海量数据进行类似于OLAP的交互式查询,并且查询中涉及到许多过滤条件,这种类型的workload应该在几秒钟内响应;[/][]支持快速地抽取单独的记录,并且从该记录中获取到所有列信息;[/][]支持HDFS,这样客户可以利用现有的Hadoop集群。[/]

目前现有的Hadoop生态系统中没有同时满足这五点要求文件格式。比如Parquet/ORC的文件仅仅满足第一和第五条要求,而其他的要求无法满足,所以基于这些事实华为开始开发CarbonData。

CarbonData有啥优势

CarbonData文件格式是基于列式存储的,并存储在HDFS之上;其包含了现有列式存储文件格式的许多有点,比如:可分割、可压缩、支持复杂数据类型等;并且CarbonData为了解决上面5点要求,加入了许多独特的特性,主要概括为以下四点:
[]存储数据及其索引:在有过滤的查询中,它可以显著地加速查询性能,减少I/O和CPU资源。CarbonData的索引由多级索引组成,处理框架可以利用这些索引信息来减少调度和一些处理的开销;在任务扫描数据的时候它可以仅仅扫描更细粒度的单元(称为blocklet),而不需要扫描整个文件。[/][]可操作的编码数据:通过支持高效的压缩和全局编码模式,它可以直接在压缩或者编码的数据上查询,仅仅在需要返回结果的时候才进行转换,这种技术被称为late materialized。[/][]列组:支持多列组成一个列组,并且使用行格式进行存储,这减少了查询时行重建的开销。[/][]支持多种使用场景:比如支持类OLAP风格的交互式查询、顺序存取、随机访问等。[/]

CarbonData文件格式

一个CarbonData文件是由一系列被称为blocklet组成的;除了blocklet,还有许多其他的元信息,比如模式、偏移量以及索引信息等,这些元信息是存储在CarbonData文件中的footer里。

每当在内存中建立索引的时候都需要读取footer里面的信息,因为可以利用这些信息优化后续所有的查询。

每个blocklet又是由许多Data Chunks组成。Data Chunks里面的数据既可以按列或者行的形式存储;数据既可以是单独的一列也可以是许多列。文件中所有的blocklets都包含相同数量和类型的Data Chunks。CarbonData文件格式如下所示:




每个Data Chunk又是由许多被称为Pages的单元组成。总共有三种类型的pages:

1、Data Page:包含一列或者列组的编码数据;

2、Row ID Page:包含行id的映射,在Data Page以反向索引的形式存储时会被使用;

3、RLE Page:包含一些额外的元信息,只有在Data Page使用RLE编码的时候会被使用。

CarbonData文件的详细信息如下:





编译CarbonData

编译CarbonData的预备条件:
1、类Unix环境(Linux, Mac OS X)
2、git
3、Apache Maven (推荐使用3.0.4)
4、Java 7 or 8
5、Scala 2.10
6、Apache Thrift 0.9.3
从github中克隆CarbonData$ git clone https://github.com/HuaweiBigData/carbondata.git根据自己需求依次选择下面命令编译CarbonData
1、Build without testing$ cd carbondata
$ mvn -DskipTests clean install 2、Build with testing:$ cd carbondata
$ mvn clean install3、Build along with integration test cases$ cd carbondata
$ mvn -Pintegration-test clean install更多关于Carbondata的信息请参考:https://github.com/HuaweiBigData/carbondata 
分享原文地址:http://www.iteblog.com/archives/1689 查看全部
CarbonData是由华为开发、开源并支持Apache Hadoop的列式存储文件格式,支持索引、压缩以及解编码等,其目的是为了实现同一份数据达到多种需求,而且能够实现更快的交互查询。目前该项目正处于Apache孵化过程中。


为什么重新设计一种文件格式


目前华为针对数据的需求分析主要有以下5点要求:
    []支持海量数据扫描并取其中几列;[/][]支持根据主键进行查找,并在压秒级响应;[/][]支持在海量数据进行类似于OLAP的交互式查询,并且查询中涉及到许多过滤条件,这种类型的workload应该在几秒钟内响应;[/][]支持快速地抽取单独的记录,并且从该记录中获取到所有列信息;[/][]支持HDFS,这样客户可以利用现有的Hadoop集群。[/]


目前现有的Hadoop生态系统中没有同时满足这五点要求文件格式。比如Parquet/ORC的文件仅仅满足第一和第五条要求,而其他的要求无法满足,所以基于这些事实华为开始开发CarbonData。


CarbonData有啥优势


CarbonData文件格式是基于列式存储的,并存储在HDFS之上;其包含了现有列式存储文件格式的许多有点,比如:可分割、可压缩、支持复杂数据类型等;并且CarbonData为了解决上面5点要求,加入了许多独特的特性,主要概括为以下四点:
    []存储数据及其索引:在有过滤的查询中,它可以显著地加速查询性能,减少I/O和CPU资源。CarbonData的索引由多级索引组成,处理框架可以利用这些索引信息来减少调度和一些处理的开销;在任务扫描数据的时候它可以仅仅扫描更细粒度的单元(称为blocklet),而不需要扫描整个文件。[/][]可操作的编码数据:通过支持高效的压缩和全局编码模式,它可以直接在压缩或者编码的数据上查询,仅仅在需要返回结果的时候才进行转换,这种技术被称为late materialized。[/][]列组:支持多列组成一个列组,并且使用行格式进行存储,这减少了查询时行重建的开销。[/][]支持多种使用场景:比如支持类OLAP风格的交互式查询、顺序存取、随机访问等。[/]


CarbonData文件格式


一个CarbonData文件是由一系列被称为blocklet组成的;除了blocklet,还有许多其他的元信息,比如模式、偏移量以及索引信息等,这些元信息是存储在CarbonData文件中的footer里。

每当在内存中建立索引的时候都需要读取footer里面的信息,因为可以利用这些信息优化后续所有的查询。

每个blocklet又是由许多Data Chunks组成。Data Chunks里面的数据既可以按列或者行的形式存储;数据既可以是单独的一列也可以是许多列。文件中所有的blocklets都包含相同数量和类型的Data Chunks。CarbonData文件格式如下所示:
carbon_data_file_structure_new.png

每个Data Chunk又是由许多被称为Pages的单元组成。总共有三种类型的pages:

1、Data Page:包含一列或者列组的编码数据;

2、Row ID Page:包含行id的映射,在Data Page以反向索引的形式存储时会被使用;

3、RLE Page:包含一些额外的元信息,只有在Data Page使用RLE编码的时候会被使用。

CarbonData文件的详细信息如下:
carbon_data_format_new.png


编译CarbonData


编译CarbonData的预备条件:
1、类Unix环境(Linux, Mac OS X)
2、git
3、Apache Maven (推荐使用3.0.4)
4、Java 7 or 8
5、Scala 2.10
6、Apache Thrift 0.9.3
从github中克隆CarbonData
$ git clone https://github.com/HuaweiBigData/carbondata.git
根据自己需求依次选择下面命令编译CarbonData
1、Build without testing
$ cd carbondata
$ mvn -DskipTests clean install
2、Build with testing:
$ cd carbondata
$ mvn clean install
3、Build along with integration test cases
$ cd carbondata
$ mvn -Pintegration-test clean install
更多关于Carbondata的信息请参考:https://github.com/HuaweiBigData/carbondata 
分享原文地址:http://www.iteblog.com/archives/1689

php扩展谷歌JsonNet发布

chris 发表了文章 • 0 个评论 • 645 次浏览 • 2016-06-02 16:33 • 来自相关话题

就在昨天,六一儿童节,云智慧高级架构师Neeke把支持谷歌的JsonNet的php扩展模块封装开源了!
 
简单语法改进
Input (Jsonnet){
cocktails: {
// Ingredient quantities are in fluid ounces.
"Tom Collins": {
ingredients: [
{ kind: "Farmers Gin", qty: 1.5 },
{ kind: "Lemon", qty: 1 },
{ kind: "Simple Syrup", qty: 0.5 },
{ kind: "Soda", qty: 2 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Tall",
},
Manhattan: {
ingredients: [
{ kind: "Rye", qty: 2.5 },
{ kind: "Sweet Red Vermouth", qty: 1 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Straight Up",
},
}
}Output (JSON){
"cocktails": {

"Tom Collins": {
"ingredients": [
{ "kind": "Farmers Gin", "qty": 1.5 },
{ "kind": "Lemon", "qty": 1 },
{ "kind": "Simple Syrup", "qty": 0.5 },
{ "kind": "Soda", "qty": 2 },
{ "kind": "Angostura", "qty": "dash" }
],
"garnish": "Maraschino Cherry",
"served": "Tall"
},
"Manhattan": {
"ingredients": [
{ "kind": "Rye", "qty": 2.5 },
{ "kind": "Sweet Red Vermouth", "qty": 1 },
{ "kind": "Angostura", "qty": "dash" }
],
"garnish": "Maraschino Cherry",
"served": "Straight Up"
}
}
}Demo of PHP JsonNet::evaluateFile('bar_menu.1.jsonnet');

$Snippet = '
{
cocktails: {
// Ingredient quantities are in fluid ounces.
"Tom Collins": {
ingredients: [
{ kind: "Farmers Gin", qty: 1.5 },
{ kind: "Lemon", qty: 1 },
{ kind: "Simple Syrup", qty: 0.5 },
{ kind: "Soda", qty: 2 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Tall",
},
Manhattan: {
ingredients: [
{ kind: "Rye", qty: 2.5 },
{ kind: "Sweet Red Vermouth", qty: 1 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Straight Up",
},
}
}
';

var_dump(JsonNet::evaluateSnippet($Snippet));安装请参考我的实践文章:http://www.openskill.cn/article/373
 
项目地址:

Github:https://github.com/Neeke/Jsonnet-PHP
Pecl:  http://pecl.php.net/package/jsonnet 
Gitosc:  http://git.oschina.net/ciogao/Jsonnet-PHP 查看全部
就在昨天,六一儿童节,云智慧高级架构师Neeke把支持谷歌的JsonNet的php扩展模块封装开源了!
 
简单语法改进
Input (Jsonnet)
{
cocktails: {
// Ingredient quantities are in fluid ounces.
"Tom Collins": {
ingredients: [
{ kind: "Farmers Gin", qty: 1.5 },
{ kind: "Lemon", qty: 1 },
{ kind: "Simple Syrup", qty: 0.5 },
{ kind: "Soda", qty: 2 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Tall",
},
Manhattan: {
ingredients: [
{ kind: "Rye", qty: 2.5 },
{ kind: "Sweet Red Vermouth", qty: 1 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Straight Up",
},
}
}
Output (JSON)
{
"cocktails": {

"Tom Collins": {
"ingredients": [
{ "kind": "Farmers Gin", "qty": 1.5 },
{ "kind": "Lemon", "qty": 1 },
{ "kind": "Simple Syrup", "qty": 0.5 },
{ "kind": "Soda", "qty": 2 },
{ "kind": "Angostura", "qty": "dash" }
],
"garnish": "Maraschino Cherry",
"served": "Tall"
},
"Manhattan": {
"ingredients": [
{ "kind": "Rye", "qty": 2.5 },
{ "kind": "Sweet Red Vermouth", "qty": 1 },
{ "kind": "Angostura", "qty": "dash" }
],
"garnish": "Maraschino Cherry",
"served": "Straight Up"
}
}
}
Demo of PHP
    JsonNet::evaluateFile('bar_menu.1.jsonnet');

$Snippet = '
{
cocktails: {
// Ingredient quantities are in fluid ounces.
"Tom Collins": {
ingredients: [
{ kind: "Farmers Gin", qty: 1.5 },
{ kind: "Lemon", qty: 1 },
{ kind: "Simple Syrup", qty: 0.5 },
{ kind: "Soda", qty: 2 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Tall",
},
Manhattan: {
ingredients: [
{ kind: "Rye", qty: 2.5 },
{ kind: "Sweet Red Vermouth", qty: 1 },
{ kind: "Angostura", qty: "dash" },
],
garnish: "Maraschino Cherry",
served: "Straight Up",
},
}
}
';

var_dump(JsonNet::evaluateSnippet($Snippet));
安装请参考我的实践文章:http://www.openskill.cn/article/373
 
项目地址


Github:https://github.com/Neeke/Jsonnet-PHP
Pecl:  http://pecl.php.net/package/jsonnet 
Gitosc:  http://git.oschina.net/ciogao/Jsonnet-PHP


开源Mysql自动补全、语法高亮客户端Mycli

chris 发表了文章 • 0 个评论 • 1266 次浏览 • 2016-05-30 20:38 • 来自相关话题

介绍:MyCli是一个MySQL的命令行客户端,可以实现自动补全(auto-completion)和语法高亮,同时也可应用于MariaDB和Percona。
 
功能特征:
[]MyCli使用Python Prompt Toolkit编写。[/][]支持语法高亮[/][]当你输入SQL关键字,数据库的表格和列时可自动补全。[/][]智能补全(默认启用),会提示文本感应的(context-sensitive)补全。[/][]配置文件在第一次启动时,自动创建在~/.myclirc[/]
 
安装:
兼容性:
OS X和Linux上测试过。运行在Python 2.6,2.6,3.3,3.4和3.5。能够很好地处理unicode输入/输出。
 
Python Package:
$ pip install mycli

or

$ easy_install mycli
 Mac OS X:
最简单的方法在OS X机器安装mycli是使用homebrew
$ brew update && brew install mycliLinux:
Debian/Ubuntu Package:
mycli托管在debian软件包packagecloud.io.
添加gpg密钥packagecloud包验证。
$ curl https://packagecloud.io/gpg.key | apt-key add -安装apt-transport-https包,支持apt使用https下载包
$ apt-get install -y apt-transport-https添加mycli安装源
$ echo "deb https://packagecloud.io/amjith/mycli/ubuntu/ trusty main" | sudo tee -a /etc/apt/sources.list更新mycli的安装源,然后安装mycli
$ sudo apt-get update
$ sudo apt-get install mycli现在使用sudo apt-get upgrade mycli很容易使mycli升级!
 
RHEL, Centos, Fedora:
我还没有为mycli构建RPM包。所以请使用pip安装mycli。你可以在你的系统上安装pip使用:
$ sudo yum install python-pip python-devel一旦安装pip,您可以如下安装mycli:
$ sudo pip install mycli
效果图:
自动补全
简单的完成如关键字和sql函数。




 
智能提示
Table name completions after the 'FROM' keyword.
 




列名中引用的表的查询范围




 
别名支持
列完成将即使工作表名称别名。




 
语法高亮显示
sql的语法高亮显示。




 
pager
一个sql命令的输出是通过更少的命令自动输送。




 
动态效果图如下:




 

项目官网:http://mycli.net/
开源地址:https://github.com/dbcli/mycli 查看全部
介绍:MyCli是一个MySQL的命令行客户端,可以实现自动补全(auto-completion)和语法高亮,同时也可应用于MariaDB和Percona。
 
功能特征:
    []MyCli使用Python Prompt Toolkit编写。[/][]支持语法高亮[/][]当你输入SQL关键字,数据库的表格和列时可自动补全。[/][]智能补全(默认启用),会提示文本感应的(context-sensitive)补全。[/][]配置文件在第一次启动时,自动创建在~/.myclirc[/]

 
安装:
兼容性:
OS X和Linux上测试过。运行在Python 2.6,2.6,3.3,3.4和3.5。能够很好地处理unicode输入/输出。
 
Python Package:
$ pip install mycli

or

$ easy_install mycli

 Mac OS X:
最简单的方法在OS X机器安装mycli是使用homebrew
$ brew update && brew install mycli
Linux:
Debian/Ubuntu Package:
mycli托管在debian软件包packagecloud.io.
添加gpg密钥packagecloud包验证。
 $ curl https://packagecloud.io/gpg.key | apt-key add -
安装apt-transport-https包,支持apt使用https下载包
$ apt-get install -y apt-transport-https
添加mycli安装源
$ echo "deb https://packagecloud.io/amjith/mycli/ubuntu/ trusty main" | sudo tee -a /etc/apt/sources.list
更新mycli的安装源,然后安装mycli
$ sudo apt-get update
$ sudo apt-get install mycli
现在使用sudo apt-get upgrade mycli很容易使mycli升级!
 
RHEL, Centos, Fedora:
我还没有为mycli构建RPM包。所以请使用pip安装mycli。你可以在你的系统上安装pip使用:
$ sudo yum install python-pip python-devel
一旦安装pip,您可以如下安装mycli:
$ sudo pip install mycli

效果图:
自动补全
简单的完成如关键字和sql函数。
t1.png

 
智能提示
Table name completions after the 'FROM' keyword.
 
t2.png

列名中引用的表的查询范围
t3.png

 
别名支持
列完成将即使工作表名称别名。
t4.png

 
语法高亮显示
sql的语法高亮显示。
t5.png

 
pager
一个sql命令的输出是通过更少的命令自动输送。
t6.png

 
动态效果图如下:
dt.gif

 


项目官网:http://mycli.net/
开源地址:https://github.com/dbcli/mycli


道里云开源DaoliNet高效动态Docker网络

chris 发表了文章 • 0 个评论 • 1069 次浏览 • 2016-05-28 17:58 • 来自相关话题

DaoliNet是高效和动态Docker网络
DaoliNet是一个软件,旨在提供Docker容器效率和动态连接,这是适合于Docker容器的微服务工作负荷的重量轻且短暂性质定义网络(SDN)的系统。

高级特征:
[]资源高效:容器连接消耗,当容器不主动沟通的小主机资源,而且可以立即切换到提供完整的连接能力。 这是在主机CPU资源的容器有效地利用相同的方式。 你获得更多的服务器资源。[/][]分布在任何地方:Docker服务器可以在公共云,如AWS在自己的数据中心的笔记本电脑或PC你的办公室或家中,服务器的防火墙内,或虚拟机。[/][]网络虚拟化:您可以选择任何CIDR IP地址,你的容器和容器可以保持IP地址移动物理位置后保持不变。[/][]使用开放式的V-Switch纯软件实现(OVS):提供网络功能的分布式交换机,路由器,网关和防火墙。 在插件的即插即用的简单系统的部署。[/]
要了解更多关于DaoliNet: http://www.daolinet.org 
 
Docker在高效和动态网络的需求
提供高效的微服务容器时,可以在生命周期短暂的高度:大量的Docker动态云集装箱的需要快速建立连接,以及频繁更换连接状态。 传统的数据平面的路由学习技术要求泊坞窗服务器经常学习和更新了大量动态的容器,这转化为较低的高效利用服务器资源的路由信息。 迄今为止,网络是Docker的核心特征是相对不成熟,仍处于开发状态。

架构
DaoliNet的网络体系结构是基于OpenFlow的标准。 它采用的OpenFlow控制器作为智能控制平面,和Open-V开关(OVSes)来实现数据路径。 该OpenFlow的控制器在DaoliNet是逻辑上集中的实体,但实际一组HA分布式Web服务类似物。  OVSes是无所不在提供Linux内核,因此可以应用在所有的Docker服务器。

在DaoliNet网络中,所有Docker服务器都在其中无论是身体或VPN连接的以太网。 每个Docker服务器充当所有在该服务器上托管的容器的工作负载的虚拟路由器。 然而,这些虚拟路由器的OpenFlow技术工作,他们不运行任何路由算法。 在一个容器发起连接,所涉及的虚拟路由器将实时由OpenFlow的控制器配置成建立路由。





怎么运行的
当容器开始在Docker服务器作为源路由器将发出一个PacketIn请求的OpenFlow控制器的连接时,OVS。 该PacketIn请求是刚刚从启动容器中的第一个数据包。 在OpenFlow的控制器,知道所有Docker服务器,路由器OpenFlow技术在系统中,看到PacketIn,可以识别它承载容器作为目标工作负载的另一个Docker服务器。 该第二Docker服务器是为连接目的地路由器。 所述的OpenFlow控制器将有一对PacketOut流,一个用于源服务器,和另一个用于目标服务器的响应。 这些PacketOut流建立在两个容器之间热插拔路线,见下图:




当一个连接变得空闲并且在一个时间阈值,则热插拔路线将超时和删除以释放服务器的资源。 由于热插拔路由建立快速,删除不活动的连接可以在重新连接被重新热插拔。 因此Docker服务器作为DaoliNet路由器工作在无连接,无资源消耗的风格。 网络资源利用率的这种风格完全匹配利用服务器CPU在该容器的时候,闲置集装箱消耗很少的服务器资源. DaoliNet是一种有效的和动态的网络技术用于连接Docker容器。

简单的网络为集装箱
在DaoliNet,在系统Docker服务器处于未会意酮另一个的一个简单的状态,完全独立于彼此。 这个体系结构不仅节省了资源利用率,但更重要的是Docker服务器之间的独立关系极大地简化了资源的管理。 扩展资源池是为服务器添加到游泳池和通知的OpenFlow控制器的即插即用的打法一样简单。 需要在路由器之间没有复杂的路由表查找和更新。 也没有必要Docker服务器成对运行一些包的封装协议,它不仅是资源利用效率低,而且会抵消网络诊断和故障排除工具,如跟踪路由。
更多了解官网: http://www.daolinet.org/html/technology.html 
Github项目地址:https://github.com/daolinet/daolinet 查看全部
daolinet.png

DaoliNet是高效和动态Docker网络
DaoliNet是一个软件,旨在提供Docker容器效率和动态连接,这是适合于Docker容器的微服务工作负荷的重量轻且短暂性质定义网络(SDN)的系统。

高级特征:
    []资源高效:容器连接消耗,当容器不主动沟通的小主机资源,而且可以立即切换到提供完整的连接能力。 这是在主机CPU资源的容器有效地利用相同的方式。 你获得更多的服务器资源。[/][]分布在任何地方:Docker服务器可以在公共云,如AWS在自己的数据中心的笔记本电脑或PC你的办公室或家中,服务器的防火墙内,或虚拟机。[/][]网络虚拟化:您可以选择任何CIDR IP地址,你的容器和容器可以保持IP地址移动物理位置后保持不变。[/][]使用开放式的V-Switch纯软件实现(OVS):提供网络功能的分布式交换机,路由器,网关和防火墙。 在插件的即插即用的简单系统的部署。[/]

要了解更多关于DaoliNet: http://www.daolinet.org 
 
Docker在高效和动态网络的需求
提供高效的微服务容器时,可以在生命周期短暂的高度:大量的Docker动态云集装箱的需要快速建立连接,以及频繁更换连接状态。 传统的数据平面的路由学习技术要求泊坞窗服务器经常学习和更新了大量动态的容器,这转化为较低的高效利用服务器资源的路由信息。 迄今为止,网络是Docker的核心特征是相对不成熟,仍处于开发状态。

架构
DaoliNet的网络体系结构是基于OpenFlow的标准。 它采用的OpenFlow控制器作为智能控制平面,和Open-V开关(OVSes)来实现数据路径。 该OpenFlow的控制器在DaoliNet是逻辑上集中的实体,但实际一组HA分布式Web服务类似物。  OVSes是无所不在提供Linux内核,因此可以应用在所有的Docker服务器。

在DaoliNet网络中,所有Docker服务器都在其中无论是身体或VPN连接的以太网。 每个Docker服务器充当所有在该服务器上托管的容器的工作负载的虚拟路由器。 然而,这些虚拟路由器的OpenFlow技术工作,他们不运行任何路由算法。 在一个容器发起连接,所涉及的虚拟路由器将实时由OpenFlow的控制器配置成建立路由。
dotnet.png


怎么运行的
当容器开始在Docker服务器作为源路由器将发出一个PacketIn请求的OpenFlow控制器的连接时,OVS。 该PacketIn请求是刚刚从启动容器中的第一个数据包。 在OpenFlow的控制器,知道所有Docker服务器,路由器OpenFlow技术在系统中,看到PacketIn,可以识别它承载容器作为目标工作负载的另一个Docker服务器。 该第二Docker服务器是为连接目的地路由器。 所述的OpenFlow控制器将有一对PacketOut流,一个用于源服务器,和另一个用于目标服务器的响应。 这些PacketOut流建立在两个容器之间热插拔路线,见下图:
dnet2.png

当一个连接变得空闲并且在一个时间阈值,则热插拔路线将超时和删除以释放服务器的资源。 由于热插拔路由建立快速,删除不活动的连接可以在重新连接被重新热插拔。 因此Docker服务器作为DaoliNet路由器工作在无连接,无资源消耗的风格。 网络资源利用率的这种风格完全匹配利用服务器CPU在该容器的时候,闲置集装箱消耗很少的服务器资源. DaoliNet是一种有效的和动态的网络技术用于连接Docker容器。

简单的网络为集装箱
在DaoliNet,在系统Docker服务器处于未会意酮另一个的一个简单的状态,完全独立于彼此。 这个体系结构不仅节省了资源利用率,但更重要的是Docker服务器之间的独立关系极大地简化了资源的管理。 扩展资源池是为服务器添加到游泳池和通知的OpenFlow控制器的即插即用的打法一样简单。 需要在路由器之间没有复杂的路由表查找和更新。 也没有必要Docker服务器成对运行一些包的封装协议,它不仅是资源利用效率低,而且会抵消网络诊断和故障排除工具,如跟踪路由。
更多了解官网: http://www.daolinet.org/html/technology.html 
Github项目地址https://github.com/daolinet/daolinet

开源的即时通讯在线客服平台(持续更新维护中)

ppmessage 发表了文章 • 0 个评论 • 1384 次浏览 • 2016-05-06 16:45 • 来自相关话题

ppmessage:README.md_at_master_·_PPMESSAGE:ppmessage_·_GitHub_.pdf



PPMessage是一个开源的在线客服平台。PPMessage能够帮助你在第一时间与你的客户建立联系,开发人员可以非常容易的将 PPMessage 集成到你的网站或者 iOS、Android 的应用中。PPMessage的前端后端都是开源的,后端全部基于 Python,简洁高效。前端根据不同平台提供原生的SDK。 基于 PPMessage 还能实现私有的·微信·功能,在企业内部或者私有云上建立自主的·微信·服务器;也可以将 PPMessage 与企业业务系统整合,实现自建的·钉钉·系统。 PPMessage 后端建议部署到 Linux 上,推荐使用 Debian 或者 Ubuntu,同时支持 Mac OS X 系统,方便开发者测试。 PPMessage 提供了完整而清晰的 API 和 OAuth 系统,所有前端应用和 SDK 都是通过调用或者封装后端的 API 而实现。PPMessage 能够做到最大程度和最底层的整合开发。 PPMessage 包含由数个 Python 后台应用组成的后端,Python 后端应用通过 Supervisor 统一管理,通过 Nginx 反向代理进行 HTTP 请求的统一分发和负载均衡。PPMessage 的后端使用了 Mysql 数据库,事实上 PPMessage 后端并没有直接操作数据库,直接操作数据库速度不能满足 PPMessage 支持大并发量消息服务,PPMessage所有的数据操作通过单独的、异步的 Cache 服务完成。PPMessage 的前端开发 SDK 称为 PPCom,PPCom 会被集成到你的企业 Web 站点,Android、iOS 应用之中,为你的客户提供建立联系的入口;给客服和企业组织内部人员使用的前端应用叫做 PPKefu,PPKefu 可以运行在 Web 端,Windows、Mac 和 Linux 桌面端,Android、iOS 移动应用端,几乎支持所有的可以运行应用的平台,让你的客服人员随时随地为你的客户提供服务或者建立联系。 PPMessage 同时提供了一个 Web 管理界面,称之为 PPConsole,当然也是开源的,PPConsole 提供一个管理界面去管理配置PPMessage。PPConsole 同时也集成了一些企业运营所需的常用功能,探索使用 PPConsole 让它为你的企业业务服务。通过使用 PPConsole 上的企业应用,PPMessage 完全成为了一个自主、自建的企业微信,或者是阿里钉钉,但是数据和程序以及安全性却能得到充分的保障。 下面是PPMessage提供的一些文档,详细信息及在线体验PPMessage,请访问PPMessage Site。
 • 在 Debian 8.4 上安装 PPMessage 
• 在 Ubuntu Server 16.04 上安装 PPMessage 
PPMessage 完全参考手册,请关注 PPMessage 在 GITBOOK上的持续更新 PPMessage Book。欢迎小伙伴们到官网和github上体验和提出宝贵意见,发现BUG请及时反馈给我们,非常感谢大家!






  查看全部


PPMessage是一个开源的在线客服平台。PPMessage能够帮助你在第一时间与你的客户建立联系,开发人员可以非常容易的将 PPMessage 集成到你的网站或者 iOS、Android 的应用中。PPMessage的前端后端都是开源的,后端全部基于 Python,简洁高效。前端根据不同平台提供原生的SDK。 基于 PPMessage 还能实现私有的·微信·功能,在企业内部或者私有云上建立自主的·微信·服务器;也可以将 PPMessage 与企业业务系统整合,实现自建的·钉钉·系统。 PPMessage 后端建议部署到 Linux 上,推荐使用 Debian 或者 Ubuntu,同时支持 Mac OS X 系统,方便开发者测试。 PPMessage 提供了完整而清晰的 API 和 OAuth 系统,所有前端应用和 SDK 都是通过调用或者封装后端的 API 而实现。PPMessage 能够做到最大程度和最底层的整合开发。 PPMessage 包含由数个 Python 后台应用组成的后端,Python 后端应用通过 Supervisor 统一管理,通过 Nginx 反向代理进行 HTTP 请求的统一分发和负载均衡。PPMessage 的后端使用了 Mysql 数据库,事实上 PPMessage 后端并没有直接操作数据库,直接操作数据库速度不能满足 PPMessage 支持大并发量消息服务,PPMessage所有的数据操作通过单独的、异步的 Cache 服务完成。PPMessage 的前端开发 SDK 称为 PPCom,PPCom 会被集成到你的企业 Web 站点,Android、iOS 应用之中,为你的客户提供建立联系的入口;给客服和企业组织内部人员使用的前端应用叫做 PPKefu,PPKefu 可以运行在 Web 端,Windows、Mac 和 Linux 桌面端,Android、iOS 移动应用端,几乎支持所有的可以运行应用的平台,让你的客服人员随时随地为你的客户提供服务或者建立联系。 PPMessage 同时提供了一个 Web 管理界面,称之为 PPConsole,当然也是开源的,PPConsole 提供一个管理界面去管理配置PPMessage。PPConsole 同时也集成了一些企业运营所需的常用功能,探索使用 PPConsole 让它为你的企业业务服务。通过使用 PPConsole 上的企业应用,PPMessage 完全成为了一个自主、自建的企业微信,或者是阿里钉钉,但是数据和程序以及安全性却能得到充分的保障。 下面是PPMessage提供的一些文档,详细信息及在线体验PPMessage,请访问PPMessage Site
 • 在 Debian 8.4 上安装 PPMessage 
在 Ubuntu Server 16.04 上安装 PPMessage 
PPMessage 完全参考手册,请关注 PPMessageGITBOOK上的持续更新 PPMessage Book。欢迎小伙伴们到官网github上体验和提出宝贵意见,发现BUG请及时反馈给我们,非常感谢大家!


Attachment-1.gif

 

商业级开源虚拟化管理平台OVM

采菊篱下 发表了文章 • 0 个评论 • 1418 次浏览 • 2016-04-26 20:44 • 来自相关话题

开源的虚拟化管理平台也有很多,比如OpenStack、Cloudstack OpenNebula、oVirt/RHEV、ZStack等,为什么还要自行研发开发呢,因为这些都不够简单和易用,功能不够全面。而OVM得出发点就是简单、易玩!

经历了一年来一个虚拟化的开源管理平台OVM-(Open Virtual Manager )终于诞生了。OVM作为开源虚拟化管理平台以做最好用的虚拟化管理平台为目标。面向中小型虚拟化环境,打造简单易用的虚拟化和管理平台。 让零基础的用户在几个小时内可以部署、使用自己的虚拟化系统。主要特性就是简单、易部署。
 
具体的安装下载参考:http://www.openvirtmanager.org/install.html​ 
 
下面就让我们来体验初恋般的感觉,OVM具有魅力,我们可以怎么使用?!!!
 
一、使用Web客户端登录OVM
OVM安装配置完成后,您可以使用FireFox浏览器或Google浏览器访问OVM用户界面。
前提条件:
          您必须具有在系统配置期间创建的系统管理员用户名和密码(系统默认用户名为admin、默认密码为password。
步骤:
[]打开Web 浏览器,并导航到http://管理平台ip[/][]输入系统管理员用户名和密码(系统默认为admin、password),并单击登录。[/]




OVM将带您进入到虚拟化与云的世界。
 
二、新建数据中心
[]OVM数据中心支持管理私有的数据中心和公有云资源。[/][]OVM通过远程服务模块管理数据中心和公有云。[/]




新建数据中心步骤:
1、选择添加内部虚拟中心,弹出对话框,由于各个组件使用all-in-one安装,所以输入管理平台IP,重复IP,免除重复操作。




2、检查所有IP,如果安装没有问题,检查会顺利通过。




3、点击保存,内部数据中心建立完毕。




 
三、新建服务器资源池
服务器池是物理主机的主要容器,通常要把主机(即物理服务器)添加到服务器池。

数据中心可包含多个服务器池,一般全国性的集团公司或跨国公司会使用多个服务器池来表示企业内的组织结构。

服务器池的对象可以交互,但不同服务器池的交互则会受到限制。例如:您可以使用OVM迁移技术在一个服务器池内的主机之间迁移虚拟机,但不可以将虚拟机迁移到另一个服务器池的主机上。
新建服务器资源池步骤:
1、选择数据中心—主机,建立资源池:




 2、输入资源池名称,描述点击保存,资源池建立完毕。





四、为服务器资源池设置分配策略
点击数据中心—资源分配,可以为虚拟资源进行配置负载均衡策略,合理调度虚拟资源,提高虚拟机性能。




 
五、添加主机1、请确保你已经安装了OVM节点主机;
2、选择建立好的资源池,添加主机




3、选择相应的Hypervisor,添加计算节点的IP,点击保存。








4、在新的弹框中在数据存储选择共享NFS存储,网络接口进行选择,之后保存,主机添加成功。












 
六、主机管理
选择编辑主机,可对主机资源进行管理或修改,如主机环境有问题,可以进行操作此项。




 
七、创建虚拟数据中心
 1、 选择主菜单栏虚拟数据中心—虚拟数据中心,点击+号添加




2、填写名称,选择相应数据中心和Hypervisor。




3、点击保存,虚拟数据中心添加成功。




 
八、创建vApp
1、选择主菜单栏虚拟数据中心—vApp,点击+号,填写名称。




2、点击保存,vApp添加成功




 
九、通过ISO新建VM
 1、选择主菜单栏应用商店,上传ISO。




2、上传ISO后 ,进入虚拟数据中心的vApp,在ISO选项中创建虚拟机,创建过程中可以进行资源配置建立。












更多详情和项目进度可以关注官网:http://www.openvirtmanager.org/  和官网社区! 查看全部
开源的虚拟化管理平台也有很多,比如OpenStack、Cloudstack OpenNebula、oVirt/RHEV、ZStack等,为什么还要自行研发开发呢,因为这些都不够简单和易用,功能不够全面。而OVM得出发点就是简单、易玩!

经历了一年来一个虚拟化的开源管理平台OVM-(Open Virtual Manager )终于诞生了。OVM作为开源虚拟化管理平台以做最好用的虚拟化管理平台为目标。面向中小型虚拟化环境,打造简单易用的虚拟化和管理平台。 让零基础的用户在几个小时内可以部署、使用自己的虚拟化系统。主要特性就是简单、易部署。
 
具体的安装下载参考:http://www.openvirtmanager.org/install.html​ 
 
下面就让我们来体验初恋般的感觉,OVM具有魅力,我们可以怎么使用?!!!
 
一、使用Web客户端登录OVM
OVM安装配置完成后,您可以使用FireFox浏览器或Google浏览器访问OVM用户界面。
前提条件:
          您必须具有在系统配置期间创建的系统管理员用户名和密码(系统默认用户名为admin、默认密码为password。
步骤:
    []打开Web 浏览器,并导航到http://管理平台ip[/][]输入系统管理员用户名和密码(系统默认为admin、password),并单击登录。[/]

image001.png

OVM将带您进入到虚拟化与云的世界。
 
二、新建数据中心
    []OVM数据中心支持管理私有的数据中心和公有云资源。[/][]OVM通过远程服务模块管理数据中心和公有云。[/]

image005.png

新建数据中心步骤:
1、选择添加内部虚拟中心,弹出对话框,由于各个组件使用all-in-one安装,所以输入管理平台IP,重复IP,免除重复操作。
image006.png

2、检查所有IP,如果安装没有问题,检查会顺利通过。
image007.png

3、点击保存,内部数据中心建立完毕。
imag8.png

 
三、新建服务器资源池
服务器池是物理主机的主要容器,通常要把主机(即物理服务器)添加到服务器池。

数据中心可包含多个服务器池,一般全国性的集团公司或跨国公司会使用多个服务器池来表示企业内的组织结构。

服务器池的对象可以交互,但不同服务器池的交互则会受到限制。例如:您可以使用OVM迁移技术在一个服务器池内的主机之间迁移虚拟机,但不可以将虚拟机迁移到另一个服务器池的主机上。
新建服务器资源池步骤:
1、选择数据中心—主机,建立资源池:
image009.png

 2、输入资源池名称,描述点击保存,资源池建立完毕。
image010.png


四、为服务器资源池设置分配策略
点击数据中心—资源分配,可以为虚拟资源进行配置负载均衡策略,合理调度虚拟资源,提高虚拟机性能。
image011.png

 
五、添加主机1、请确保你已经安装了OVM节点主机;
2、选择建立好的资源池,添加主机
image012.png

3、选择相应的Hypervisor,添加计算节点的IP,点击保存。
image013.png

image014.png

4、在新的弹框中在数据存储选择共享NFS存储,网络接口进行选择,之后保存,主机添加成功。
image015.png

image016.png

image017.png

 
六、主机管理
选择编辑主机,可对主机资源进行管理或修改,如主机环境有问题,可以进行操作此项。
image018.png

 
七、创建虚拟数据中心
 1、 选择主菜单栏虚拟数据中心—虚拟数据中心,点击+号添加
image019.png

2、填写名称,选择相应数据中心和Hypervisor。
image020.png

3、点击保存,虚拟数据中心添加成功。
image021.png

 
八、创建vApp
1、选择主菜单栏虚拟数据中心—vApp,点击+号,填写名称。
image022.png

2、点击保存,vApp添加成功
image023.png

 
九、通过ISO新建VM
 1、选择主菜单栏应用商店,上传ISO。
image024.png

2、上传ISO后 ,进入虚拟数据中心的vApp,在ISO选项中创建虚拟机,创建过程中可以进行资源配置建立。
image025.png

image026.png

image027.png

更多详情和项目进度可以关注官网:http://www.openvirtmanager.org/  和官网社区!