MySQL 无法重连问题的分析
复现方法我的测试环境是完全使用容器的, 还是遇到了一点点小差异. 案例来自一次故障的诊断过程–实验重现 2024年必做实验 的过程, 看看自己差在哪儿. 使用下面的命令运行并进行测试:分离了 server 和 client 在不同的实例上, 开始是放在一起的, 后来为了方便确认范围, 就给分开了. 创建 docker 容器, 运行 MySQL. 1docker run -it -d --net=host -e MYSQL_ROOT_PASSWORD=123 --name=mysql-server regprox.liarlee.site/docker.io/mysql 连接并创建数据库. 1mysql -h127.1 --ssl-mode=DISABLED -utest -p123 -e "create database test" sysbench 12345docker run --net=host --privileged -it regprox.liarlee.site/docker.io/phantooom/plantegg:sys...
AWS-CNI 集成 Calico 并启用 WireGuard 加密
看了下说明, 这个东西的主要作用是用于节点间 Pod 流量的加密。 启动集群略 Helm 命令安装 Calico 添加一个helm repo 1helm repo add projectcalico https://docs.tigera.io/calico/charts 创建一个 value.yaml 1234567cat > values.yaml <<EOFinstallation: kubernetesProvider: EKS registry: reg.liarlee.site/docker.ioEOFhelm show values projectcalico/tigera-operator --version v3.27.2 通过命令安装 12345kubectl create namespace tigera-operatorhelm install calico projectcalico/tigera-operator --version v3.27.2 -f values.yaml --namespace tigera-op...
使用 nsenter 从Kubernetes Node 进入容器网络 Namespace
记录一下使用 nsenter 进入容器的 network namespace 中抓包。在 TroubleShooting 的过程中可能是需要这个方法的。 进入容器ns的步骤 选中一个pod 1default haydenarch-68865d5b56-cblc6 ● 1/1 Running 0 172.31.48.162 ip-172-31-53-61.cn-north-1.compute.internal 在节点上找到这个pod的容器id : 02182f3e9137 12[root@ip-172-31-53-61 ~]$ nerdctl ps| grep archlinux 02182f3e9137 1234567.dkr.ecr.cn-north-1.amazonaws.com.cn/archlinux:latest "sleep infinity" 23 hours ago Up ...
源地址检查造成丢包的分析
问题网络访问路径:Client –> NLB –> Application Pod 特别的部分:NLB 开启了保留源地址就意味着 NLB 在转发网络流量的时候不会改变数据包五元组内的SourceIP, 这时候对于后端的Pod和节点来说, 收到的数据包的ip地址来源直接是Client 的IP 地址, 这会导致所有的流量其实都是来自于VPC之外的。 NLB在这其中变成了一个透明代理。从 NLB 发到后端application pod 中的流量会有偶尔timeout的情况, 并不是所有的请求都会timeout ,从客户端抓包显示tcp握手的时候就没有成功, 第一个syn包出去就一直没有回复,然后继续重发等待。 由于后端的pod比较多, 并且nlb在四层做了负载均衡,很难定位到某次的请求具体到了哪个后端pod上面。 写下这些的时候我已经知道了问题的答案是由于 VPC CNI 的一个 env , AWS_VPC_K8S_CNI_EXTERNALSNAT 会指定是否做 SNAT, 比较早的版本, cni 插件没有对 SNAT 在iptables上面进行标记和处理, 这样会导...
安装 headscale 建立自己的 Tailnet
Tailscale 虽然是 mesh 的网络模式, 可以点对点的连接所有设备, 能直连会尽量直接连接, 然鹅还是需要一个默认的 server 来进行服务发现和临时中转流量. 那么大概的配置框架就已经出现了, 一个服务发现中心, 和多个不同的客户端.开始的时候直接使用的 tailscale + github 账户登录的方式使用, 然后发现 github 账户直接托管的中心服务不能关闭国外的中转服务器, 这就比较难受, 本来可以直通的线路走了国外的中转不稳定, 会断, 最后还是走国内的便宜云服务器自己维护了一个开源的 headscale 作为中心服务. 安装 Headscaleheadscale 官方文档现在的 headscale 容器镜像的是有问题的, 不太好用, 还得花时间修。 Update: 看起来现在是修复了, 并且费点儿劲可以用起来, 但是不确定稳定性如何. 我准备了这些: 域名 和 域名证书 一台 Debian 的云服务器 公网 ip 地址 具体的安装步骤就是按照官方网站走下来就可以了.一些条件:需要注意的地方就是备案, 不备案会导致无法使用 443.那么...
tailscale 结合 Sunshine 串流
既然 EC2 显卡都已经能用了, 为啥不能直接启动一个 steam 呢? 于是。。。 安装的步骤比较简单: 123456# Sunshine 用来作为 stream hostingsudo pacman -S sunshine# Steam 以及 Steam-navtive 是 steam 的runtime, ttf 是为了可以正常的显示中文字体, 好像字体上面是最常见的问题, 比如显示出来是一堆方块。sudo pacman -S steam-native-runtimesudo pacman -S steam ttf-liberation 这些安装完成之后我自己直接 drun 去调用 steam 就可以了。 启动使用的desktop 文件叫作 steam(native) 启动之后登录, 然后可以正常下载游戏了。 默认可以下载的游戏都是原生支持linux的, 不支持的可以在steam的设置里面打开proton兼容, 之后steam的界面上就不会区分任何平台了。 手柄支持手柄默认不能传递到hosting, sunshine 的启动日志里面有报错: 12[2023:1...
Redis 笔记
ElastiCache主要概念 ElastiCache nodesA node is the smallest building block of an ElastiCache deployment.node is a fixed-size chunk of secure, network-attached RAM.总结来说, 就是ec2实例上面跑了相同版本的Engine for Redis。 ElastiCache for Redis shards A Redis shard (called a node group in the API and CLI) is a grouping of one to six related nodes. A Redis (cluster mode disabled) cluster always has one shard.Redis (cluster mode enabled) clusters can have up to 500 shards, with your data partitioned across the shard...
CFS 调度器资料
https://docs.kernel.org/scheduler/sched-design-CFS.htmlhttp://arthurchiao.art/blog/linux-cfs-design-and-implementation-zh/#11-cfs%E8%BF%9B%E7%A8%8Btask%E7%9A%84%E5%85%AC%E5%B9%B3%E8%B0%83%E5%BA%A6https://danluu.com/cgroup-throttling/https://heapdump.cn/article/4235306
追踪数据包经过的iptables规则
https://stackoverflow.com/questions/47645859/meaning-of-modules-instances-in-proc-modules Lsmod命令基于manpage的说明, 这个命令的数据来源是 : /proc/modules 123456789101112131415161718192021222324252627282930313233343536[root@centos ~]# lsmodModule Size Used byiptable_nat 12875 0nf_conntrack_ipv4 19149 1nf_defrag_ipv4 12729 1 nf_conntrack_ipv4nf_nat_ipv4 14115 1 iptable_natnf_nat 26583 1 nf_nat_ipv4nf_conntrack 143360 ...
Iostat 参数说明
iostat - Report Central Processing Unit (CPU) statistics and input/output statistics for devices and partitions. 指标的解释说明如下: rrqm/s - wrqm/s 两个看的是的merge的请求数量, 表示发送给驱动程序并被驱动程序合并的请求数量,表示有没有进行合并,这也表示系统将随机IO请求合并成连续以提高性能。 r/s - w/s IO读写的请求数量IOPS, 发送给磁盘设备的请求数。 rKB/s - wKB/s 吞吐量, 可以使用 -m 转换成MB/s, 设备的传输数据量的吞吐量信息。 avgrq-sz 平均请求大小, 也就是IO size 的大小。单位是扇区(512B)。 rareq-sz - wareq-sz 新版本的iostat已经是这两个指标了, 这两个指标单位是 KB. avgqu-sz 在驱动队列和设备队列中或活跃的平均请求数量。 单位是 个。 aw...


