
系统运维
文章平均质量分 65
Linux系统运维
菜爷面馆
大家好,
我叫青菜,
原阿里巴巴资资深软件工程师,
原梵帝IT技术总监,
45岁转行学厨师,
你们愿意看我怎么学厨师,
然后一步步走上创业之路吗?
展开
-
Docker实战之二
我们介绍了Dokcer 镜像和容器基本概念,这一节我们来具体制作一个镜像文件并进行快速部署,这个镜像文件是我们的测试环境,主要包含JDK1.8、Nginx、Git、Node、Gradle,基础镜像为CentOS,另外安装一些常用的工具,两个Java项目、两个前端项目,镜像生成后,如果要部署一台新的机器,直接启动该镜像进入容器执行四个发布脚本即可,Redis和MySQL、S3等存储相关的是直接连远程机器。3、配置Nginx vim /etc/nginx/nginx.conf。原创 2023-10-27 21:41:26 · 346 阅读 · 0 评论 -
Docker实战之一
K8S这么高端我们是还没有玩过的,Docker倒是实践过一把,这个系列会简单介绍一下实战的过程,具体背景是因为我们有时需要给门店提供一个相对稳定的培训环境,但他们又不需要长期使用,没有必要长期占用机器,需要的时候临时再购买机器就好,然后用Docker快速部署应用,这一篇我们先来了解一下Docker一些基本概念。容器是通过镜像创建的,它是独立于宿主机的隔离进程,可以被启动、开始、停止、删除,每个容器是相互隔离的,镜像与容器的关系就像面向对象中类和对象之间的关系,镜像就是类,容器就是对象。原创 2023-10-27 15:50:45 · 135 阅读 · 0 评论 -
最简单一个跳板机实现
生产环境有很多服务器需要让开发人员登录上去做一些基本的操作,比如查看日志什么的,一般小厂对安全要求不是很高,就会直接把ROOT账号给到所有开发人员,但这样当员工离职后,需要去修改ROOT密码是一件很麻烦的事情,并且也没有办法确认当前谁在服务器上做了什么操作,这时我们就可以采用跳板机机制来管理服务器登录,现在一般有专业运维团队的厂应该是用类似JumpServer这种堡垒机,堡垒机功能要强大很多。客户机通过ssh登录到跳板机,然后在跳板机通过ssh登录对应的服务器。原创 2023-10-26 11:38:34 · 653 阅读 · 0 评论 -
三战时区问题
前两天测试向我反馈生产环境挖机进口日期页面上展示的比数据库中存储的早了一天,但在测试环境是正常的,并且其它时间字段都没有任何问题,很是奇怪,安排开发排查没有头绪,然后我自己登录生产环境确认LInux系统都统一为UTC时区,MySQL测试环境是UTC,但生产环境默认是东八区,将生产环境MySQL设置为UTC问题即解决,当时比较忙也没仔细多想,今天有时间就重新把问题重现梳理一下。注:系统中使用MyBatis通过类映射返回数据,但底层原理是一样的,还是因为数据库驱动的造成时区问题。原创 2023-10-10 10:47:55 · 120 阅读 · 0 评论 -
Jenkins Publish over SSH一个问题
开始一直以为是环境变量的配置,代码中加了 source /root/.bash_profile也没解决问题,后来将bin/startup.sh 改也 nohup bin/startup.sh > /dev/null 2>&1 &终于可以正常启动tomcat,这就特别奇怪了,我另外一个项目也是用bin/startup.sh启动tomcat没有任何问题,最后怀疑这个项目用 bin/startup.sh 启动不成功,是因为tomcat中修改了一段配置。原创 2023-09-02 07:09:34 · 486 阅读 · 0 评论 -
Jenkins搭建与配置
选择远程服务器,配置要发送的文件,这里用通配符即可(他只会把这个工作空间的jar包发送过去),Remote directory远程目录,然后在Exec command里配置远程shell脚本的路径,这个shell脚本主要完成kill原有进程,使用新的jar包启动进程完成发布,简单的代码如下。注意这里copy的时候不要少COPY了内容,我用cat查看文件开始就把-----END RSA PRIVATE KEY----- 这一行没COPY过去,如果有问题的话,文件是发送不过去的。原创 2023-09-01 11:17:42 · 1378 阅读 · 0 评论 -
Git分支管理流程
今天合并代码时又碰到了游离分支的问题,一直没有什么好的解决方案,不确定是否与我的分支管理机制有关。原创 2023-09-01 10:57:33 · 144 阅读 · 0 评论 -
Git基本概念
Git是分布式版本管理系统,但实际上Git和SVN一样都会有一个远程服务器,不过Git有本地仓库概念,并且本地仓库有完整的版本信息记录,而SVN并没有,其它的都差不多,其实Git在小团队中相比SVN有什么优势我也没搞懂,大家都用Git我们也用,不然感觉落伍了。:用远程库覆盖本地库代码,git reset --hard HEAD^ 回退到上一个版本,你本地WorkSpace和Index和Head区都会被重置。用Git很多年了,其实就会几条命令,本篇主要讲一下Git基本概念,不涉及分支管理。原创 2023-08-29 08:14:32 · 72 阅读 · 0 评论 -
如何给企业搭建呼叫中心
1、:400电话是一种主叫分摊业务,主叫承担市话费,被叫承担所有来电接听费用,它是为企事业提供的虚拟电话总机,拨往400的电话会被转接至预先设定的实体号码上,400电话总机只负责接入不能外拨。2、:提供一个服务号给400供应商绑定,接入客户拨打的400电话后会进行席位分配,按席位数量收费,比如合力翼捷的价格是300元/每月/每席位。3、:订单客服系统。4、:将互联网接入的数据信号转换成话务盒接听的模拟信号,一台8口的语音网关2000元。5、原创 2023-08-29 07:38:45 · 133 阅读 · 0 评论 -
时区调整害了Crontab
我在阿里云国际站购买的澳洲区域的ECS实例,默认的时区竟然是北京时间(这里要吐槽一下阿里云),然后自己对系统时区进行调整,由北京时区调整为UTC,此时本应该重启crontab才会生效,但我以为crontab会自动识别到时区的变化,就没有重启,就造成执行时间不对的问题。POS系统刚上线的时候定时任务也出过一次问题,也是数据库冷备并且没有做压缩,大约2G的数据量,机器时区是UTC,然后配置为0点钟执行,换算成北京时间就是8点钟,此时正是业务高峰,当时直接就把网络堵塞了,造成系统短暂Hold。原创 2023-08-28 06:54:10 · 824 阅读 · 0 评论 -
扫码枪的那些事
扫码枪分为有线和无线,有线现在使用一般是USB接口,无线的有蓝牙和无线433协议,我们使用的是无线433的扫码枪,它有一个接收器连在电脑上来接收数据,一般接收器可以同时接收多把扫码枪,我们每个收银台配置了一对,因为配置的问题,1号收银台的扫码枪扫出来的数据被2号收银台的接收器接收走了,然后商品数据就显示在2号收银台。条形码,英文barcode,是产品一个身份标记代码,由全球GS1制定标准,不同国家根据自身情况做区分,我国由中国物品编码中心制定国家标准。Java条码生成有开源库Barcode4j。原创 2023-08-27 16:09:13 · 393 阅读 · 0 评论 -
Yum软件包管理
昨天在一台老的机器上安装一个MQ 项目,执行发布脚本时一直卡在那里,怀疑项目里gradle配置私有Maven仓库连接不上,想执行Telnet或NC测试一下,发现都没装,那就装一下,不就是一条yum语句的事吗,输入 yum install telnet,我了个去,报一堆错误,然后就是各种折腾,花了半天时间才搞定,其实一直以来对LInux软件包的管理机制都没怎么去了解过。主配置文件,一般不需要改动,主要配置RPM包缓存目录,日志文件路径等。enable:是否启用当前仓库。base-url:仓库路径。原创 2023-08-26 23:11:40 · 594 阅读 · 0 评论 -
配置Stunnel解决AWS Redis连接问题
在AWS上申请了一个ElastiCache For Redis实例,主要用于存储token信息以及商品数据,申请后在EC2服务器直接连接不上去,因为ElastiCache启用了SSL协议,直接用redis-cli是无法访问的,咨询了资深人士告诉我安装一个Stunnel做转发,客户端可以忽略证书的检测(类似于Java调用Https接口,也会加入一段忽略证书的代码),配置如下图所示,一直没有去了解Stunnel这个到底是个啥,今天在阿里云临时租用了两台ECS做一下测试,稍微深入了解一下Stunnel这个工具。原创 2023-08-26 18:41:48 · 488 阅读 · 0 评论 -
Shell脚本一些例子与基本语法介绍
这个例子是批量创建用户,涉及到遍历文件,条件判断,循环等基本语法。原创 2023-08-26 15:15:28 · 64 阅读 · 0 评论 -
Linux账号管理
生产环境开发人员都需要能够登录上去运维或查看日志,因为信任,所以简单!你把root账号密码都告诉所有人,然后某一天机器挂了,你登录上一看 rm -rf * ,这是哪个混蛋干的,这时候估计是没人会认账的,好吧,那这样我给每个开发人员都开一个账号不就好了吗,开了账号后,然后你会发现开发人员开始抱怨了,我这个账号怎么这个也做不了,那个也做不了?sudo允许管理员通过授予某些用户以root或其它用户身份运行某些命令的能力,同时提供命令及参数的审核记录,从而委派权限。给每个开发人员创建一个账号。原创 2023-08-25 22:36:50 · 138 阅读 · 1 评论 -
Linux内存 Cache/Buffer/Swap解读
3、一般现在比较高的配置内存超过16G以上都不太需要配置SWAP,因为使用SWAP毕竟会造成效率变低,一般在低内存机器上配置以防OOM。Swap通常称为交换分区,这是一块特殊的内存空间,即当实际物理内存不够用时,操作系统将暂时不用的数据从内存取出放到交换分区中,从而为当前运行的程序腾出足够的空间。4、Cache占过高,看起来很不顺眼的时候,你也可以使用echo 3 > /proc/sys/vm/drop_caches清除。of=/tmp/swapfile:输出至/tmp/swapfile文件。原创 2023-08-24 14:42:04 · 1250 阅读 · 1 评论 -
Linux被暴力破解纪实
声明:本文仅供技术交流使用,严禁采用本文的方法进行任何非法活动。上一篇文章 Redis被攻击纪实 讲了我们测试环境Redis被攻击,今天再讲一下生产环境Linux被暴力破解的事情(更狗血),这件事就发生在今年,当时一台亚马逊生产环境机器是宁波技术团队的人负责购买然后交付给我们使用,开始是提供一个私钥文件给我,我觉用私钥不方便,让其直接提供密码给我,人家很客气,马上设置一个密码给到我 ,密码是:zaqxswcde,直到有一天,生产环境机器登录不上去,被当成挖矿机了。。。。。原创 2023-08-23 08:49:04 · 133 阅读 · 0 评论 -
Linux、Jvm、MySql性能监控小工具
日常运维需要实时监控机器运行情况,虽然阿里云和亚马逊都有监控大屏,但登录上去再切到对应机器还是比较麻烦,大多数情况查看实时负载时我都是直接登录机器查看,另外在做压测的时候也可以用这些工具监测系统负载状况。dstat:它是Python写的一个系统工具,可以实时监控cpu、内存、磁盘、网络等系统信息。1、--total-cpu-usage cpu使用率usr:用户进程cpu占比sys: 内核进程cpu占比usr+sys>80说明CPU资源不足,需要考虑升级机器。原创 2023-08-22 08:55:44 · 332 阅读 · 1 评论 -
Linux Shell + MySQL实现一个简单监控
使用Shell可以很容易获取服务器的Load、Mem、磁盘使用状况,然后将数据提交给MySQL数据库,,这样不管是阿里云还是亚马逊的机器,我可以极其方便的查看当前Linux的负载状况,先将monitor.sh部署到各服务器上,并且配置crontab每隔一分钟执行一次脚本。服务器必须先安装MySQL客户端。原创 2023-08-21 09:24:31 · 241 阅读 · 1 评论 -
Linux Sed与日志截取
sed是流编辑器,一次处理一行数据,它先把当前一行数据存储在临时缓存区,然后用sed命令处理缓存区内容,处理完成后把缓存区内容输出到屏幕,接着再处理下一行,一直到文件末尾,与awk处理方式是一样的,并且原文件不会被改动。grep、sed、awk号称Linux文本处理三剑客,grep用于文本过滤,sed适合行处理,awk适合列处理,awk以前有两篇文章介绍过,今天介绍一下sed的使用。当需要排查以前某一个时间段的日志,日志文件比较大没有办法直接用vi打开,这时可以用sed将当时的日志截取出来进行分析。原创 2023-08-20 12:17:45 · 636 阅读 · 1 评论 -
awk应用之两文件求交集、并集、差集
做系统运维时,经常需要对两个文件求并集、交集或差集,用临时表、脚本语言、Excel都可以处理,但不够方便,使用awk只需要简短一条语句就可以搞定,不过语法比较生涩难懂,下面讲一下这几条语句的执行过程。两个数据文件如下:a.txtb.txt。原创 2023-08-19 16:57:59 · 1142 阅读 · 0 评论 -
awk介绍及应用
awk是一门编程语言、主要用于文本分析和数据处理、它可以是单行命令或一段脚本程序、它是解析执行并逐行扫描文件。原创 2023-08-19 08:13:58 · 144 阅读 · 0 评论 -
台风,硬盘进水了
这种不能放在核心应用中,唉,有些事情也不完全是我个人的问题,我们在维护这么重要的系统同时竟然还用了大半年时间去开发其他系统,完全没有时间来考虑这个系统的稳定性,老板只关注产品的快速开发,不关注你技术架构上的各种问题,技术债务问题迟早要暴露出来的,今天早上在赶往上班的路上,突然收到反馈说POS系统挂了,好在出家门口还没有多久,急忙赶回家打开电脑排查问题,发现是POS系统调用宁波的一个数据库一直在报连接失败,问了宁波那边的同事,回复说是昨天因为台风,电脑硬盘进水了,开不起来了,我XXXX。原创 2023-08-18 08:59:44 · 63 阅读 · 1 评论 -
瑞士军刀介绍
测试网速原理就是采用文件传输方式,把来自一台机器的/dev/zero一直发送给另外一台的机器的/dev/null,这样测试网速因为不需要写磁盘会更精确。阿里云测试机网速峰值为5Mbps,换算一下 5*1024/8 =640KB/s,与测试结果的recv相差不大,说明阿里云没有骗人。测试下来,nc传文件与scp传文件速度无差别,用tcpdump查看数据包个数也差不多,nc传输文件比scp好在不需要输入密码。这是否就意味我没有远程机的root账号而能做很多事了?可以用这个和妹子聊天,比阅后即焚更安全。原创 2023-08-17 09:47:02 · 108 阅读 · 1 评论 -
快速搭建测试环境
-v /root/mappingdata/gitlab/config:/etc/gitlab 文件映射-将容器内部的/etc/gitlab映射到宿主机的/root/mappingdata/gitlab/config。昨天需要将项目从原服务器迁移出来部署到一个全新的测试环境,一通乱撸下来今天搞好了,具体步骤如下。GitLab现在一般都是通过Docker安装,简单便捷,测试环境用Ubuntu系统是最方便的。-p 8082:80 端口映射,将容器的80端口映射到宿主机的8082.# 推送所有分支到远端仓库。原创 2023-08-16 13:50:10 · 191 阅读 · 1 评论 -
负载均衡应用场景
我们的Vistablinds网站,当时有一个Php版本和一个Java版本,需要用Java版本替换掉Php版本,但又不能一次性全部切换,当时就用Nginx反向代理来实现,并且做了根据Cookie来保证原来访问Php版本的用户让其继续访问Php版本。支持TCP/UDP四层负载,强大的四层处理能力,也支持HTTP/HTTPS七层负载但对七层的支持能力较弱,仅支持基于域名和URL转发,单实例连接数可以达500万,如果我没猜错的话这个应该是来源于LVS,更强大的面向应用ALB,咱也还没玩过。原创 2023-08-15 16:40:10 · 268 阅读 · 0 评论 -
查看MySQL表占用空间大小
惭愧,有一段时间没有写技术文章了(注:忙着学做包子),这两天在准备将库存快照以及日志等数据迁移到ES中,需要确定每张表占用空间大小,这个总不能拍脑袋去算不然会被别人认为不专业,其实是可以直接到MySQL的information_schema去查就行。: 存放当前数据库系统实例下所有数据库的表,等同于所有数据库下show tables合集。可以看到off_line_store数据库占用空间为21G。可以看到s_order_item这张表占用空间为863M。可以看到该数据库所有表数据和索引占用空间的大小。原创 2023-08-13 19:49:30 · 1298 阅读 · 1 评论 -
磁盘撑爆了
将两条SQL KILL掉,开始没KILL掉,KILL了两次都KILL不掉,那就不客气了把MySQL重启一下,芭比Q了,MySQL启动不了,怀疑前段时间在整BinLog把BinLog索引文件折腾坏了,那就把mysql-bin.index删掉,再重启还是启动不了,然后看一下数据库日志,发现报/var/run/mysqld/mysqld.sock.lock无法创建,进入/var/run发现mysqld目录没了那就手工创建一下,然后启动MySQL就成功了。今天星期一,一上班就碰到两个问题,整理记录一下。原创 2023-08-14 08:59:02 · 145 阅读 · 0 评论 -
Nginx backup配置说明
我们窗帘POS系统一直是单机运行,因为门店并不多访问量也有限,稳定性还是不错的,但现在老板提出要再加一台机器水平扩展一下,当其中一个实例无法提供服务后,由另外一个实例继续提供服务,平时另外一个实例仅做为backup。来看一下怎么做,虽然我个人觉得这个意义并不大。通过观察应用日志,发现当把第一台Java进程Kill,请求会自动转发到第二台,正常提供服务,而当把第一台服务恢复后,请求又转发到第一台,不会再去第二台。第一台: 47.*.220.169 部署了Nginx以及收银台服务端store.jar。原创 2023-08-08 08:46:37 · 1599 阅读 · 1 评论 -
Nginx虚拟主机配置
虚拟主机也称⽹站空间,指把⼀台硬件服务器划分多个虚拟空间,在⼀台机器上⼀个Nginx服务可以运⾏多个⽹站应⽤,更上⼀层的就是虚拟机的概念了,虚拟机和虚拟主机是两个概念,虚拟机是在⼀台硬件主机上划分多个独⽴的操作系统,虚拟主机是划分多个⽹站服务。阿⾥云有⼀批服务器⼜要续费了,申请经费时⽼板问能不能省着点,好吧现在经济不景⽓,⼤家都不容易,那就并掉⼀些访问量很⼩静态⽹站应⽤,释放⼏台机器,⼀年也能省掉万把块钱呢,具体怎么做呢,请看下⽂。本地机器配置hosts。# 返回8081内容。# 返回8082内容。原创 2023-08-08 09:33:11 · 164 阅读 · 0 评论