1)在鲲鹏机器上安装合适的操作系统,如CentOS、Ubuntu等;
2)安装应用编译运行环境、中间件、数据库等,并解决安装过程中出现的问题,做适当记录;
3)应用的部署、运行,并解决这一过程中出现的问题,做适当记录;
4)总结并将记录归档;
软硬件技术迁移适配整体策略:
1.3方案中的适配组件列表
注:后续有适配软件安装,将持续补充该表
2基础组件适配
2.1编译运行环境适配
2.1.1java环境
JDK(JavaDevelopmentKit)是Java开发者进行Java开发所必须的软件包,包含JRE(JavaRuntimeEnvironment)和编译、调测工具。openEuler在OpenJDK的基础上进行了GC优化、并发稳定性增强、安全性增强等,提高了Java应用程序在ARM上的性能和稳定性。
1)将tar包(jdk-8u232-linux-aarch64.tar.gz)拷贝至想要安装的目录;
2)解压缩软件包;
3)设置JAVA_HOME;
4)设置环境变量并使之生效;
5)检查版本:java-version
2.1.2python环境
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python由GuidovanRossum于1989年底发明,第一个公开发行版发行于1991年。像Perl语言一样,Python源代码同样遵循GPL(GNUGeneralPublicLicense)协议。
1)下载tar包(Python-3.7.3.tgz)解压安装包;
2)安装依赖和C编译器;
3)编译安装并创建软连接(可选);
4)检查版本:python-V
2.1.3go环境
Go(又称Golang)是Google的RobertGriesemer,RobPike及KenThompson开发的一种静态强类型、编译型语言。Go语言语法与C相近,但功能上有:内存安全,GC(垃圾回收),结构形态及CSP-style并发计算。
安装步骤如下:
将安装文件包(go1.13.9.linux-arm64.tar.gz)下载至目录指定目录;
解压缩安装文件包;
创建gopath目录;
设置go的环境变量并使之生效;
5,检查版本:goversion
2.1.4NodeJS环境
简单的说Node.js就是运行在服务端的JavaScript。
Node.js是一个基于ChromeJavaScript运行时建立的一个平台。
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
而npm是Node.js的包管理工具,用来安装各种Node.js的扩展程序。
1)获取软件包(node-v10.16.0-linux-arm64.tar.xz);
2)解压软件包;
3)为node和npm建立软链接,方便在任意目录下执行该命令,并设置环境变量;
4)检测版本号:node-v,npm-v
2.2数据库适配
2.3中间件适配
2.4容器适配
2.4集成工具适配
2.5其它适配
3适配方案
3.1微服务应用方案适配
3.1.1sop应用环境/场景
SOP是一个开放平台的解决方案样例项目,它基于SpringBoot与SpringCloud实现,目的是为了让用户快速搭建自己的开放平台,它提供了两种接口调用方式,分别是:支付宝开放平台的调用方式和淘宝开放平台的调用方式。该项目只需要通过简单的配置,就可以让现有的项目集成进入开放平台环境,同时也封装了开放平台大部分功能包括:签名验证、统一异常处理、统一返回内容、业务参数验证(JSR-303)、秘钥管理等。
SOP的架构松耦合,业务代码实现在各自微服务上,SOP不参与业务实现,这也是SpringCloud微服务体系带来的好处,同时它的接入方式也十分简单,与老项目不冲突,老项目注册到注册中心,然后在对应方法上加上注解即可。
主要服务于以下的需求/用户/场景:
1、有现成的项目,想改造成开放平台供他人调用;
2、有现成的项目,想暴露其中几个接口并通过开放平台供他人调用;
3、想搭一个开放平台新项目,并结合微服务的方式去维护;
4、对开放平台感兴趣的朋友。
3.1.2sop应用结构
3.1.3sop部署
3.1.4sop运行
3.1.5sop性能对比测试
//TODO
3.2监控应用方案适配
为什么要监控?简单的说主要有以下3点:
1)业务安全性的保障;
2)系统的保障;
3)产品持续性的运行;
对于监控的分类,主要分为硬件、系统、程序的监控,如下所示:
3.2.1Zabbix+Grafana应用环境
为什么要选择Zabbix呢?
1)纯命令监控比较局限性;
3)灵活运用,包括Zabbix的阈值定义,自动发现,API接口,触发动作等功能;
Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
Zabbix能监视各种网络参数,保证服务器系统的安全运行;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
Zabbix由2部分构成,Zabbixserver与可选组件Zabbixagent。
Zabbixserver可以通过SNMP,Zabbixagent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD,OSX等平台上
Zabbix的工作组件及告警流程如下图所示:
1)数据采集:Zabbix通过SNMP、Agent、ICMP、SSH、IPMI等对系统进行数据采集。
2)数据存储:Zabbix存储在MySQL上,也可以存储在其他数据库服务。
4)数据展示:web界面展示、(移动APP、java_php开发一个web界面也可以)。
Zabbix+Grafana架构图如下:
Zabbix+Grafana适配组件如下:
3.2.2Prometheus+Grafana应用环境
Prometheus是面向容器和微服务的监控系统,对容器和微服务的兼容性好。
图形数据化展示通过Grafana展示,采用专业的数据函数和公式,将数据以更精准和可读的方式展现出来。
下面这张图说明了Prometheus的整体架构,以及生态中的一些组件作用:
Prometheus的主要特征有:
●多维度数据模型
●灵活的查询语言
●不依赖分布式存储,单个服务器节点是自主的
●也通过中间网关支持push模型
●通过服务发现或者静态配置,来发现目标服务对象
●支持多种多样的图表和界面展示,grafana也支持它
Prometheus相对比其他监控的优势:
●监控数据的精细程度高,采集精度可以达到1~5s
●开源软件更新快,bug修复快,周边插件丰富,到手即用,支持多种客户端开发语言
●本身基于数学计算模型,直接使用数学公式和数学函数,可以实现很复杂的业务逻辑监控(例如QPA曲线的弯曲、凸起,下跌的比例等模糊概念)
●结合Grafana展示图形,效果美观实用
●特别针对目前流行容器监控适配,采集深度大
Prometheus生态包括了很多组件,它们中的一些是可选的:
●客户库负责检测应用程序代码
●支持短生命周期的PUSH网关
●基于Rails/SQL仪表盘构建器的GUI
●多种导出工具,可以支持Prometheus存储数据转化为HAProxy、StatsD、Graphite等工具所需要的数据存储格式
●警告管理器
●命令行查询工具
●其他各种支撑工具
●多数Prometheus组件是Go语言写的,这使得这些组件很容易编译和部署
3.2.3监控应用部署
本监控方案选用Zabbix和Prometheus作为物理设备及应用的核心监控软件,通过python脚本发送Email/SMS/Dingding告警信息,Grafana作为可视化监控大屏解决方案,集成Zabbix和Prometheus监控系统,通过定制化dashboard可视化展示监控数据信息。
该监控方案的核心软件应用,Zabbix、Prometheus、Grafana以及运行的Python脚本均部署在鲲鹏服务器上。整体部署架构图如下所示:
3.2.4监控应用运行
3.2.4.1Zabbix+Grafana运行
在鲲鹏服务器上Zabbix4.0.10监控主机页面如下图所示:
Grafana大屏如下:
告警–邮件:
告警-Dingding:
3.2.4.2Prometheus+Grafana运行
Prometheus-2.16监控主机页面如下图所示:
Prometheus配合Grafana和AlertManager实现数据展示和多渠道报警:
邮件告警:
3.2.5监控应用性能对比测试
3.3农业IOT应用方案适配
智慧农业物联网IoT主要包含两层意思:1.核心基础仍是农业互联网,是在农业互联网基础上的延伸和扩展。2.用户端延伸到物品与物品之间,物品之间通过物联网进行信息交换和通信。
智慧农业物联网技术的应用:
1.农业智能监测与培育系统
负责监测温度、湿度、光强等农情信息采集,在农作物上方安放光照强度传感器实时监测环境光照强度,能及时掌握农作物生长环境的光照强度;环境温度的高低直接影响农作物生长速度与发育情况,空气湿度也是影响农作物生长发育的重要因素,所以要在农作物周围安放空气温湿度传感器。通过自适应切换功能接入传输网络,将数据传送至控制中心。控制中心将接收到的数据经处理后存入数据库,根据采集到的信息进行汇总分析,结合专家决策系统发出反馈控制指令,及时、准确地发现问题和解决问题,指导农业生产。
2.农产品运输管理与控制系统
3.农产品销售和分配管理系统
在箱体上集成了4种技术用来识别和验收货物:125kHz频段下和13.56MHz频段下的RFID(自动识别技术)射频识别、一维条码识别、二维码。农产品质量追溯物联网由读写传感器和电子标签、读写器和查询的网络接入与控制数据中心组成。通过电子标签记录农产品在培育、运输和销售环节的所有信息,并通过网络系统传输到数据中心保存。用户可以在农产品溯源系统平台或者超市商品溯源机上,通过查询农产品的编号获取该农产品的所有的销售信息。
农业物联网是现代农业发展的必经之路,运用先进的农业物联网技术是一个国家农业生产力的良好体现。
3.3.1应用环境架构
本次智慧农业IOT技术的应用环境主要在农业智能监测上。
基于阿里云的技术架构图如下所示:
涉及到的应用组件如下表所示:
3.3.2应用部署
对于应用的部署,基本上还是基于阿里云的技术架构,在鲲鹏服务器上主要以docker容器的形式部署了用于前端大屏展示的Grafana和时序数据库InfluxDB,如下图所示:
3.3.3应用运行
另外,该方案的告警媒介是Dingding,告警信息展示如下:
3.3.4应用性能对比测试
3.4大数据应用方案适配
3.4.1应用环境
大数据解决方案支持包括离线分析、实时检索、实时流处理等多个场景。如离线分析,通常是指对海量数据进分析和处理,形成结果数据,供下一步数据应用使用。离线分析以HDFS分布式存储软件为数据底座,计算引擎以基于MapReduce的Hive和基于Spark的SparkSQL为主。
3.4.2应用结构
大数据离线计算场景架构
3.4.3应用部署
3.4.4应用运行
3.4.5应用性能对比测试
3.5日志搜索方案适配
3.5.1ELKB应用环境
3.5.2应用结构
ELK不是一款软件,而是Elasticsearch、Logstash和Kibana三种软件产品的首字母缩写。这三者都是开源软件,通常配合使用,而且又先后归于Elastic.co公司名下,所以被简称为ELKStack。根据GoogleTrend的信息显示,ELKStack已经成为目前最流行的集中式日志解决方案。
Elasticsearch:分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于ApacheLucene构建,能对大容量的数据进行接近实时的存储、搜索和分析操作。通常被用作某些应用的基础搜索引擎,使其具有复杂的搜索功能;
Logstash:数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置;
Kibana:数据分析和可视化平台。通常与Elasticsearch配合使用,对其中数据进行搜索、分析和以统计图表的方式展示;
Filebeat:ELK协议栈的新成员,一个轻量级开源日志文件数据搜集器,基于Logstash-Forwarder源代码开发,是对它的替代。在需要采集日志数据的server上安装Filebeat,并指定日志目录或日志文件后,Filebeat就能读取数据,迅速发送到Logstash进行解析,亦或直接发送到Elasticsearch进行集中式存储和分析。
3.5.3应用部署
1、Filebeat负责收集应用写到磁盘上的日志,并将日志发送给logstash
2、logstash处理来自filebeat的日志,并将处理后的日志保存elasticsearch索引库。
3、elasticsearch存储来自logstash的日志。
4、kibana从elasticsearch搜索日志,并展示到页面。
3.5.4应用运行
对接Grafana,制作大屏连接Elasticsearch:
3.5.5应用性能对比测试
3.6K8S+Docker方案适配
3.6.1应用环境
k8s是谷歌开源的容器集群管理系统,是Google多年大规模容器管理技术Borg的开源版本,主要功能包括:
1:基本容器的应用部署、维护和滚动升级;
2:负载均衡和服务发现;
3:跨机器和跨地区的集群调度;
4:自动伸缩;
5:无状态服务和有状态服务;
6:广泛的Volume支持;
7:插件机制保证扩展性。
k8s提供了很多的功能,它可以简化应用程序的工作流,加快开发速度。通常,一个成功的应用编排系统需要有较强的自动化能力,这也是为什么k8s被设计作为构建组件和工具的生态系统平台,以便更轻松地部署、扩展和管理基于docker构建的应用程序。
docker-container(docker容器)是一种便捷式、轻量级的操作系统级虚拟化技术。它使用namespace隔离不同的软件运行环境,并通过镜像自包含软件的运行环境,从而使得容器可以很方便的在任何地方运行。
由于容器体积小且启动快,因此可以在每个容器镜像中打包一个应用程序。这种一对一的应用镜像关系拥有很多好处。使用容器,不需要与外部的基础架构环境绑定,因为每一个应用程序都不需要外部依赖,更不需要与外部的基础架构环境依赖。完美解决了从开发到生产环境的一致性问题。
容器同比虚拟机更加透明,这有助于监测和管理。尤其是容器进程的生命周期由基础设施管理,而不是由容器内的进程对外隐藏时更是如此。最后,每个应用程序用容器封装,管理容器部署就等同于管理应用程序部署。
在k8s必须使用pod管理容器,k8s中的每个pod可以包含一个或多个容器。
rancher对k8s进行了功能的拓展与实现了和k8s集群交互的一些便捷工具,包括执行命令行、可视化界面,可以管理多个k8s集群,查看k8s集群节点的运行状态等等。基于k8s+docker自建私有云,部署容器集群,rancher是首选工具。
3.6.2应用结构
3.6.3应用部署
同3.6.1
3.6.4应用运行
3.6.5应用性能对比测试
3.7CI/CD方案适配
3.7.1应用环境
CI/CD它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
基于gitlab+jenkins+maven+harbor+k8s的环境,可以用以下流程实现CI/CD,首先开发人员将编码上传到gitlab上,使用gitlab的webhook链接到jenkins,让jenkins通过maven编译代码/构建程序,然后自动去制作docker镜像,通过将镜像上传到harbor本地的docker镜像库中,再配置k8s中的具体pod节点去自动下载harbor中的docker镜像,使用k8s控制docker运行服务,最后达到持续交付、开发、测试和运维三方紧密合作的目的。
3.7.2应用结构
3.7.3应用部署
同3.7.1
3.7.4应用运行
3.7.5应用性能对比测试
3.8性能测试
3.8.1MySQL性能测试对比
总体上X86和ARM64机器上的Mysql数据库性能相差无几,具体如下: