1.OpenHPC的源码安装
2.运维常见的工具推荐
3.一篇文章了解CI/CD管道全流程
4.ubuntuå¹³å°å¦ä½ä½¿ç¨å½ä»¤ä¸è½½è½¯ä»¶
OpenHPC的安装
OpenHPC是一个基于Linux的HPC社区驱动的自由及开放源代码软件工具,适用于构建HPC Linux集群。分析其提供了大量通用软件,源码包括系统工具、分析资源管理、源码I/O客户端、分析monxin商城源码开发工具和各种科学库。源码这些软件在构建时考虑了HPC集成,分析同时满足Linux发行版标准。源码
OpenHPC的分析安装流程可从官方网站(openhpc.community)开始,源码托管在github上(github.com/openhpc/ohpc)。源码安装步骤包括下载安装包,分析配置安装环境,源码安装基础操作系统,分析添加hosts信任主机,源码关闭防火墙和SELinux,配置NTP服务,并重启系统。然后,安装OpenHPC组件,启用OpenHPC源码库供本地使用。在管理节点上,通过直接从OpenHPC构建服务器安装ohpc安装包,或者通过tar存档文件在无法访问外网的管理节点本地安装源库。
管理节点还需要访问CentOS7.7基础操作系统和EPEL存储库。使用ohpc指令实现裸机系统安装和配置openhpc系统。此外,要添加资源管理服务,比如PBS Pro软件包。在完成管理节点的基本Warewulf设置后,定义并定制系统映像,为计算节点创建映像。
在安装过程中,可以添加额外的管理工具,如系统日志集中转发、Nagios监控、Ganglia监控、Sensys监控、iapp看源码ClusterShell、mrsh、genders、ConMan和GEOPM等。配置计算节点日志集中转发,添加Nagios监控,配置Ganglia监控,安装ClusterShell,添加genders,安装ConMan,以及资源管理器节点运行状况检查(NHC)。
完成计算节点镜像配置后,使用wwvnfs命令组装VNFS容器,并使用wwnodescan自动注册新的计算节点。在配置中,需要添加用户账号文件到计算节点,并为计算节点磁盘配置分区和格式化,以承载VNFS映像。最后,启动计算节点,安装OpenHPC开发组件,如开发工具、编译器、MPI性能工具等。
在安装OpenHPC后,启动资源管理器服务,运行测试作业,确保集群能够正常运行。在集群环境中,用户可以使用资源管理器交互运行作业或提交作业脚本以实现批处理执行。通过这些步骤,可以成功构建和配置OpenHPC HPC集群。
运维常见的工具推荐
开源的工具在运维领域扮演着关键角色,它们能够有效地支持DevOps实践。以下是一些推荐的开源工具,涵盖了开发工具、自动化构建与测试、freemodbus源码解析持续集成与交付、部署工具以及维护和监控等关键环节。 一、开发工具Git: 分布式版本控制系统,用于管理项目版本,易于学习与使用。
GitLab: 基于Git的代码托管平台,提供Web界面访问,支持公开或私有项目。
Gerrit: 免费、开放源代码的代码审查工具,支持Git作为底层版本控制系统。
Mercurial: 轻量级分布式版本控制系统,适用于Python环境,易于学习与扩展。
Subversion: 版本控制系统,用于替代RCS、CVS,提供分支管理功能。
二、自动化构建与测试Apache Ant: 用于Java环境的自动化工具,支持软件编译、测试与部署。
Maven: 提供高级项目管理功能,简化构建规则,易于使用。
Selenium: Thoughtworks公司开发的集成测试工具。
PyUnit: Python单元测试框架,与JUnit兼容。
PHPUnit: PHP测试框架,基于xUnit设计。
三、持续集成与交付Jenkins: 可扩展的持续集成引擎,支持自动化构建与测试。
Capistrano: 并行执行命令的工具,适用于发布Rails应用。
BuildBot: 自动化编译/测试周期工具,心上岛源码验证代码变更。
Fabric: 提供UI和UX一致的中央管理平台,用于自动化操作、配置与监控。
Go: Google开发的编译型编程语言,支持并发与垃圾回收。
四、部署工具Docker: 开源应用容器引擎,支持应用与依赖打包移植。
Rocket (rkt): CoreOS推出的容器引擎,与Docker类似,用于打包应用。
Ubuntu (LXC): 基于LXC技术的容器平台,支持非特权与分布式。
Chef: 系统集成框架,提供配置管理功能。
Puppet: 集中管理系统配置的工具,支持多元素管理。
CFengine: Unix管理工具,简化管理任务。
Bash: Linux与MacOS的默认shell,广泛使用于自动化任务。
RunDeck: Java/Grails编写的工具,简化数据中心与云环境自动化。
Saltstack: 基于Python的配置管理工具,快速部署。
Ansible: 配置管理器,支持多节点发布与远程任务执行。
五、维护工具Logstash: 日志与事件传输、处理与管理平台。
CollectD: 用于收集系统性能与存储数据的守护进程。
StatsD: 简单的网络守护进程,用于收集统计信息。
六、监控、警告与分析工具Nagios: 监视系统运行状态与网络信息的空投软件源码工具。
Ganglia: 分布式监控系统,支持高性能计算环境。
zabbix: 基于Web的分布式系统监控与网络监视工具。
Kibana: Logstash与ElasticSearch的日志分析Web接口。
本文推荐的这些开源工具涵盖了运维流程的各个方面,从开发、构建、部署到维护与监控,能够有效地支持DevOps实践,提升工作效率与系统的可靠性。一篇文章了解CI/CD管道全流程
从CI/CD过程开始,包含所有阶段并负责创建自动化和无缝的软件交付的一系列步骤称为CI/CD管道工作流。使用CI/CD管道,软件发布工件可以从代码提交阶段到测试、构建、部署和生产阶段在管道中移动和前进。这个概念非常强大,因为一旦指定了一个管道,它的一部分或全部就可以实现自动化,从而加快流程并减少错误。换句话说,CI/CD管道使企业更容易一天自动多次交付软件。
DevOps工程师经常会因为CI/CD中各个阶段的自动化而与CI/CD管道混淆。虽然不同的工具可以使CI/CD中的各个复杂阶段实现自动化,但由于人工干预,CI/CD的整个软件供应链仍然可能被打破。那么,就首先了解CI/CD过程中的各个阶段,以及CI/CD管道为什么对于组织快速、大规模地交付代码至关重要。
企业应用程序开发团队通常由开发人员、测试人员/QA工程师、运营工程师和SRE(站点可靠性工程师)或IT运营团队组成。他们紧密合作,将高质量的软件交付给客户。CI/CD是两个独立过程的组合:持续集成和持续部署。下面列出了其中的主要步骤。
CI持续集成
CI持续集成(CI)是构建软件并完成初始测试的过程。持续部署(CD)是将代码与基础设施结合起来的过程,确保完成所有测试并遵循策略,然后将代码部署到预期的环境中。当然,许多公司都有自己的流程,但主要步骤如下。
CI:代码提交
人员:开发人员和工程师、数据库管理员(DBA)、基础架构团队
技术:GitHub、Gitlab、BitBucket
过程:代码提交阶段也称为版本控制。提交是将开发人员编写的最新更改发送到存储库的操作。开发人员编写的代码的每个版本都被无限期地存储。在与合作者讨论和审查变更之后,开发人员将编写代码,并在软件需求、功能增强、bug修复或变更请求完成后提交。管理编辑和提交变更的存储库被称为源代码管理(SCM工具)。在开发人员提交代码(代码推送请求)后,代码更改被合并到存储在中央存储库(如GitHub)中的基本代码分支中。
CI:静态代码分析
人员:开发人员和工程师、数据库管理员(DBA)、基础设施团队、测试人员
技术:GitHub、Gitlab、BitBucket
过程:一旦开发人员编写了代码并将其推送到存储库,系统就会自动触发,开始下一个代码分析过程。想象一下这样一个步骤:提交的代码直接进行构建,但在构建或部署过程中失败了。就资源利用率而言,无论是机器还是人力,这都是一个缓慢而昂贵的过程。必须检查代码的静态策略。SAST(Static Application Security Test):SAST是一种白盒测试方法,使用SonarQube、Veracode、Appscan等SAST工具从内部检查代码,以发现软件缺陷、漏洞和弱点(如SQL注入等)。这是一个快速检查过程,检查代码是否有语法错误。虽然此阶段缺少检查运行时错误的功能,但这将在稍后的阶段执行。
将附加的策略检查放到自动化管道中可以显著减少稍后在该过程中发现的错误数。
CI:build
人员:开发人员和工程师
技术:Jenkins、Bamboo CI、Circle CI、Travis CI、Maven、Azure DevOps
过程:持续集成流程的目标是接受常规的代码提交,并持续构建二进制工件。持续集成过程通过检查添加的新模块是否与现有模块配合良好,有助于更快地发现bug。这有助于减少验证新代码更改的时间。构建工具有助于编译和创建可执行文件或包(.exe、.dll,.jar等)取决于用于编写源代码的编程语言。在构建过程中,还会生成SQL脚本,然后与基础设施配置文件一起测试。简而言之,构建阶段是编译应用程序的阶段。构建过程的其他子活动包括工件存储、构建验证和单元测试。
CI:测试阶段
人员:测试人员和QA工程师
技术:Selenium、Appium、Jmeter、SOAP UI、Tarantula
过程:发布一个构建过程一系列自动化测试来验证代码的准确性。这一阶段有助于防止错误到达产品。根据构建的大小,此检查可以持续数秒到数小时。对于由多个团队提交和构建代码的大型组织,这些检查将在并行环境中运行,以节省宝贵的时间并尽早将Bug通知给开发人员。
这些自动化测试是由测试人员(或者称为QA工程师)建立的,他们已经根据用户故事建立了测试用例和场景。他们进行回归分析,压力测试,以检查与预期产出的偏差。测试中涉及的活动有健全性测试、集成测试和压力测试。这是一个非常先进的测试水平。在这里会发现开发代码的开发人员可能不知道的问题。
集成测试:
集成测试是使用Cucumber、Selenium等工具来执行的,其中各个应用程序模块作为一个组进行组合和测试,同时评估是否符合指定的功能需求。在集成测试之后,需要有人批准将该组中的更新集移动到下一阶段,这通常是性能测试。这个验证过程可能很麻烦,但它是整个过程的重要组成部分。核查过程中出现了一些新的解决办法。
负载和压力测试:
负载平衡和压力测试也使用自动化测试工具(如Selenium、JMeter等)来执行,以检查应用程序在高流量环境下是否稳定和性能良好。此测试通常不会在每个更新上运行,因为完整的压力测试是长期运行的。在发布主要的新功能时,将对多个更新进行分组,并完成完整的性能测试。在单个更新被转移到下一个阶段的情况下,管道可能包括金丝雀测试作为替代方案。
持续部署:bake和部署
人员:基础设施工程师、现场可靠性工程师(SRE)、运维工程师
技术:Spinnaker、Argo CD、Tekton CD
过程:测试阶段完成后,清除了标准的代码就可以部署到服务器中,在那里它们将与主应用程序集成。在部署到生产环境之前,它们将被部署到产品团队内部使用的测试/暂存或beta环境中。在将构建移动到这些环境之前,构建必须经过两个子阶段Bake和Deploy。这两个阶段都是Spinnaker固有的。
CD:Bake
Bake是指从源代码中创建一个不可变的映像实例,该实例在生产环境中具有当前配置。这些配置可能是数据库更改和其他基础设施更新之类的内容。Spinnaker可以触发Jenkins来执行这个任务,有些组织更喜欢使用Packer。
CD:部署
Spinnaker将自动将烘焙的映像传递到部署阶段。这是将服务器组设置为部署到集群的位置。与上述测试过程类似,在部署阶段执行功能相同的过程。部署首先转移到测试、阶段,最后转移到生产环境,然后进行批准和检查。整个过程由Spinnaker之类的工具处理。
CD:验证
这也是团队优化整个CI/CD流程的关键所在。因为现在已经进行了很多测试,所以失败应该很少。但此时的任何故障都需要尽快解决,以便将对最终客户的影响降到最低。团队也应该考虑自动化这部分流程。
部署到生产环境是使用部署策略(如蓝绿部署、金丝雀分析、滚动更新等)执行的。在部署阶段,将监视正在运行的应用程序,以验证当前部署是否正确或是否需要回滚。
CD:监控
人员:SRE,运维团队
技术:Zabbix、Nagios、Prometheus、Elastic Search、Splunk、Appdynamics、Tivoli
过程:要使一个软件发行版具有故障安全性和健壮性,在生产环境中跟踪发行版的运行状况是至关重要的。应用程序监控工具将跟踪CPU利用率和发布延迟等性能指标。日志分析器将扫描底层中间件和操作系统产生的日志流,以识别行为并跟踪问题的来源。在生产过程中出现任何问题时,都会通知相关人员,以确保生产环境的安全性和可靠性。此外,监视阶段帮助企业收集有关新软件更改如何为收入做出贡献的信息,并帮助基础架构团队跟踪系统行为趋势和进行容量规划。
持续部署:反馈和协作工具
人员:SRE、Ops和维护团队
技术:禅道、ServiceNow、Slack、Email、Hipchat
DevOps团队的目标是更迅速、持续地发布,然后不断减少错误和性能问题。这是通过slack或电子邮件频繁地向开发人员和项目经理反馈新版本的质量和性能,并在ITSM工具中及时提高票价来实现的。通常,反馈系统是整个软件交付过程的一部分;因此交付过程中的任何更改都会频繁地记录到系统中,以便交付团队可以对其采取行动。
企业必须评估一个整体的持续交付解决方案,它可以自动化或促进上述阶段的自动化。
ubuntuå¹³å°å¦ä½ä½¿ç¨å½ä»¤ä¸è½½è½¯ä»¶
1. 使ç¨apt-get installæ¥å®è£ åºç¨ç¨åºæ¯æ常è§çä¸ç§å®è£ æ¹æ³ï¼æ¯å¦è¦å®è£ buildessentialè¿ä¸ªè½¯ä»¶ï¼ä½¿ç¨ä»¥ä¸ï¼ä»ä¼å¸®ææææçä¾èµå é½ä¸èµ·å®è£ äºã
sudo apt-get install build-essential
æ§è¡ä¸è¿°å½ä»¤ä»¥åï¼æ们å¯ä»¥çå°ä¸ä¸ä¿¡æ¯ï¼
The following extra packages will be installed:表示ææéè¦åå®è£ çä¾èµå ã
sudo apt-get install build-essential
[sudo] password for enadmin:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
binutils cpp cpp-4.6 dpkg-dev fakeroot g++ g++-4.6 gcc gcc-4.6
libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl
libc-bin libc-dev-bin libc6 libc6-dev libdpkg-perl libgomp1 libmpc2 libmpfr4
libquadmath0 libstdc++6-4.6-dev linux-libc-dev manpages-dev
Suggested packages:
binutils-doc cpp-doc gcc-4.6-locales debian-keyring g++-multilib
g++-4.6-multilib gcc-4.6-doc libstdc++6-4.6-dbg gcc-multilib autoconf
automake1.9 libtool flex bison gdb gcc-doc gcc-4.6-multilib
libmudflap0-4.6-dev libgcc1-dbg libgomp1-dbg libquadmath0-dbg
libmudflap0-dbg binutils-gold glibc-doc libstdc++6-4.6-doc
The following NEW packages will be installed:
binutils build-essential cpp cpp-4.6 dpkg-dev fakeroot g++ g++-4.6 gcc
gcc-4.6 libalgorithm-diff-perl libalgorithm-diff-xs-perl
libalgorithm-merge-perl libc-dev-bin libc6-dev libdpkg-perl libgomp1 libmpc2
libmpfr4 libquadmath0 libstdc++6-4.6-dev linux-libc-dev manpages-dev
The following packages will be upgraded:
libc-bin libc6
2 upgraded, newly installed, 0 to remove and not upgraded.
Need to get .3 MB of archives.
After this operation, .6 MB of additional disk space will be used.
Do you want to continue [Y/n]? y
ä¸é¢ç»åºapt-getççåç§åæ°ï¼
apt-get install xxx å®è£ xxx ãå¦æ带æåæ°ï¼é£ä¹-d è¡¨ç¤ºä» ä¸è½½ ï¼-f 表示强å¶å®è£
apt-get remove xxx å¸è½½xxx
apt-get update æ´æ°è½¯ä»¶ä¿¡æ¯æ°æ®åº
apt-get upgrade è¿è¡ç³»ç»å级
apt-cache search æ索软件å
Tipsï¼å»ºè®®æ¨ç»å¸¸ä½¿ç¨âapt-get updateâå½ä»¤æ¥æ´æ°æ¨ç软件信æ¯æ°æ®åº ã
apt-getç论ä¸æ¯è¦æ±è½å¤èç½ï¼ä½æ¯å¦æå¶ä½äºæ¬å°æºï¼å°±ä¸éè¦èç½ï¼å¶ä½æ¬å°æºå¯ä»¥åèï¼ubuntuå¶ä½æ¬å°æºã
2. dpkgå®è£ debå
Ubuntu软件å æ ¼å¼ä¸ºdebï¼å®è£ æ¹æ³å¦ä¸ï¼
sudo dpkg -i package.deb
dpkgç详ç»ä½¿ç¨æ¹æ³ï¼ç½ä¸æå¾å¤ï¼ä¸é¢ç®ååäºå 个ï¼
dpkg -i package.deb å®è£ å
dpkg -r package å é¤å
dpkg -P package å é¤å ï¼å æ¬é ç½®æ件ï¼
dpkg -L package ååºä¸è¯¥å å ³èçæ件
dpkg -l package æ¾ç¤ºè¯¥å ççæ¬
dpkg âunpack package.deb è§£å¼ deb å çå 容
dpkg -S keyword æç´¢æå±çå å 容
dpkg -l ååºå½åå·²å®è£ çå
dpkg -c package.deb ååº deb å çå 容
dpkg âconfigure package é ç½®å
æ ¹æ®Ubuntuä¸æ论åä¸ä»ç»ï¼ä½¿ç¨apt-getæ¹æ³å®è£ ç软件ï¼ææä¸è½½çdebå é½ç¼åå°äº/var/cache/apt/archivesç®å½ä¸äºï¼æ以å¯ä»¥æ常ç¨çdebå å¤ä»½åºæ¥ï¼çè³åæISOå·¥å ·å ãå»çï¼ä»¥åå®è£ Ubuntuæ¶å°±å¯ä»¥å¨æ²¡æç½ç»ç¯å¢çæ åµä¸è¿è¡äºãä¸é¢çå½ä»¤æ¯æ·è´archivesè¿ä¸ªç®å½å°/var/cache/apt/ç®å½ä¸ï¼æ¿æ¢åæçarchives
enadmin@ubuntu-server:~/ftp$ sudo cp -r archives/ /var/cache/apt/
3. make installæºä»£ç å®è£ ã
å¦æè¦ä½¿ç¨makeå®è£ çè¯ï¼é£ä¹å¿ é¡»å¾å®è£ build-essentialè¿ä¸ªä¾èµå ï¼å®è£ æ¹æ³å·²ç»å¨åé¢è¯´è¿äºãå¨å®è£ å®æ¯ä»¥åï¼æ们就å¯ä»¥è¿è¡æºç å®è£ ãæºç å®è£ 大è´å¯ä»¥å为ä¸æ¥éª¤ï¼ï¼./configureï¼âï¼ ç¼è¯ï¼sudo makeï¼ âï¼ å®è£ ï¼sudo make installï¼ã
é ç½®ï¼è¿æ¯ç¼è¯æºä»£ç ç第ä¸æ¥ï¼éè¿ ./configure å½ä»¤å®æãæ§è¡æ¤æ¥ä»¥ä¾¿ä¸ºç¼è¯æºä»£ç ä½åå¤ã常ç¨çé项æ --prefix=PREFIXï¼ç¨ä»¥æå®ç¨åºçå®è£ ä½ç½®ãæ´å¤çé项å¯éè¿ --help æ¥è¯¢ãä¹ææäºç¨åºæ éæ§è¡æ¤æ¥ã
ç¼è¯ï¼ä¸æ¦é ç½®éè¿ï¼å¯å³å»ä½¿ç¨ make æ令æ¥æ§è¡æºä»£ç çç¼è¯è¿ç¨ãè§è½¯ä»¶çå ·ä½æ åµèå®ï¼ç¼è¯æéçæ¶é´ä¹åæå·®å¼ï¼æ们æè¦åçå°±æ¯èå¿çååéè§å ¶åãæ¤æ¥è½ç¶ä» ä¸ç®åçæ令ï¼ä½ææ¶åæéå°çé®é¢å´ååå¤æãè¾å¸¸ç¢°å°çæ å½¢æ¯ç¨åºç¼è¯å°ä¸éå´æ æ³å满ç»æãæ¤æ¶ï¼éè¦æ ¹æ®åºéæ示åæ以便æ¾å°åºå¯¹ä¹çã
å®è£ ï¼å¦æç¼è¯æ²¡æé®é¢ï¼é£ä¹æ§è¡ sudo make install å°±å¯ä»¥å°ç¨åºå®è£ å°ç³»ç»ä¸äºã
ä¸é¢ä»¥å®è£ nagios为ä¾è¿è¡è¯´æã
//1.解å缩
tar -zxf nagios-4.0.2.tar.gz
//2.è¿å ¥ç®å½
cd nagios-4.0.2
//3.é ç½®
./configure --prefix=/usr/local/nagios
//4.ç¼è¯
make all
//5.å®è£
make install && make install-init && make install-commandmode && make install-config
以ä¸å°±æ¯æºä»£ç å®è£ æ¹å¼ã