jieshao
2017-02-24 17:15:25 0 举报
AI智能生成
由于您没有提供具体的主题,我将为您生成一个关于“人工智能”的描述。 人工智能(AI)是计算机科学的一个分支,它试图理解和构建智能实体,特别是智能软件。AI的研究是高度技术性和专业化的,涵盖了从基本算法到复杂的机器学习模型的所有内容。AI的应用广泛,包括语音识别、图像识别、自然语言处理、机器人技术等。尽管AI在许多领域都取得了显著的进步,但它仍然是一个不断发展和变化的领域,面临着许多挑战,如数据隐私、算法偏见等问题。然而,AI的潜力巨大,有望改变我们的生活方式和工作方式。
作者其他创作
大纲/内容
分支主题2
子主题
子主题
子主题
分支主题3
子主题
AC控制器系统组件介绍
Agile Controller(以下简称AC)是新开发的统一控制器产品,其平台融合开源的ODL和ONOS集群框架,并在此系统上进行加固和引入其他周边配套的集群组件,从而实现一个完整的平台基础框架业务,支撑本产品以及周边其他使用该平台的产品。本文主要介绍AC系统配套的集群组件,给读者对整个AC系统有个整体性的了解。
下图是AC控制器核心组件的安装目录,根据下图,将一一介绍如下各个目录对应功能及相应组件:
1 备份工具与备份目录
目录backup_tool/与controllerbackup/分别存放备份AC控制器的相关脚本和备份的AC控制器版本。
2 高可靠性(HA)
目录ha/存放为AC系统提供高可靠性组件,目录中包含ha-nginx和ha-puppetmaster两个组件的高可靠性目录。系统中HA功能是采用公司提供的开源网管平台OMS,提供主备方式进行可靠性保证。
3 帮助文档
hedex目录存放中英文的帮助文档。文档类型是采用华为电子文档浏览器支持的文件格式。
4 Infinispan集群
infinispan/目录是infinispan安装目录
4.1 Infinispan简介
Infinispan是一个高度可扩展,高度可用的键/值数据存储和数据网格平台。它经常被用来作为一个分布式缓存,也可作为一个NoSQL的键/值存储或对象数据库。由于其具有分布式的协调和存储能力,适用于大型的分布式内存数据库系统,解决集群环境下的大容量和高速访问缓存。目前AC使用Infinispan是引入2012的分布式调度框架,用来解决并发业务下存在时序控制和资源分配时,对冲突范围内的资源通过hash方式进行调度,使得对于资源请求有冲突的都hash到固定节点,进行时序控制。同时hash分配可以解决大量请求时的并发处理性能。对于Infinispan,后续可能引入对于性能和并发要求较高的业务加入缓存中,解决性能瓶颈(但当前存在持久化不稳定问题,还在继续解决中,故AC暂时未重点使用,目前应该只有告警模块在使用)。
4.2 系统架构
Infinispan的系统架构类似于MongoDB,也是支持副本集和分片两种方式,当前系统采用分布式的分片模式来搭建分布式缓存数据库。infinispan使用哈希一致性算法决定集群实体的保存位置。在一致性哈希算法中通过配置可以确定每个节点实体的备份个数,备份数需要在性能和数据持久性间做权衡。备份个数越多,性能消耗会越高,但同时有更好的数据安全性,能大大降低数据丢失风险,当前实现是infinispan写入时,需要保证写入成功一半以上的副本才返回成功,做到写入强一致性。读取操作时,get请求会并行的发往每个拥有该数据的节点,并获取第一个返回的结果,该机制能够保证数据一致性。Infinispan可以通过命令查看其运行状态:
5 Jruby解析器
JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。Rails彻底加快及简化了Web应用的开发,不过它让人觉得不够成熟,特别是在高端企业级功能方面。另一方面,Java平台及其虚拟机、库和 应用服务器的速度、稳定性和功能方面却一直在提升,现在已被公认为是开发高端服务器。
6 LVS目录
net转换用。具体提供的功能后续补充。
7 MongoDB集群
MongoDB数据库是一种NoSQL数据库,其表结构并不固定,而是以json格式的方式存数的文本类型,支持类似关系型数据库的部分功能,提供高效、可靠的分布式数据库。MongoDB的数据库集群主要分为ReplSet方式和ReplSet+Shard两种方式。
7.1.1 ReplSet方式
ReplSet为副本集方式,即对于同一份数据库数据,存在多个副本,如果主系统故障后,其他副本数据能保证接替主系统进行工作,实现高可靠性。
首先介绍一下在replica set里分为三种节点类型:
primary :负责client的读写,所有数据操作都在主节点进行。
secondary:作为热备节点,应用Primary的oplog读取的操作日志,和primary保持一致,由于通过日志文件读取,所以会在大量数据写入时存在一定的延迟,当此时主节点故障,可能存在部分数据丢失。另外Secondary不支持数据写入,但可以配置允许读取,配置可以读取时需要考虑可能存在脏读数据。
arbiter:它不负责任何读写,只作为一个仲裁者,负责primary down的时候剩余节点的选举操作。
节点角色可以通过rs.status()可以查看到详细的主从信息
主节点:
副节点:
仲裁节点:
通过rs.conf查看priority字段,查看节点竞选优先级,arbiter只有选举权没有被选举权。当主节点故障后,优先级最高的节点竞选为主节点。
目前AC系统的MongoDB集群采用副本集方式,其中一个为主节点,负责所有数据的读写,另外默认使用2个备份节点备份所有数据,如果节点数为5个或者5个以上时,增加2个仲裁节点,用来保证高可靠性。AC的MongoDB采用读写不分离的方式配置,即所有数据操作只在主节点上进行,备份节点只进行和主节点同步。这样的设计能保证数据的一致性,但由于所有的数据操作都落在主节点上,会导致主节点性能影响较大,整体集群的吞吐量受到单节点的性能限制。
7.1.2 ReplSet+Shard方式
前面介绍ReplSet存在性能瓶颈,所以MongoDB又新支持了在ReplSet基础上进行分片,实现分布式的读写,提升性能和容量。
Shard方式实际上就是将以前的一个数据库通过一定的算法分片为多个数据库,每一个Shard是一个独立的ReplSet,实现ReplSet的高可靠性,同时多个Shard组成一个完整数据集群,每个Shard中有一个主节点,负责读写数据,这样就可以将数据的读写分散到所有节点上,提升整体读写性能和系统容量。既然增加了多个Shard的分片配置,就需要像前面ODL集群一下实现对外屏蔽实现,对内分片管理和数据整合,故Shard方式增加了一些配置和调度的进程,具体架构如下:
shards:一个shard为一组mongod,通常一组为三台,这一组mongod中的数据是相同的。数据分割按有序分割方式,每个分片上的数据为某一范围的数据块,故可支持指定分片的范围查询。数据块有指定的最大容量,一旦某个数据块的容量增长到最大容量时,这个数据块会切分成为两块;当分片的数据过多时,数据块将被迁移到系统的其他分片中。另外,新的分片加入时,数据块也会迁移。
config server:存储集群的信息,包括分片和块数据信息。主要存储块数据信息,每个config server上都有一份所有块数据信息的拷贝,以保证每台config server上的数据的一致性。注意config Server需要同时在线时,才能对分片数据进行修改,所以必须保证config server的正常运行(AC系统目前由于config server和mongodb数据库同机部署,导致config server和mongod同时故障的情况下,概率性会出现主备切换不及时,导致故障恢复时间过长问题,最终放弃了shard方式,后续还会继续分析并解决该问题,提升数据库分布式性能)。
mongos:可以有多个,相当于一个控制中心,负责路由和协调操作,使得集群像一个整体的系统(类似ngnix)。mongos可以运行在任何一台服务器上,有些选择放在shards服务器上,也有放在client 服务器上的。mongos启动时需要从config servers上获取基本信息,然后接受client端的请求,路由到shards服务器上,然后整理返回的结果发回给client服务器。
通过在命令行输入mongo 192.168.6.106:27020查看分片信息(这里以5节点为例)
8 naas目录
naas/目录存放karaf容器提供的控制器核心代码功能。
9 nginx目录
存放nginx工作文件,具体的nginx安装目录见下文Nginx介绍
10 omm目录
此目录下存放OMS组件代码,提供OMS的功能。OMS是公司提供的开源网管平台,在AC中提供告警和性能相关功能,同样也提供主备方式进行可靠性保证。OMS分为主程序和guass数据库两部分,在系统中部署两套OMS程序,通过浮动IP对外部提供服务(安装时用户指定,故障后切换),同时数据库采用日志备份方式(跟mongodb备份方式相同),实现主备负载和切换。目前AC3.0版本已经弃用此块功能,可以去掉。
11 route_module目录
存放安装SNC的安装脚本。执行安装SNC脚本的时候,opt/controller目录下回多出SNC相关的几个目录。见最后SNC相关部分。
12 tomcat目录
12.1 tomcat简介
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
12.2 提供功能
此目录下提供AC系统管理页面中集群监控和帮助说明的WEB服务功能。
13 tools目录
此目录里存放了AC系统的各种工具脚本以及工具包,例如:OMM服务端、客户端证书;恢复集群节点脚本;平台依赖公共包等等
14 unindtall目录
卸载目录,提供手动卸载AC系统的卸载脚本
15 zookeeper目录
zookeeper集群版本目录。
15.1 Zookeeper简介
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper是以Fast Paxos算法为基础的,paxos算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos作了一些优化,通过选举产生一个leader,只有leader才能提交proposer。目前AC主要利用zookeeper实现分布式锁。
15.2 系统架构
Zookeeper系统由多个Server构成,在AC中是独立的进程,每个节点部署一个(默认部署3个节点),Zookeeper集群启动后会进行选举,确定Leader后,整个集群正常运行。Client端内嵌在AC的karaf进程中(和ODL进程在一起),和Zookeeper 集群服务进行交互。Zookeeper集群具有如下特点:
1.最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。
2 .可靠性:具有简单、健壮、良好的性能,如果消息m被到一台服务器接受,那么它将被所有的服务器接受。
3 .实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。但由于网络延时等原因,Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。
4 .等待无关(wait-free):慢的或者失效的client不得干预快速的client的请求,使得每个client都能有效的等待。
5.原子性:更新只能成功或者失败,没有中间状态。
6 .顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面。
正式上述特性,AC使用Zookeeper集群实现在分布式并发调度下,对于有竞争关系的业务资源进行统一锁,以解决资源冲突问题,所有设计业务资源竞争的,都需要使用分布式锁来进行设计,并保证锁的顺序性。
15.3 ZooKeeper服务命令
在准备好相应的配置之后,可以直接通过zkServer.sh 这个脚本进行服务的相关操作
• 1. 启动ZK服务: sh bin/zkServer.sh start
• 2. 查看ZK服务状态: sh bin/zkServer.sh status
• 3. 停止ZK服务: sh bin/zkServer.sh stop
• 4. 重启ZK服务: sh bin/zkServer.sh restart
当启动 ZooKeeper 服务成功之后,输入下述命令,连接到 ZooKeeper 服务:
zkCli.sh –server 服务端IP:端口号
16 Ngnix主备
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。Nginx作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
Nignix主备通过对外公布浮动IP,作为整个系统的对外访问IP,用来向北向屏蔽整个AC集群操作。系统通过利用公司提供的开源网管平台OMS中HA功能进行主备切换,配置负载均衡,提高系统可靠性及性能。
Nginx的安装目录:/etc/ngnix/。
可以通过查看/etc/ngnix/logs目录下日志,获取nginx运行信息。
可以通过查看/var/log/ha/ha-nginx目录下日志,获取nginx主备切换信息。
查看/etc/ngnix /ngnix.conf文件,可以查看ngnix的负载算法以及浮动IP配置:
17 Puppet主备
Puppet安装目录:/etc/puppet。
可以通过查看/var/log/ha/ha-puppetmaster目录下日志,获取puppet主备运行信息。
puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。
puppet采用C/S星状的结构,所有的客户端和一个或几个服务器交互。每个客户端周期的(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证和该配置信息同步。每个puppet客户端每半小时(可以设置)连接一次服务器端,下载最新的配置文件,并且严格按照配置文件来配置客户端。配置完成以后,puppet客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息。
图表 8:Puppet架构
puppet master通过读取配置文件模板对client端进行集中管理,并且能都通过修改配置文件,对client进行管理。由于puppet master存在单点故障的可靠性问题,AC控制器提供了主备master配置,采用浮动IP方式配置(安装时用户指定),并通过自动同步数据的方式备份主信息到备,当检测到主机故障后,备机自动拉起提供服务。
通过命令行输入ps aux|gerp puppet指令查看puppet进程:
Master节点:
Agent节点:
18 SNC相关目录
如果此节点是SNC的节点。将多出下面三个目录:
snc_vmt/目录:SNC的VMT安装目录。
system_info/目录:系统信息日志。
system_other_info/目录:系统信息日志。
子主题
分支主题4
子主题
子主题
子主题
0 条评论
下一页
为你推荐
查看更多