• 五步完成ssh full mesh全连接免密打通

    中间人攻击 免密打通的基本原理 full mesh全连接免密打通 第一步 横空出世 第二步 遍访群雄 第三步 纵横捭阖 第四步 去蕪存菁 第五步 平定天下 中间人攻击 ssh是一种可以防止中间人攻击的远程登录协议,通常我们用的实现是openssh。那么ssh是如何防止中间人攻击呢? 先来看下ssh登录过程。 ssh客户端连接ssh服务端,服务端将自己的公钥发给客户端 客户端用公钥加密登...


  • 代码解析Linux系统调用

    用户态是如何陷入到内核态的 内核如何分发系统调用 具体系统调用函数的实现 总结 Linux用户态进程,在使用一些内核功能的时候,是通过系统调用来完成的。本文会以一个bind动作为例,从代码上来理解整个系统调用的过程。注意kernel版本是v4.11,不同版本具体实现略有不同。 用户态是如何陷入到内核态的 以下面这个man bind的示例开始。 #include <sys/socket.h> #include <sys/un.h> #include &...


  • Linux网络栈解剖(Anatomy of the Linux networking stack)

    协议介绍 核心网络架构 系统调用接口 协议无关接口 网络协议 设备无关接口 设备驱动程序 进一步 最近和屈总伯温一起看linux协议栈,正好回忆了下14-15赛季做FTCP的时候看的一些linux network kernel的代码,找到了这篇文章,写的很好。原文为Anatomy of the Linux networking stack, From sockets to device drivers...


  • 小玩意:东芝FlashAir无线SD存储卡,单反相机的好伙伴

    今年春节过后,把单反相机从老家带了回来。相机是多年前买的,放在老家好几年了,我哥说别放家里了,都快长毛了。 前几天有次傍晚背着相机去江边玩,拍了张照片。 拍完了想发出去,但是这个相机本身没有WiFi功能,照片只能回家倒到电脑,然后再从电脑倒到手机里才行。那时早就意兴阑珊了。 其实在无线技术如此成熟的今天,万物早已互联,只要给SD卡装个WiFi AP就可以了,像我买的东芝FlashAir无线SD存储卡就是这种。 下面我要开始盗图了。 图是JD扒下来的。 我买的是32GB的(不包含图上...


  • 一个可以查看linux当前缓存了哪些大文件的小工具

    linux用户可能经常遇到的一个问题是,机器有16GB内存,开的进程也不多,但是剩下的free内存并不多,大部分都被buff/cache掉了(比如下面我的PC),但是cache了些什么东西并不清楚,linux也没有个命令能查看。 $ free -h total used free shared buff/cache available Mem: 15G 6.4G 2.3G ...


  • centos上docker使用devicemapper的注意点:小心磁盘满了

    devicemapper的经验 再说点题外话 再再说点题外话 devicemapper的经验 Docker需要union fs来做容器的存储,各个发行版不一样,ubuntu上使用AUFS,centos上默认使用devicemapper(关于这俩的对比,可以参加infoQ的文章)。AUFS据说因为代码写的太糟糕,一直被linus拒绝接纳进内核,所以在Redhat系列上,需要留神,比如我们就有几次遇到了这么一个问题。 在centos 7.2上,默认配置安装docker,当运行的doc...


  • 在kubernetes上使用flume TAILDIR收集日志到HDFS上

    需求分析 实现细节 需求分析 我们的应用以前直接跑在物理机上,应用日志使用flume ng 的exec方式(即tail -F)收集后,写到HDFS上。如下图: 在flume.conf中定义sources、channels、sinks: agent1.sources = source1 agent1.channels = ch1 agent1.sinks = sink1 agent1.sources.source1.type = exec agent1.sources.sour...


  • 杀死一只小鲸鱼

    docker容器退出会收到哪些信号? docker stop docker kill docker rm -f 应用应该处理哪个信号? 应用是怎么接收到信号的 之所以会有这个主题,是因为这几天我给mysql集群前置了一个keepalived,为了方便也做成了docker镜像,丢给k8s来部署。但实际测试时发现,当停止或者删除keepalived容器后,网卡上还残余之前keepalived下发的virtual ip。 直...


  • kubernetes如何解决服务依赖呢?

    如何知道Pod已经Ready 延迟应用的部署 结论 原文链接在此。写的比较通俗易懂,做个笔记,有一些是我自己的理解。 在微服务的世界里,任何应用都需要注意,其所依赖的服务是会中断的。所以当应用发现某服务(如数据库)出现了故障,应该每隔一端时间去重试。而上层框架(如k8s)会检测到服务故障,并尝试恢复这个服务。 但在现实世界里,有些旧应用并没有处理这种情况,但我们还是希望能将他们也跑在微服务框架里,以期得到微服务的红利(例如应用故障重启),所以,需要定义服务依赖关系,从而保障旧应用...


  • k8s镜像:安装kubernetes,访问不了gcr.io怎么办?

    注意:本文内容已经过时,Azure中国提供了gcr.io/k8s.gcr.io镜像代理服务,请参考新的blog。 github开启对docker hub的读授权 Dockerfile上github Docker Hub上创建Automated build 取到本地并push到private Registry 补 如何使用 本blog权且当做一个对docker Automated Build的介绍吧。 之前在安装k8s的时候,我们...