东拉西扯

张戈博客正式启用全新个性域名:zhang.ge

Docker

Nexus3最佳实践系列:搭建Docker私有仓库

Docker

零门槛!基于Docker快速部署ES集群

网站建设

分享张戈博客的WordPress优化方案,缓解国内云服务器配置低下的问题

Docker

Docker新手入门实战教程

Docker

基于Docker部署ceph分布式文件系统(Luminous版本)

东拉西扯

浅谈个人博客网站or屌丝vps服务器暴露真实IP的危险性

WEB应用

APISIX插件开发之精细化限速插件

网站建设

如何正确配置CDN高速缓存,避免越用越慢的尴尬

WEB应用

APISIX插件开发之Kong网关HMAC鉴权插件(附客户端SDK)

WEB应用

APISIX运维优化之解决长尾请求(耗时抖动)问题

8月17日 · 2022年

gRPC开发过程中遇到的问题记录

2402 1
最近我在改造手头负责的一个HTTP Restful API服务,集成对gRPC协议(在鹅厂叫tRPC,是gRPC的本土衍生版本)的支持。由于是从0学习这个协议,因此也踩了不少坑,这里用一篇文章来记录下,希望可以帮助到同样从0学习gRPC的朋友。列表参数赋值老的Rest接口中,大量用到了列表参数,看了下pb协议,给这个参数定义如下:message Foo { rep...
8月3日 · 2022年

SQLAlchemy因密码含有@符号连接MySQL失败

2440 0
最近新来的实习生小伙子在重构一个我入职时开发的老系统,这个系统之前用的是Python twisted框架开发的,这次重构希望可以换到FastAPI,也就是我上一篇文章分享的Flyer开发框架。小伙子很给力,花了几天自学了下FastAPI和Flyer就开始开发了,结果用Flyer框架的时候,连接MySQL报错如下:sqlalchemy.exc.OperationalError: (...
6月17日 · 2022年

Flyer:基于FastAPI的轻量级API开发框架

2752 0
概述我们经常会听到“不会开发的运维不是个好运维”,确实在运维工作当中,娴熟的开发经验能让运维工作如鱼得水,事半功倍!高级的运维除了需要精通Shell脚本编程之外,最好还需要掌握一门高级语言,比如Python、Golang、PHP、Lua等。高级语言除了可以解决一些更复杂的运维场景,还可以帮助我们更好的理解业务,做好业务运维,毕竟知己知彼才能百战不殆。经常看到很多运维同学写接口通常...
3月18日 · 2022年

APISIX高级路由之301/302跳转配置

2807 0
我们这有个内部网站同时支持2个域名访问,最近因升级需求希望统一到一个域名,即老域名做一个301跳转到新域名。这个在Nginx直接配置一个if逻辑,判断是老的host并跳转到新的域名即可。那这个Case在APISIX里面应该怎么配置呢?看了下APISIX文档,发现有两种跳转插件:redirect和response-rewrite,前者只能跳转uri不包含协议主机部分,后者可以通过修改返回头...
3月1日 · 2022年

解决paramiko使用invoke_shell交互式命令超时问题

4027 0
最近手头有个业务是基于Apache Karaf开发的,运行在K8S里面,跑了一堆的bundle,偶尔里面挂一两个bundle容器是没什么感知的,但是业务可能会局部异常。要推动业务优化的话,周期就会拉得很长,因此先弄个定时拨测来监控下bundle是不是都在正常运行的。看了下要查看Karaf里面的bundle需要ssh进去执行bundle list命令,因此基于之前的经验利用Python p...
2月25日 · 2022年

分享一个APISIX网关返回502的典型案例

1657 0
APISIX为了提高性能,默认会打开keepalived特性,预设会话保持时长为60s,我们在部署网关的时候也保留了这个优化特性,恰好我的上游服务基于Gunicorn+FastAPI开发框架,也开启了keepalived,会话保持默认设置为5s。这样就有问题了:网关和上游服务建立连接后60s内,新请求会继续复用这个连接,但是上游却在5s后主动关闭了连接,因为网关将新请求转发给上游时,才发现连接已经被关闭了,因此就出现了上述报错。...
12月23日 · 2021年

解决百度搜索出现安全中心提醒

1532 0
自从博客几乎断更之后,就已经很少关注SEO了。昨天机缘巧合在百度搜了下“zhang.ge”这个国外线路域名的时候,居然发现有如下提示:纳尼?还有这种事情?但是搜索“zhangge.net”却没有,看起来应该是误报。点击打开会有如下提示:看到有个“申请解封”按钮,就点过去,填写表单提交了下:结果,没等多久,大概之后个把小时就收到了百度发来的审核通过的...
12月12日 · 2021年

APISIX运维优化之解决长尾请求(耗时抖动)问题

2743 0
自从APISIX网关推广使用以来,在我们部门已经有很多生产业务接入使用。有一天被拉进了一个问题群,被告知APISIX网关性能有问题,整体表现还不如之前的ZUUL网关。纳尼?APISIX性能再怎么不济也不至于比ZUUL差吧?废话少说,直接上手弄了个串行请求对比测试了一下生产环境的APISIX网关和ZUUL网关,结果大跌眼镜!正常情况下,APISIX的耗时都优于ZUUL网关,但是AP...
11月14日 · 2021年

APISIX运维优化之配置文件自动化生成方案

3381 0
Configmap的方式来配置APISIX。最开始我们就采用 Configmap的方式在腾讯云TKE上部署APISIX,当网络区域越开越多时,每个TKE集群都需要去定义一套config.yaml对应的Configmap,管理非常繁琐。因此,这里我们利用Python的Jinja2插件来自动化渲染APISIX的配置文件,整体非常方便!...
3月22日 · 2019年

解决升级WordPress 5.1后回复评论框不跟随、页面刷新问题

4138 25
近期,发现博客存在不少问题,先是发现图片暗箱、JS二维码失效了,接着评论点击回复按钮页面直接刷新,而没有评论框跟随效果,直到今天居然连网站CSS图标也挂了。。。不能忍,决定花点时间看看到底是啥问题,打开F12并没有发现明显报错,既然是CSS图标挂了,那应该是我外链到fontawesome的css地址有问题。于是过滤了下这个地址,发现居然是301??类似情况如下:原来是 cdn.bootcss...
11月11日 · 2016年

解决Nginx配置http2不生效,谷歌浏览器仍然采用http1.1协议问题

2530 30
昨天一个网友通过QQ联系我,说按照我博客之前分享的http2配置教程不能生效,想请我帮忙看看。经过测试,使用谷歌浏览器访问他的测试站点,确实没有开启http2,但他的配置和编译参数都正确的,这有点奇怪了。不过昨天太忙就没有继续帮他分析,他只好将服务器账号和密码都留言给了我。今天中午我抽空在他服务器重新编译测试了一把,才发现原来是这么一个梗!他在编译Nginx之前,使用的是yum...
1月10日 · 2014年

Win平台Web访问白名单设置脚本(IP安全性原则)

3681 0
最近老是有用户申请开通某网站的访问权限,我接手之前浏览权限的设置方法是修改tomcat下的server.xml配置文件,通过定义allow="IP.."的访问规则来控制浏览权限。这种方法有个很不好的地方,每加一次权限,你就得重启一次tomcat,用户老是挤牙膏一样,一次一两个IP的发邮件来申请开通,不但很烦人,而且对正在使用的用户体验也非常的糟糕!于是我决定要改善这个糟糕的局面。在Linu...
脚本编程阅读更多
12月26日 · 2013年

Symantec更新包[XP-i32]在线下载脚本

2653 0
编写初衷:公司用的是Symantec杀毒软件,在客户端更新失败的时候,维护人员总是需要手动去下载离线更新包然后到客户端执行,非常麻烦!于是写了这个脚本丢到服务器上建立任务计划,客户端要更新的时候直接脚本调用\\server\symantec\update\20131225-002-i32.exe即可。脚本名称:Symantec更新包[XP-i32]在线下载工具脚本功能:主要用于Syma...
11月8日 · 2015年

分享一个入门级可控多线程shell脚本方案

5940 12
说到shell可控多线程,网上分享的大部分是管道控制的方案。这种方案,张戈博客也曾经实战并分享过一次:《Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点》,感兴趣的朋友可以看看。下面张戈博客再分享另一种更容易理解的入门级可控多线程shell脚本方案:任务切割、各个击破。先来 1 段场景描述:某日,在鹅厂接到了这个任务,需要在Linux服务器中,对几...
11月15日 · 2014年

grep无法查找shell传过来的变量?先注意一下文本格式吧!

12416 6
昨天,同事告诉我发现一个诡异的问题,grep无法搜索shell中的变量,着实很惊讶。到他所说的服务器上试了下,还真是不行!大概就是这样一个要求:①、有个文本为userid.txt,里面每一行一个用户id,类似如下:00010003000500070009②、另外还有一个文本为record.txt,里面是所有用户的操作记录,一行一条,并且包含有id,类似如下:...
4月8日 · 2015年

zabbix agentd客户端插件Shell一键自动安装脚本

918 5
这次生产环境上线了多台Linux服务器,需要全部纳入Zabbix监控范畴,一台一台的去装Zabbix Agentd插件那就太苦逼了,所幸Zabbix客户端插件是支持绿色安装的,就写了个简单的一键安装脚本,然后配合 Secure CRT 的多窗口交互命令一次性就可以搞定了。正常启动Zabbix客户端服务其实只需要2个文件: zabbix_agentd 和 zabbix_agentd....
8月31日 · 2014年

Linux/vps本地七天循环备份和七牛远程备份脚本

10026 45
博客前些时间分享过一次vps远程备份到七牛的工具,全傻瓜式交互操作,但也有一个很大的缺憾,那就是不够灵活,在无人干预的情况下,无法完成对多个站点的远程备份设置。这次博客搬家到vps后,张戈花了点时间完善了下,实现了多站点,多数据库的本地七天循环备份和同步备份至七牛云存储的脚本。一、类型说明①、七天循环备份受服务器空间制约,我们不可能在VPS上每天都备份一份新的网站数据,...
3月4日 · 2014年

Ghost安装Win7/XP后自动恢复IP的批处理

4519 41
今天维护人员找的我说,最近要推Win7了,暂时桌面云没推广,还是使用手动安装Win7的方式。所以,需要我帮忙写一个脚本,大概功能就是在Ghost Win7之前先导出XP的IP信息,在Ghost完成之后,自动读取这个IP信息用于恢复IP设置。之前其实写过一个XP的,这次是Win7的,其实大同小异了,花了近半小时测试成功了,现在来记录一下。懒得去折腾兼容方法,就写了2个导出IP的脚本和...
7月21日 · 2014年

nginx日志切割及7天前的历史日志删除脚本

7308 16
上次写到《服务器日志备份超节省空间的思路》,压缩后磁盘占用由93%降到了62%,效果还是不错的!为什么不直接删除呢?其实是因为这些日志涉及到支付等重要业务,保存半年以上也算是保守的做法。今早,又发现几例磁盘空间报警,占用率都在90%+,关键居然是根分区!这要是日志突然暴涨,把根分区撑爆了,那就可以体验到“菊花一紧”的快感了吧?索性利用CRT的全局命令把磁盘空间占用率超过75%的服务...
8月17日 · 2022年

gRPC开发过程中遇到的问题记录

2402 1
最近我在改造手头负责的一个HTTP Restful API服务,集成对gRPC协议(在鹅厂叫tRPC,是gRPC的本土衍生版本)的支持。由于是从0学习这个协议,因此也踩了不少坑,这里用一篇文章来记录下,希望可以帮助到同样从0学习gRPC的朋友。列表参数赋值老的Rest接口中,大量用到了列表参数,看了下pb协议,给这个参数定义如下:message Foo { rep...
12月21日 · 2013年

桌面白屏(Active故障)修复批处理

4411 1
一年前我在做用户系统维护服务工作时发现AD域环境下,AD用户桌面经常会出现壁纸无法显示,ActiveDesktop桌面损坏之类的故障,当时从前人心得里学到的方法就是登入管理员,然后删除用户配置目录(%userprofile%),然后重新登入之后用户桌面就能正常了如此确实能修复这白屏故障桌面,但是用户的所有事设置均被重置,加大了维护工作量,这不是做维护愿意看到的,于是左查右查,我终于找到了症...
5月16日 · 2014年

百度开放适配&360移动适配专用Sitemap格式转换工具

8311 52
此工具可将标准版的sitemap.xml转换成电脑版—移动版的对应关系sitemap,用于百度开放适配&360移动适配的文件提交。工具用批处理制作,仅起到批量转换的辅助功效,免去手动制作的麻烦!可以用于移动适配的提交测试!张戈不会php,而shell又不能普遍适用,所以只能挑了自己比较拿手的批处理来制作这个辅助工具!因为批处理的局限性,做出来的工具只能用于尝鲜测试使用!或长期不更新的CMS企业网站来提交移动适配sitemap。另外,响应式站点亦无需提交适配!...
操作系统阅读更多
12月30日 · 2013年

Linux终端:用cat命令查看不可见字符

951 1
时常,某个程序或软件并没有语法错误,并且你检查它的相关内容也确实没有发现问题。这是因为你用普通文本编辑器软件来查看的时候,有许多字符没有显示出来,但在终端使用cat命令可以很容易地检测出是否存在这些字符。首先,我们创建一个简单的文本文件,写入一些特殊字符。打开终端,运行命令:printf \'testing\012\011\011testing\014\010\012more tes...
11月19日 · 2017年

替代crontab,统一定时任务管理系统cronsun简介

3890 37
cronsun 是一个分布式任务系统,单个节点和 Linux 机器上的 crontab 近似。是为了解决多台 Linux  机器上 crontab 任务管理不方便的问题,同时提供任务高可用的支持(当某个节点死机的时候可以自动调度到正常的节点执行)。支持界面管理机器上的任务,支持任务失败邮件提醒,安装简单,使用方便,是替换 crontab 一个不错的选择。...
8月7日 · 2014年

Linux系统yum命令安装软件时保留(下载)rpm包

8964 4
昨天在部署zabbix监控的时候,遇到一个问题:监控服务器处于无外网状态,在线安装不可用。而某些依赖包度娘或谷姐搜索起来也挺呛人的!于是想到一个办法,利用有外网的服务器的yum命令来安装这些软件,并自动保留安装包即可。于是就有了以下的转载教程:一、让yum命令下载RPM包,而不安装。yum是一个优秀的软件获取与系统更新的工具,主要应用于redhat系列的发行版本上。但是这样一个优秀...
7月28日 · 2014年

Linux下通过rdesktop连接Windows远程桌面

21139 8
在家手痒,又把本本的系统换成了Linux。收到公司服务器的报警之后,突然想起需要用VPN远程处理。只好又折腾下linux下的远程桌面了。下面简单的记录下(绝非教程贴):一、主角:rdesktoprdesktop是linux下支持Windows远程桌面连接的客户端程序,在linux系统下可通过它远程访问Windows桌面,支持多种版本。rdesktop是sourceforge下支持G...
7月23日 · 2014年

Linux下巧用chattr、watch命令的实例

4817 7
一、起因前些日子,张戈在日志备份服务器加入了日志压缩的计划任务(详见服务器日志备份超节省空间的思路),结果发现监控总是发来tar的报警,提示存在tar进程。仔细检查history后发现是公司总部那边做的监控: 每20分钟执行一个监控脚本,然后删除。分析下这样做的好处:①、不留痕迹;②、把history塞满,让其他操作无迹可寻(感觉有点蛋疼)。二、擒...
8月13日 · 2014年

SUSE Linux系统在线安装软件命令zypper参数详解

11042 4
Linux系统安装软件,不管是从性能还是从稳定考虑,优先推荐编译安装的方式都是无可厚非的。不过在编译安装的时候,偶尔会提示缺失一些依赖组件,比如curl-devel、libevent等。这时候,要去找相应的编译包或者rpm包又要耗费时间!而且,往往当你找到并开始安装的时候,很有可能又有新的依赖组件缺失提示!!郁闷死你。。。这时候,在线安装功能就可以出马了,比如Centos下的yum、ubunt...
5月24日 · 2014年

妹子你真萌:一次心惊肉跳的服务器误删文件的恢复过程

3616 44
刚在我的订阅里面看到这篇文章,在爆笑之余也让跟我一样的运维农民工们发人深省,所以转过来分享一下。妹子啊妹子,网上找的东西也不能直接照搬啊,太萌了~~哈哈!作者也是挺萌的,重要服务器给妹子当成练手的工具,看来荷尔蒙又出来作恶了,嘿嘿!下面且看事件始末:经历了两天不懈努力,终于恢复了一次误操作删除的生产服务器数据。对本次事故过程和解决办法记录在此,警醒自己,也提示别人莫犯此错。...
3月3日 · 2014年

Linux中的完美截图工具:Deepin-ScreenShot

9052 48
 跟了我5年多的本本已步入花甲,CPU严重老化,运行Windows异常吃力,于是考虑换成Linux试试。忙活了一天,测试了2个“家用”Linux发行版,一个是深度的Linux Deepin 2013,另一个是雨林木风的StartOS 5.1。在测试过程中也遇到一些有用的经验,现在就一一记录一下。这个是在安装完StartOS发现的问题,我第一个安装的是Linux Deepin 2013,发现自带...
8月6日 · 2016年

Linux系统 df 命令显示异常、分区丢失问题解决

12486 21
本文记录2种因 /etc/mtab 文件异常导致 df 命令显示异常、分区丢失问题的解决过程,以备后用。一、根目录丢失前些日子,同事在RTX群里问大家,有台服务器执行 df -h 看不到根目录,该如何解决?[root@10.207.126.12:~]# df -hFilesystem Size Used Avail Use% Mounted onudev...
5月4日 · 2014年

在Linux中发现IP地址冲突的方法

4703 8
Linux下出现IP冲突,是不会像Windows那样,在右下角弹出冲突提示的。博主就出过一次糗,记得当时是在VM虚拟机里面安装了4个redhat,测试LVS集群。结果发现其中一台RealServer老是掉线,重启network服务后能正常几分钟,然后又掉线了。。。4个Redhat都是VM克隆出来的、完全一致的系统,仅其中一台出问题,所以博主觉得匪夷所思!直到,后来我的办公电脑(宿主)网线直接没...
WEB应用阅读更多
3月13日 · 2014年

HTTP加速器varnish安装小记(1)

3574 32
上午共享的那个varnish安装手册,个人看了下,有点不知所云,好吧~看来还是先安装玩玩!苦逼公司服务器没法连外网,不能用什么wget或yum命令直接下载安装,每每看到别人博客贴出的在线安装代码时,总有一股羡慕嫉妒“恨”冒了出来。。。好吧,既然没法上外网,那只能麻烦点通过下载源码来编译安装了!Varnish 3.0.4下载地址: http://repo.varnish-cache....
11月14日 · 2021年

APISIX运维优化之配置文件自动化生成方案

3381 0
Configmap的方式来配置APISIX。最开始我们就采用 Configmap的方式在腾讯云TKE上部署APISIX,当网络区域越开越多时,每个TKE集群都需要去定义一套config.yaml对应的Configmap,管理非常繁琐。因此,这里我们利用Python的Jinja2插件来自动化渲染APISIX的配置文件,整体非常方便!...
2月27日 · 2016年

分享一下php7和其他php多版本共存的配置教程

8782 15
年前,终于迎来了期待已久的php7正式版,我也在第一时间就给博客用上了。性能确实有了质的飞跃,问题还是有不少的。比如鱼叔的微信插件在php7下面自动回复异常等。为了继续使用微信插件,我只好将php5.6又开了起来,下面简单分享一下多个版本php共存的方法。一、编译路径多个版本php要共存,必须使用不同的安装路径。比如,之前php5.6安装在/usr/local/php,那么我们安装...
12月12日 · 2021年

APISIX运维优化之解决长尾请求(耗时抖动)问题

2743 0
自从APISIX网关推广使用以来,在我们部门已经有很多生产业务接入使用。有一天被拉进了一个问题群,被告知APISIX网关性能有问题,整体表现还不如之前的ZUUL网关。纳尼?APISIX性能再怎么不济也不至于比ZUUL差吧?废话少说,直接上手弄了个串行请求对比测试了一下生产环境的APISIX网关和ZUUL网关,结果大跌眼镜!正常情况下,APISIX的耗时都优于ZUUL网关,但是AP...
5月30日 · 2015年

Nginx开启fastcgi_cache缓存加速,支持html伪静态页面

8787 117
张戈博客不久前分享过Nginx开启缓存为WordPress加速的教程,其中分享了2种缓存模式:代理模式和本地模式。我一直以为单个 ngx_cache_purge 缓存模块只支持proxy代理模式,结果热心的网友回复,其实这个模块也是支持本地缓存的,而且WordPress还有配套的插件!看来还是我孤陋寡闻了!我像发现了新大陆一般,立马进入折腾状态,幸不辱命,已经成功部署!最爽...
5月2日 · 2016年

WordPress启用memcached动态缓存以及报错解决

19606 87
张戈博客目前用的是Nginx的fastcgi缓存方案,属于纯净态缓存模式,所以前台登录态什么的基本都没了。如果要兼顾前台登录态,又想速度快,有没有解决方案?之前在分享张戈博客优化方案时提到,要实现网站轻度缓存,方案还是有的,比如 DB Cache Reloaded、Redis、memcached等。最近恰好遇到一个数据缓存需求,因此尝试了下memcached方案,下面简单分享下我的...
1月28日 · 2015年

zabbix监控在lnmp环境下编译安装小记

4077 9
最近在复习运维常见的监控告警软件的时候,想起了zabbix,于是先用军哥的lnmp一键安装包快速搭建了lnmp环境,然后成功编译安装了zabbix,特地将安装过程和遇到的问题记录在此,以便自己或有需要的人来参考翻阅。由于已有php运行环境,所以只需要编译安装zabbix即可。一、安装依赖组件yum -y install net-snmp net-snmp-devel perl-DB...
3月5日 · 2017年

libmemcached编译安装报错解决记录

4122 27
我负责的几个公司内部网站,仅集成了php原生memcache组件,不支持memcached分片存储的自动容灾方案,近期出现过几例因memcache服务器故障引起WEB爆卡的尴尬事,所以接到了一个给现网php集成memcached模块的需求。内部的个别系统有多老、多难用我就不吐槽了,slackware、suse用过的人都知道。。。不说了,总之老老实实的编译安装吧。memcached这...
1月20日 · 2019年

分享一个Nginx正向代理的另类应用案例

2907 13
最近接到了一个需求:通过Nginx代理把现网一个自研代理程序给替换掉,感觉有点意思,也有所收益,简单分享下。需求背景部门的生产环境异常复杂,有部分第三方引入的系统位于特殊网络隔离区域,请求这些系统需要通过2层网络代理,如图所示:中心源系统请求目标系统API的形式各异,我简单收集了下,至少有如下3种:curl --digest -u admin:xxxxxx...
8月13日 · 2016年

修改Apache的超时设置,解决长连接请求超时问题

4713 47
某日,组内后台开发找到我,问我们的WEB服务器超时设置是多少。他反馈的问题是,有一个VLAN切换任务cgi接口经常返回504网关超时错误,要我分析解决下。我问了一下,得知这个请求遇到网络设备对象较多的时候,需要小半个小时才能完成,也就是要用到长连接才行。老规矩,从开发那拿到接口地址,得到接入层服务器IP,是一台Haproxy代理,看了一下Haproxy的超时设置:# 设置成功连...
7月7日 · 2019年

CloudFlare边缘计算Workers尝鲜初探:博客跳转中间页

3227 42
4月27日,有幸参加了由Aftership组织、CloudFlare的大牛孟鑫主讲的《CloudFlare 最新边缘API,打造无服务器(Serverless)架构》课程,感觉收获颇丰。因为这个课程非常接地气,大部分内容都在实战,而不像有些分享一味的讲理论、拼PPT,听得云里雾里,分享的时候是一个样子,真正你去尝试的时候却是另外的样子,duang~,当然,还有一个原因就是张戈博客目前也在用Clo...
12月8日 · 2015年

升级Nginx1.9.5以上版本,开启博客网站http2.0时代

7344 18
最近给张戈博客全站开启了https,所以对这块关注比较多。昨天脑补的时候发现http2.0只支持SSL加密的网站,即https。于是心血来潮,给张戈博客开启了http 2.0,尝尝鲜。查了下资料,发现Nginx不久前发布的 1.9.5版本支持http2.0,而1.8.x时代只是对SPDY进行了支持。一直用的1.62稳定版,此次为了测试http2.0,直接进行了版本跳跃,升级到了1.9.5版...