zhangguanzhang's Blog

zhangguanzhang's Blog

站在巨人的肩膀上

/boot目录被清空下物理机无法开机的一次救援
今天下午到公司被通知苏州一个节点的客户的裸金属无法开机,14:00上去到16:50终于给整好了,这里记录下笔记分享下 故障现象物理机裸金属,连上跳板机通过带外连上去(等同于现场接了一个显示屏+键盘一样)错误为 1234.errorL file `/grub2/i386-pc/normal.mod' not found.Entering rescue mode...grub rescue> 这个物理机是grub2,这个错误和类似的/grub/i386-pc/normal.mod本质上都是文件丢失,但是也分情况,网上的一些恢复步骤都是在丢失部分文件的情况下恢复的查看分区 1...
ansible数量限制上的幂等性
由来准备写上一篇文章的consul成ansible,在证书方面,cli和ca需要执行一次生成,而server和agent证书需要多次执行产生。另外我们也要考虑,dc1-server-consul-0*.pem需要拷贝到机器1,1拷贝到机器2.如何在生成证书的时候中断后再次运行也会达到目标的数量来实现幂等性,而不是证书生成多了另外证书还得按照index去拷贝到指定机器,也就是类似下面的 123scp 001.pem ip1:/etc/xxxscp 002.pem ip2:/etc/xxxscp 003.pem ip3:/etc/xxx 场景1 – tls的幂等性规划这里我是三台server...
高可用的SSL consul cluster实践
同事dnsmasq + consul 整服务自动发现,但是不是 tls 且consul server是单点,而且进程启动用的nohub而不是systemd,这里查了下资料实践了下 部署过程已经写成了ansible,地址 https://github.com/zhangguanzhang/consul-tls-ansible 开了五台云主机,总体规划为下面,角色那有条件的可以分开,例如 client 单独一台。不分开的话得配置 client 的端口和 server 的分开,自己去探索 IP Hostname CPU Memory role nodeName 172.19.0.3...
修改源码更改prometheus的时区问题
先说明一点,时区UTC不影响prometheus和grafana,这篇文章只是提供一个修改的思路和步骤 日志时区修改代码分析先起最新的prometheus挂载时区文件 1234567docker run --net host -v /etc/localtime:/etc/localtime prom/prometheuslevel=info ts=2019-09-05T09:44:40.409Z caller=main.go:293 msg="no time or size retention was set so using the default time retentio...
gobot控制esp8266
材料gobot官网是Arduino的demo,官网上看了下支持esp8266,整好之前整wifi攻击器的时候有就玩了下。我是在windows编译的,没有8266的话自己去淘宝上一块儿node-mcu+数据线(本质上就是个带串口和排针的esp8266-12,买驱动是CH340G的,就是usb口旁边有个长条形ic,方的是cp2102不稳定会导致windows蓝屏) 环境搭建用goland写代码,不推荐vscode写golang,自行安装golang(记得设置好环境变量)和goland,现在golang最新版本是12.9整个demo分为两部分,客户端gobot去设置和控制esp8266,826...
ubuntu preseed无人应答安装
之前的centos自动安装整得差不多了,今天有空研究下ubuntu的自动应答安装,过程是按照我遇到的问题的时间线的角度来描述,并不是总结后正确的开始姿势。kickstart是red hat开发的。ubuntu的安装界面是一个debian-installer的二进制文件进程运行tty1提供的选择交互安装界面: ubuntu自带的应答是preseed,相关文档页面是 https://help.ubuntu.com/lts/installation-guide/amd64/apb.html实际上安装完成后我们可以安装debconf-utils后使用debconf-get-selections ...
golang headless browser包chromedp初探
什么是cdp前天晚上想写个网站自动投稿,但是 chrome F12 抓的包里请求的几个参数里的值不知道 js 咋生成的,看不懂 js。询问了下网友,网友看我截图请求蛮多的,说有空帮我看看。并且他说到了模拟过程虽然能成功但是可能反爬措施强会导致封号,建议我用无头浏览器整。搜了下相关概念,无头浏览器的话 python 里就是 selenium驱动的,广泛使用的 headless browser 解决方案 PhantomJS 已经宣布不再继续维护,转而推荐使用 headless chrome。Headless Chrome 是 Chrome 浏览器的无界面形态,可以在不打开浏览器的 gui 前...
为什么我不用nodePort之偶然中奖几率
嗯,1.6.7 的老集群。早上反应数据库实例创建不出来。发现接口 port 的 tcp 不可达,查看 kube-proxy 的日志如下 123456[root@HB1-xxxxx-S03 kubernetes]# tailf kube-proxy.INFO E0708 09:44:03.437284 394350 proxier.go:1062] can't open "nodePort for cloudify/cloudae-cfy-nginx:port1" (:16081/tcp), skipping this nodePort: listen t...
golang的net/http包的客户端简单科普
之前准备写个简单的 api 的调用,百度和问了很多人后发现基本对于 http 的客户端熟悉的人非常少。或者对包的不了解自己造了效率很低的轮子,而且官方一些包里有坑,被坑过,这里简单科普下 简单的get和posthttp 包里下列可以直接使用的请求方法 1234func Head(url string) (resp *Response, err error)func Get(url string) (resp *Response, err error)func Post(url string, bodyType string, body io.Reader) (resp *Response...
uefi模式下docker+交换机部署pxe批量安装
华三服务器的 ipmi 的 web 提供了 nfs 挂载 iso 去安装,也是我之前使用的,发现研发给的镜像在4g以上(镜像基于centos7.3改的,我之前测试都是用的minimal镜像890M左右)。安装的时候报错,然后当面测试得出结论 nfs 的网速原因,其次也是我们这边办公网是百兆。。。办公网被 it 接管了,交换机密码不给,自己找了台 5130 交换机,下面接服务器和我自己电脑搭建测了下定制iso的pxe流程 这是组网情况 123456789101112131415 10.96.4.1/24 +------------+ ...
拟定excel表格服务器自动按照表格配置信息和安装的实现过程
修改镜像以及编程实现了从服务器买来上电就会自动化安装指定 ip 和 hostname 的步骤(包含了自动做raid),全程非交互 先讲讲事情的由来,新节点建设,几百台服务器得人为安装系统,虽说服务器有带外 ipmi,但是 raid 和安装系统时候 hostname 和ip啥的得去配置。系统镜像还是修改过的,安装界面的菜单自动应答通用的流程还不行,于是决定看看能不能研究出来。想要达到的一个效果就是:服务器送货到节点后,一个人带着电脑和设备的标签,高主频高io啥的分类好后贴上标签,按照贴的写一个所有设备应该配置的信息的excel: 123hostname 序列号 IPM...
SMASH CLP的一些笔记
https://support.hpe.com/hpsc/doc/public/display?docId=c03334058https://www.golinuxhub.com/2018/02/hp-ilo4--cli-guide-cheatsheet-example.htmlhttps://h50146.www5.hpe.com/lib/products/software/oe/linux/mainstream/support/doc/general/mgmt/hponcfg/lights-out1.70guide.pdfhttps://server-recycling.nl/ima...
golang cobra的一些笔记
这几天稍微写了下cobra,网上搜到的博客分为两类,一类是把官方的readme翻译一下完事的,一类是写的都太简单了没有实际常见场景的。这里不废话了,先用官方demo讲解下 Cobra介绍是一个golang的库,其提供简单的接口来创建强大现代的CLI接口,类似于git或者go工具。同时,它也是一个应用,用来生成个人应用框架,从而开发以Cobra为基础的应用。热门的docker和k8s源码中都使用了CobraCobra 结构由三部分组成:命令( Command )、标志( Flag )、参数( Args )。 1234567type Command struct { Use ...
standard_init_linux.go:211: exec user process caused "too many open files in system"
故障现象部署好业务 pod 后,有很多 pod 一直 Crash 或者无法就绪。 处理过程describe pod 的状态有显示下面的: 1Error: failed to start container "xxxxx": Error response from daemon: OCI runtime start failed: cannot start a container that has stopped: unkown 上去这个节点查看容器状态: 12345$ docker ps -a | grep 6cb6440a7e90bde reg.xxx.lan:5...
闲谈线上俩k8s环境同等limits下pod启动时间不一样解决过程
线上用的k8s版本是1.6.7非常老,而且HA有问题,上个月研发想把里面的一些服务迁出来到一个新集群里,新集群的搭建是我负责的。上周开始陆陆续续的迁移过来了,但是同等limit下部分pod在测试环境上(测试环境和老环境部署是一样的,下文的老环境和测试环境可以理解为一样)启动非常快,在我搭建的新k8s环境上启动非常慢,研发他们应用都是java+springboot,这里不谈jvm无法识别cgroup,已经加选项识别到了还有那个随机熵的选项肯定也是加了的。因为之前一次有个用户反映他们本地虚机启动springboot应用20s,我们云上启动就三分钟,后面漠然大佬教我加java的启动参数输出lo...