饮墨

子安饮墨馀三斗,留与卿儿作赋来

从 Redis 迁移到 Valkey:3 步完成生产切换,零停机 + 完全兼容

痛点:Redis 许可证变了,你的基础设施还好吗?

2024 年 Redis 宣布从 BSD 切换到 RSALv2 + SSPLv1 双许可证。对运维团队的影响很直接:

  • 云厂商托管服务可能涨价或调整功能(AWS ElastiCache 已开始切换到 Valkey)
  • 自建 Redis 如果用在商业产品里,许可证合规性需要法务审查
  • 开源生态工具逐步从 Redis 切换到 Valkey 分支

Valkey 是 Linux Foundation 托管的 Redis 7.2 分支,由原 Redis 核心贡献者维护,API 100% 兼容。截至 2026 年,Valkey 8.x 已经是生产就绪...

Read more

用 ClickHouse 替代 ELK 做日志分析:存储降 80%、查询快 50 倍的实操方案

痛点:ELK 越用越贵,查询越来越慢

日志量上了 TB 级,ELK 的问题就暴露了:

  • 存储成本飙升:Elasticsearch 默认全文索引,100GB 原始日志存进去膨胀到 300GB+,SSD 费用月增几千块
  • 查询变慢:日志超过 7 天的历史查询动辄 30 秒,Kibana 转圈转到怀疑人生
  • 运维负担重:JVM 调优、分片再平衡、节点扩容,ES 集群自身的运维量不亚于业务系统
  • 资源浪费:大多数运维场景只需要 WHERE + GROUP BY + ORDER BY,根本用不到全文检索

如果你 90% 的日志查询是 "某时间段 + 某服务 + 关键字过滤 + 聚合统计",ClickH...

Read more

Dagger 实战:用代码定义 CI/CD Pipeline,彻底告别 YAML 地狱

痛点:YAML Pipeline 的运维噩梦

如果你维护过超过 10 个微服务的 CI/CD,一定经历过这些:

  • GitHub Actions / GitLab CI YAML 膨胀:几百行的 .github/workflows/ 文件,嵌套 if 条件、矩阵策略、重复的 step 定义,改一个参数要翻半天
  • 本地无法复现:Pipeline 只能在 CI 环境跑,本地调试靠猜,一次 push 等 10 分钟看结果
  • 跨项目复用困难:公共逻辑靠 copy-paste 或 composite action,版本管理混乱
  • 缓存玄学:CI 缓存命中率低,构建时间随项目增长线性膨胀

Dagger 的...

Read more

用 vCluster 实现 Kubernetes 多租户隔离:3 步搭建轻量虚拟集群

痛点

团队规模增长后,多个开发组共用一套 K8s 集群,资源冲突频发:A 组的 CRD 升级把 B 组搞挂、测试环境互相踩 Namespace、RBAC 配置复杂且容易漏权。传统方案要么拉多套物理集群(成本翻倍),要么靠 Namespace 级隔离(隔离不彻底,CRD/Webhook 级别无法隔离)。

vCluster 是 Loft Labs 开源的轻量级虚拟集群方案——在一个 Host 集群的 Namespace 里跑一个完整的 K8s Control Plane(API Server + etcd/SQLite),租户看到的是独立集群,但 Pod 实际调度在宿主集群节点上。资源开销极...

Read more

Wazuh 开源 SIEM+XDR 平台:从部署到告警的运维落地实战

痛点

安全运维团队面临一个现实矛盾:商业 SIEM(Splunk、QRadar)动辄年费几十万,而中小企业同样面临日志审计、入侵检测、合规需求。很多团队选择"裸奔"——靠 grep 翻日志、手工写规则,出事后才知道被打了多久。

Wazuh 作为开源 SIEM+XDR 一体化平台,提供了从 Agent 采集、实时分析、威胁检测到主动响应的完整链路,且完全免费。但它的部署架构和调优有不少坑,本文给出可直接落地的实操方案。

方案概述

Wazuh 4.x 架构分三层:

组件 角色 资源建议
Wazuh Server (Manager) 规则引擎 + 告警 + 主动响应 4C8G 起...

Read more

3步搭建生产级RAG管道:Python + ChromaDB + LLM实战

痛点

你用 LLM 做了个内部知识问答系统,Demo 跑得挺好,上线后用户反馈"回答经常胡说八道"。根本原因:LLM 没有你的私有数据,纯靠参数记忆回答,幻觉不可避免。

RAG(Retrieval-Augmented Generation)是当前最务实的解法——先检索相关文档片段,再喂给 LLM 生成答案。但从 Demo 到生产,坑不少:分块策略影响召回率、Embedding 模型选型决定语义精度、检索结果排序直接影响最终回答质量。

本文给出一套 Python 可直接落地的 RAG 管道方案,覆盖文档分块、向量存储、检索增强到 LLM 生成的全流程。

方案概览

技术栈选型:

...
组件

Read more

用 Caddy 替代 Nginx 做反向代理:自动 HTTPS、零证书管理,3 步上线实操

痛点

运维老手都知道 Nginx + Certbot 的经典组合:配反向代理、写 cron 续签证书、每次加站点就要改一堆配置。问题来了:

  1. 证书管理是负担 — certbot renew 偶尔失败、DNS 验证要额外配置、多域名续签容易漏
  2. 配置语法重 — 一个简单的反代要写 10+ 行,server_name / proxy_pass / proxy_set_header 一个不能少
  3. reload 有风险 — 配置写错一个分号,nginx -t 过了但上线后 502,线上排查浪费时间

Caddy 是一个用 Go 编写的现代 Web 服务器,核心卖点:自动 HTTPS(含证书申请 + ...

Read more

用 Tailscale 组建零配置跨云内网:替代传统 VPN 的 3 个运维场景实操

痛点

跨云、跨地域服务器互联是运维老大难问题。传统方案要么搭 IPSec/WireGuard 手动维护密钥和路由表,要么买云厂商的 VPN Gateway 按小时计费。一旦节点数超过 10 台,配置复杂度指数上升:

  • IPSec 隧道每增加一个节点,需要 N-1 条新隧道配置
  • WireGuard 手动方案需要分发公钥、维护 AllowedIPs、处理 NAT 穿透
  • 云厂商 VPN Gateway 单通道价格 $36-72/月,3 朵云互联成本直接翻 3 倍

核心需求: 10-50 台分布在 AWS、阿里云、自建 IDC 的服务器需要安全互联,要求零手动密钥管理、自动 NAT 穿透、节点...

Read more

3 个运维场景用 Podman 替代 Docker:无 daemon、rootless、systemd 原生集成实操

痛点

Docker 在生产环境有几个绕不开的问题:

  1. dockerd 单点故障 — daemon 挂了,所有容器失联,docker ps 都执行不了,运维只能盲操作
  2. Root 权限依赖 — 默认要 root 或 docker 组,一旦容器逃逸直接拿到宿主机最高权限
  3. 与 systemd 割裂 — 容器生命周期靠 dockerd 管理,和系统服务管理体系两套逻辑,重启策略、日志收集都要单独配

Podman 是红帽主导的开源容器引擎,API 兼容 Docker,但架构完全不同 — 无 daemon、fork-exec 模型、原生支持 rootless 和 systemd 集成。以下用 3 个...

Read more

用 Ansible Semaphore 替代 AWX/Tower:3 步搭建轻量 Ansible Web 管理平台,告别命令行裸跑

Ansible 好用,但团队规模一上来,谁跑了什么 Playbook、改了哪台机器、上次部署是啥时候——全靠口头交接和 history | grep ansible。AWX(Tower 开源版)太重,光部署就要 K8s + PostgreSQL + Redis。Semaphore 只需要一个二进制 + SQLite,5 分钟就能给 Ansible 加上 Web UI、权限管控、执行历史和 Webhook 触发。


痛点:Ansible 裸跑的 3 个致命问题

团队 5 个人共用一台跳板机跑 Ansible:

  1. 无审计 — 谁在凌晨 3 点跑了 site.yml 把生产数据库配置覆盖了...

Read more