• 让LVS更持久

    ipvsadm设置timeout keepalived设置lvs_timeouts persistence_timeout的用途 老化与重刷 应如何取值 今天遇到了一个问题,客户端psql在连接Greenplum时,静置一段时间后(大约15分钟),随便敲一条select * from xxx,psql没返回结果,而是返回了个提示信息: psql: server closed the connection unexpectedly This probably means t...


  • kubernetes flannel代码解析

    1 VXLAN 1.1 VXLAN协议 1.2 VXLAN配置 2 vxlan flannel 2.1 flannel.1接口是怎么创建的? 2.2 fdb 转发数据库 2.3 newKubeSubnetManager 2.4 arp table 3 udp flannel flannel是coreos贡献给社区的一个kubernetes网络插件。overlay。 ...


  • ssh端口转发:远程和本地

    1 需求描述 1.1 机器状况 1.2 目标 2 解决方案 2.1 远程端口转发 2.2 本地端口转发 2.3 多主机转发 3 实施配置 3.1 环境需求 3.2 实施步骤 4 扩展阅读 4.1 非ssh服务 4.2 SSH动态端口转发 4.3 SSH参数解释 1 需...


  • kubernetes调度器scheduler源码解析

    kubernetes调度器概述 kubernetes源码分析 命令行入口 NewConfigFactory CreateFromKeys scheduler框架 generic scheduler实例 predicates算法 priorities算法 kubernetes调度器概述 kubernetes调度器kube-scheduler在集群中体现为一个kube-scheduler进程。kub...


  • golang如何获取变量的类型:反射,类型断言

    感觉接口的理解还有些不是很清楚,强写一篇 如果某个函数的入参是interface{},有下面几种方式可以获取入参的方法: 1 fmt: import "fmt" func main() { v := "hello world" fmt.Println(typeof(v)) } func typeof(v interface{}) string { return fmt.Sprintf("%T", v) } 2 反射: import ( "reflect...


  • 不要开启tcp_tw_recycle

    TL;DR: 问题描述 定位过程 怀疑点1:网络 怀疑点2:postgre进程故障 怀疑点3:内核丢包 解决方法 深入理解 TIME_WAIT是干啥的 为什么Greenplum会开启tcp_tw_recycle 为什么不要开启tcp_tw_recycle 特殊国情 总结 TL;DR: 不要开启net/ipv4/tcp_tw_recycle ...


  • go依赖包管理工具对比

    GOPATH和GOROOT GOROOT并不是必须要设置的。 GOPATH必须要设置,但并不是固定不变的 本项目内部的依赖 管理外部的依赖包 使用GOPATH来管理外部依赖 vendor godep glide govendor golang官方dep 各依赖管理工具对比 gvt vendor的问题 ...


  • 三罐可乐带你读懂Greenplum的interconnect

    UDP报文是干啥的? 关于Greenplum查询过程 segment如何取得master的监听端口号 问题如何解决 master如何决定监听哪个UDP端口呢? 写在最后 我厂为了做Greenplum的多租户,将GP master做成了容器,跑在flannel网络里面,而GP segment跑在物理网络上。 之所以master没有跑在宿主机网络(hostnet)上,是因为GP部署会ssh localhost做一些不可描述的事情(比如生成一个id文件),如果容器的网络使...


  • 使用Jsonnet模板语言以更好的使用kubernetes

    Jsonnet基础 用Jsonnet组合Kubernetes对象 定义Kubernetes部署的模板 示例1:每个服务部署一个文件 示例2:在单个文件中组合部署 示例3:对多个环境进行子类化模板 如何为我所用 Kubernetes的编排文件支持2种格式:json和yaml,这两种格式是等价的。以RedHat的Openshift CaaS平台为例,用户会先编辑好自己的编排文件,然后丢到Openshift上去跑,这时...


  • 说说内核协议栈的端口号

    bind固定端口号 bind 0 端口号 connect时选择本地端口号 fastreuse 最后 说说端口号。内核版本2.6.32。 bind固定端口号 服务端通常bind指定端口号,例如ssh 22(tcp), ftp 21(tcp), dhcp 67(udp), dns 53(udp)。以下面这个例子来说。 package main import ( "fmt" "net" ) func listen1(str string) { ad...