- 博客(61)
- 收藏
- 关注
原创 VSFTP搭建和运维
应用安装yum安装vsftp启动服务配置文件路径虚拟用户配置虚拟用户必须关闭匿名用户备份配置文件修改配置文件变更后的vsftpd.conf内容如下anonymous_enable=NO #不允许匿名用户登录write_enable=YES #允许使用任何可以修改文件系统的FTP的指令。
2024-07-23 07:55:10
926
原创 GlusterFS文件服务器安装
root@node01 ~]# sed -i ‘s#SELINUX=enforcing#SELINUX=disabled#g’ /etc/selinux/config #关闭SELinux。[root@node01 ~]# mount -t glusterfs 127.0.0.1:/gv1 /mnt #文件夹/mnt挂载到gv1下。#创建文件的实际存在位置为node01、node02和node03上的/data/brick1目录下,因为是复制卷,这两个目录下的内容是完全一致的。
2024-07-23 07:55:01
470
原创 Centos7 升级内核版本
ELRepo 仓库是基于社区的用于企业级 Linux 仓库,提供对 RedHat Enterprise (RHEL) 和 其他基于 RHEL的 Linux 发行版(CentOS、Scientific、Fedora 等)的支持。服务器上存在4 个内核,我们要使用 4.18 这个版本,可以通过 grub2-set-default 0 命令或编辑/etc/default/grub文件来设置。默认开启的是 elrepo,这里用 elrepo-kernel替换。设置新的内核为grub2的默认版本。
2024-07-23 07:54:43
470
原创 硬件信息查询及故障处理
磁盘管理篇megacli查询和管理磁盘sas卡情况下查看磁盘序列号:(mpt*类型的驱动不能使用megacli)MegaCli -LDInfo -Lall -aALL #查看raid级别MegaCli -AdpAllInfo -aALL #查看raid卡信息MegaCli -PDList -aALL #查看硬盘信息 MegaCli -ShowSummary -aALLMegaCli LDPDInfo -Aall #检查错误盘。
2024-07-23 07:54:29
920
原创 Linux内核调优部分参数说明
之所以要设定这个限制,纯粹为了抵御那些简单的DoS攻击,不过,过多的TIME_WAIT套接字也会消耗服务器资源,甚至死机。#表示那些尚未收到客户端确认信息的连接(SYN消息)队列的长度,默认为1024,加大队列长度为262144,可以容纳更多等待连接的网络连接数。默认是2小时,若将其设置得小一些,可以更快地清理无效的连接。#该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量。#表示开启TCP连接中TIME_WAIT套接字的快速回收,默认为0,表示关闭。
2024-07-23 07:53:46
245
原创 数据仓库DW、ODS、DM概念及其区别
在具体分析数据仓库之前先看下一下数据中心的整体架构以及数据流向。通过一个简单例子看这几层的协作关系。ODS、DW、DM协作层次图。ODS到DW的集成示例。
2024-07-23 07:53:26
518
原创 CPU是否开启超线程判断
需要注意的是,超线程技术并不能使单个线程的性能翻倍,因为物理内核的计算单元和资源是有限的。此外,超线程的效果也取决于应用程序的性质,对于一些无法充分利用多线程的程序,开启超线程可能不会有太大的性能提升。提高虚拟化性能:在虚拟化环境中,超线程技术可以提供更多的逻辑处理器,使虚拟机能够更有效地利用硬件资源,从而提高整个系统的虚拟机密度和性能。提升并发性能:对于多任务或多线程应用程序,超线程可以显著提升性能,因为更多的线程可以同时执行,减少了任务间的切换延迟。可以根据以下原则,来判断是否支持HT技术。
2024-07-23 07:53:08
399
原创 微服务架构的通信模式
有同步请求/响应通信机制,例如基于 HTTP 的 REST 或 GraphQL,或 gRPC。或者可以使用异步的、基于消息的通信机制,例如 AMQP(高级消息队列协议)或 STOMP(简单/流式面向文本的消息传递协议)。此外,还有许多不同的消息格式。改进了客户端-服务器交互,使前者能够进行精确的数据请求,并只获得他们需要的数据。基于消息的应用程序通常使用像 RabbitMQ 这样的消息代理,充当服务之间的中介。微服务的通信模式,通信是保证服务请求核心要素,选择合适的一个通信协议对系统来说可以达到事半功倍。
2024-07-23 07:52:01
1005
原创 高并发微服务架构设计
基于云端组建的基础资源,包括数据库、缓存和文件系统等,这些资源既可以使用云服务提供商提供的优质 RDBS 、分布式数据库和对象存储等服务,也可以自己搭建各种集群体系。这是一个典型的微服务总体架构设计图,自上往下看,可以分为前台应用层、 API 接入层、业务应用层、服务中心和基础资源层结构,每层结构都有其自身的功能和特别的设计。如图 2-4 所示,是根据阿里云设计的一个安全管理架构,通过安全防护和安全预警 对不安全的访问或可能存在的攻击进行有效隔离,从而保证系统的安全和稳定。
2024-07-23 07:51:49
890
原创 从单体架构改为微服务
保留在单体中的类可能会引用已移动到服务的类,反之亦然。使用主键替换对象引用的一个问题是,虽然这是对类的一个小改动,但它可能会对期望对象引用的类的客户端产生很大的影响。如果是这样,那么你的救星来了,如果从当前窘境中脱离,实现我们的微服务,从而完成我们的升级。你需要通过将单体中的功能提取到服务,从而将单体中的功能迁移到绞杀者应用程序。因此,你可以将 Order 和 Restaurant 类视为聚合,如图所示,将Order类中对 Restaurant 的引用替换为存储主键值的restaurantId 字段。
2024-07-23 07:51:28
726
原创 网卡丢包处理
中断是由外部设备引起的,计算机能够接受的外部信号,非常的有限,因为不可能为每一个外部的设备都定义好信号的格式,所以,计算机给外部信号,只约定了一种信号格式,这种信号就是中断信号,这套信号的接受和处理共同组成中断机制。另外,前面提到,有些网卡支持 “中断合并” 特性,这个特定对于缓解中断压力有好处,并且默认情况下这个特性是关闭的,对这个服务器的网卡,设置 “中断合并” 操作,并没有生效,设置完成后也不报错,通过 ethtool -C eth0 也依然看到是 Off 状态。首先,这个操作,并不推荐。
2024-07-23 07:51:02
482
原创 docker的使用方法
因为镜像到本地后,产看空间时,更关心的是本地磁盘空间的占用。为了解决这些问题,docker引入了数据卷(volume)机制,数据卷是存在于一个或多个容器中的特定文件或文件夹,这个文件或文件夹独立于docker文件系统的形式存在于宿主机中。问题:通过镜像创建一个容器,容器一旦被销毁,则容器内的数据将一并被删除,但有些情况下,通过服务器上传的图片会出现丢失,容器的数据不是持久化状态的。-i:保持和 docker 容器内的交互,启动容器时,运行的命令结束后,容器依然存活,没有退出(默认是会退出,即停止的)
2024-07-21 11:11:26
810
原创 微服务设计与治理16条常用原则
它的出现促进了优先对象模型的服务方法,定义了服务责任和绑定的数据模型。正确的拆分对提高系统的容量有很大的帮助,失败的拆分可能会造成热点集中,得不偿失。场景说明:例如我们以前在本地内存中建立的数据缓存、Session缓存,到现在的微服务架构中就应该把这些数据迁移到分布式缓存中存储,让业务服务变成一个无状态的计算节点。它提供更快的交付服务、跨数据的可见性和具有成本效益的数据。当你修改了一个边角的小功能,但是你不敢马上上线,因为你依赖的其他模块才开发了一半,出现大量「功能耦合」,那么这个微服务就需要拆分了。
2024-07-21 11:02:19
582
原创 Java类加载机制
比如A类的加载器是AppClassLoader(其实我们自己写的类的加载器都是AppClassLoader),AppClassLoader不会自己去加载类,而会委ExtClassLoader进行加载,那么到了ExtClassLoader类加载器的时候,它也不会自己去加载,而是委托BootStrap类加载器进行加载,就这样一层一层往上委托,如果Bootstrap类加载器无法进行加载的话,再一层层往下走。从上面贴出的Class类的构造方法源码中,我们知道这个构造器是私有的,并且只有虚拟机才能创建这个类的对象。
2024-07-21 10:53:05
1013
原创 CICD+Gerrit 流程
manifest仓库存放不同分支对应的jenkinsfile,master.jenkinsfile、develop。根据分支获取对应manifest.xml下载代码。每个仓库的提交触发对应的多分支流水线,多分支流水线会创建以 change_name 命名的Pre build Job。编译时将判断本次提交patch 的仓库是否在manifest.xml内,不在则退出编译,在则开始更新代码并开始编译。MANIFEST_XML:manifest的命名,例如:manifest.xml 、default.xml。
2024-07-21 10:40:22
920
原创 Gerrit CICD 模板
根据分支名判断需要调用哪个子流程编译,如果提交是master分支就会到dev/目录下运行master.jenkinsfile。在子流程中配置key 初始化repo 和下载代码 获取patch 命令都已封装成函数写在脚本中,只需传递参数使用。例如:master.jenkinsfile、develop.jenkinsfile。dev目录下 ${Branch_name}.jenkinsfile。Gerrit-code-review 多分支流水线。主流程:Jenkinsfile。Jenkinsfile 模板。
2024-07-21 10:39:50
406
原创 git的使用
git log --color --no-decorate --decorate 是否显示tag, branch。git log --oneline --left-right --cherry-mark A…git merge --ff (允许fastfoward合并,默认,自动) --no-ff(不允许)git log --merges --no-merges 只显示/不显示 合并节点。git blame -C -C -C 追踪所有commit中从其它文件拷贝过来的行。
2024-07-21 10:38:57
878
原创 Repo forall 批量推仓库
配置完成后到仓库下 git remote -v 验证, push地址要指向target 仓库。url 是 target 仓库,pushInsteadOf 是原始 仓库。在~/.gitconfig中添加如下配置。git checkout 推代码到target。
2024-07-21 10:38:25
214
原创 Coverity全量扫描Jenkins 流程模板
使用下列的Coverity 模板,可完成在 Jenkins 上的Coverity 全量扫描、上传全量报告到服务器端。修改模板Jenkinsfile。
2024-07-21 10:37:35
170
原创 webhook post-build 模板
需要在代码仓库配置webhook,需要maintianer权限。webhook配置可以参考Mr 触发的pre build。模板功能用于发版本到gallery上面。
2024-07-21 10:37:13
656
原创 多分支流水线方式的pre build
如果配置Scan时间为1min,那么每1min会扫描所配置的代码仓库的分支,如果在该分支上搜索到了配置的Jenkinsfile,就会在Jenkins 创建一个以分支命名的Job并编译,如下图dev,当分支上有新的提交也会触发编译。配置Jenkins job ,调用代码仓库中的Jump Jenkinsfile Jenkins job调用代码仓库中的Jenkinsfile。因多分支流水线 job 以分支为命名,ph rule不能直接触发,所以会创建一个中转的jump job来根据分支下发编译需求。
2024-07-20 14:31:52
591
原创 Webhook 触发CICD job
使用Webhook在推送代码或创建Issue时触发一个事前配置好的URL,GitLab会向设定的Webhook的URL发送一个POST请求。Jenkinsfile 名:Jenkinsfile_Pre_build_MR。https://:@ci.hobot.cc/project/配置Jenkins job ,调用代码仓库中的Jenkinsfile。配置完webhookurl后,勾选Trigger选项,如下图中的2.语句的作用参考 // 后的注释,标黄部分必须根据项目实际情况修改。
2024-07-20 14:14:33
231
原创 pod 内部docker 的时间和 外部node时间不一致
可以将外部的/etc/localtime文件在pod启动的时候挂载到docker内部即可。
2024-07-20 14:03:49
122
原创 Jenkins lockable-resources 插件的配置和使用
用来阻止多个构建在同一时间试图使用同一个资源。这里的资源可能是一个节点、一个代理节点、一组节点或代理节点的集合,或者仅仅是一个用于上锁的名字。如果指定的资源没有在全局配置中定义,那么它将会被自动地添加到系统中。quantity:允许运行数量。Jenkinsfile配置。
2024-07-20 14:01:36
129
原创 allure 使用方法
allure在流水线中的语法可以点击Jenkins job configure最后的Pipline Syntax 查看。在pytest运行函数或命令行中添加: --aullure 后面加上一个路径,用来存放生成的allure 配置信息。Allure-pytest 用来在pytest执行结束后生成allure所需的配置信息。如需在CICD流程中使用,要在docker images中安装allure。这里说的本地环境是指本地开发机或 需要编译生成报告的环境。安装allure-pytest。
2024-07-20 13:59:46
244
原创 Jenkins设置定时任务
勾选Build periodically, 在Schedule 中填写触发时间。配置定时任务之后,run 一下job,几秒后将job 停掉,使定时配置生效。填写完Schedule 可查看下方的提示确认触发时间。在jenkinsfile 中添加trigger的配置。方法一:(推荐)Pipeline中配置定时。H 3 * * * (每天凌晨三点触发)H 0 * * 7 (每周日0点触发)注: 第一位必须要是 H。点击Configure。方法二:页面配置定时。
2024-07-20 13:47:06
288
原创 设置编译pod docker资源保护
prepare docker是参考容器,请根据实际需要设置资源保护的编译docker name去设置,例如:build,ubuntu-build等等编译容器,prepare只是拉代码的容器不用设置保护。最小占用资源和最大占用资源设置成一样值的话,就是docker在启动时会占用固定的资源。最小占用资源和最大占用资源设置成一样值的话,就是docker在启动时会占用固定的资源。设置了资源保护之后,可以最大限度的防止由于资源不足导致的docker 退出的问题。资源设置针对的是pod内的docker容器。
2024-07-20 13:39:20
205
原创 Jenkins job 运行挂载外部存储/缓存
在确认k8s环境的CI集群已经有对应的存储目录之后,需要该目录映射到jenkins job的pod中。cache和gradle缓存目录需要在k8s环境的CI集群的node节点中先创建。当前jenkins 环境已经挂载了一个测试的gpfs目录作为各种缓存目录使用。以下内容针对把k8s pod作为agent的jenkins job场景。这个目录可以是gpfs存储也可以是k8s 集群的node的本地目录。Job 的pod是每次运行的时候会自动挂载。需要设置ccache缓存目录。需要设置gradle缓存目录。
2024-07-20 13:30:39
138
原创 通过http方式触发jenkins job
关键字:buildWithParameters。test_param2 pipeline参考。test_param pipeline参考。拥有可运行job权限的用户token。可运行的jenkins job。调用不带参数的job。
2024-07-20 13:24:29
119
原创 Jenkins agent
如果不用label,直接用node name 也可以调度,写法一摸一样的,就是将label对应的值配置成node name。当前的CI集群配置的策略是 job运行的时候会启动一个pod,等job运行结束会销毁这个pod。Jenkins 通过插件和k8s集群关联,可以通过声明pod的模板,在k8s集群中创建pod。Jenkins 工作模式是master/slave模式,slave端可以是多平台多环境的。程序在运行的时候就会调度到这个demo_node这个标签对应的node节点上面。
2024-07-20 13:18:52
304
原创 外网依赖源
依赖项源地址/备用源地址yumhttps://mirrors.aliyun.com/centos/https://mirrors.aliyun.com/epel/ubuntuhttps://mirrors.aliyun.com/ubuntu/ros2http://packages.ros.org/ros2/ubuntu/Anacondahttps://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/mainhttps://m
2024-07-20 13:11:22
140
原创 BlackDuck升级和备份
复制/mnt/ 目录数据到/blackduck/KB_2024_02目录。以下以2月份的升级操作做参考,创建的目录是KB_2024_02。KB每个月都会更新数据,所以数据目录可以根据月份来进行区分。数据解压之后 可以根据目录中的文件提示校验大小。查看备份相关内容即可,其他步骤无需操作。解压KB_2024_02的数据。内网BD服务的 KB服务更新。内网BD服务数据定时备份。挂载数据盘到操作系统。创建新的KB数据目录。每次更新需要修改脚本。
2024-07-20 11:17:04
225
原创 Coverity 本地扫描方案
方案一: 获取到新增文件列表后,如果本地已有缓存,可以直接进行cov-build,cov-analyze等,因为缓存机制,只会对改动文件相关的代码进行编译,扫描出来的结果也只会是参与编译的文件相关的问题。方案二:由于需要一次全量扫描并上传到coverity后台,利用缓存机制会造成非全量代码参与编译扫描,从而影响coverity后台数据的准确性,所以在做第一次全量扫描上传时候不太适合缓存机制。增量扫描是针对于单次改动的代码,根据改动后的代码,Coverity扫描得到与增量代码相关的一系列问题。
2024-07-20 10:56:35
389
原创 Jenkins git权限配置
包含 -----BEGIN OPENSSH PRIVATE KEY----- 和 -----END OPENSSH PRIVATE KEY-----Jenkinsfile通常在Jenkins project的配置里面可以找到,通过project里面的 configure 按钮可以找到对应的配置。从 -----BEGIN OPENSSH PRIVATE KEY-----到 -----END OPENSSH PRIVATE KEY-----Jenkins Job内的配置 替换红框内的配置信息。
2024-07-20 10:50:49
470
原创 Gerrit 接入门禁
脚本文件:/data/gerrit/gerrit_application/script/check_commit_msg.py。hooks文件: /data/gerrit/gerrit_application/hooks/commit-received。目前gerrit没有接入门禁检查,希望能通过门禁自动检查commit message 合规性。2.1 添加hooks(根据需要调整)2.2 添加脚本(根据需要调整)二、操作步骤(不需要重启系统)
2024-07-16 11:16:27
214
原创 Gerrit 提交关联jira
可以针对每个项目配置是否启用 Jira 集成。下载链接:https://archive-ci.gerritforge.com/job/plugin-its-jira-bazel-master-stable-3.6/模板文件:/data/gerrit/gerrit_application/etc/its/templates/link.soy。配置文件:/data/gerrit/gerrit_application/etc/its/actions.config。2.4 添加插件配置。2.5 添加插件模板。
2024-07-16 11:13:11
250
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人