Iptables进行持久化配置,重启不丢失
操作文档针对 ubuntu20 和 centos 系统,其他系统类似。iptables-save 命令其实只是把配置文件打印出来,并不会真的 save,这个有点容易让人误解。 针对 ubuntu 平台ubuntu20 需要安装 iptables-persistent 才能实现持久化 持久化的配置文件保存在 手动保存当前配置 针对 centos 平台安装包 iptables-services 配置文件位置 需要关闭 firewalld 然后启动 iptables 手动保存当前配置 netfilter-persistent 命令使用 netfilter-persistent save 可以自动保存当前规则,本质上是调用两个脚本
iptables使用记录实战
iptables 四表五链四表五链:链就是位置:共有五个 进路由 (PREROUTING)、进系统 (INPUT) 、转发 (FORWARD)、出系统 (OUTPUT)、出路由 (POSTROUTING);表就是存储的规则;数据包到了该链处,会去对应表中查询设置的规则,然后决定是否放行、丢弃、转发还是修改等等操作。 具体的四表 表 说明 filter 过滤数据包 Nat 用于网络地址转换(IP、端口) Mangle 修改数据包的服务类型、TTL、并且可以配置路由实现 QOS Raw 决定数据包是否被状态跟踪机制处理 具体的五链 链 说明 INPUT 进来的数据包应用此规则链中的策略 OUTPUT 外出的数据包应用此规则链中的策略 FORWARD 转发数据包时应用此规则链中的策略 PREROUTING 对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理) POSTROUTING 对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理) 开启内核转发功能临时开启永久开启 或者 ...
hexo博客添加自定义html页面
比如我想增加一个文件夹,文件夹里面有 img、css、js 等文件夹,还有 index.html 文件,想要在 hexo 博客里可以正常显示 将 文件夹 放到 hexo 的 source 文件夹下。 然后需要配置跳过 hexo 的渲染,因为 hexo 会改变 html 文件的结构。 修改 _config.yml 后续可以通过访问 http://xxx.com/html/ 来打开页面 需要注意 js css html 等文件调用的地址有可能需要更换。
编译安装MySQL5.7
编译需要耗时,且对系统的依赖更为复杂,更容易出错, 如果没有必要,可以参考使用 二进制安装MySQL5.7 安装编译依赖Ubuntu和DebianCentOS和Fedora 编译设置安装路径 准备工作 开始编译 收尾创建目录和用户 创建配置文件 创建软链接my.cnf 文件客户端和服务端都需要使用的。 创建 service 文件 初始化数据库 优化工作添加环境变量 修改 root 密码 查看编译参数
Prometheus手动打标签
有时候需要给 Prometheus 打标签,比如说联邦集群接入,需要知道是哪个集群,remote write 写入的时候也需要做个标记。 直接在集群打标签vim prometheus.yml 这样就可以给集群内的所有 metrics 打上这三个标签。 通过联邦集群打标签如果集群不好进行操作,可以通过联邦集群接入,在联邦主节点进行配置 给接入的 target 打标签 这种只是给当前这个 target 打标签,不是全局生效
基于VictoriaMetrics的大规模监控实战
victoriametrics 原生支持水平扩展,并且大部分兼容 Prometheus 语法,官方文档地址:https://docs.victoriametrics.com/ 这个是 victoriametrics 官方的集群架构 我公司用到的集群架构 目前用到 3 台机器 IP 部署的服务 10.0.0.21 vmauth、vmselect、vminsert、vmstorage、vmalert 10.0.0.22 vmselect、vminsert、vmstorage 10.0.0.23 vmselect、vminsert、vmstorage vmstorage首先需要把存储部署上,多个存储之间数据是不同步的,也就是说所有的 storege 组件之间是感知不到彼此的。通过 vmselect 和 vminsert 采用一致性 hash 算法来确定读取/写入哪台节点。 vmstorage 启动命令 vminsert vmselectvmselect 启动命令 vmalert 负载均衡配置vmauth 负载均衡配置 其中 vmaut...
使用Keepalived来实现Nginx高可用
公有云不会考虑这些,不过自建机房,使用 nginx 做入口,keepalived 是唯一的选择。 节点 IP keepalived 主 10.0.0.45 keepalived 备 10.0.0.44 vip 10.0.0.46 组播模式keepalived1keepalived2 单播模式keepalived1keepalived2 非抢占式说明 抢占式 和 非抢占式的区别: 比如 master1 默认的权重(priority)高,vip 当前在 master1 上, master1 挂掉后 vip 会飘到 master2 上,那么如果 master1 恢复正常了,抢占式会重新将 vip 抢过来,再次绑定到 master1 上,非抢占式则保持在 master2 上,除非 master2 也出问题。 必须都为 BACKUP 模式,如果有 MASTER,那么 MASTER 会抢占 必须都配置 nopreempt 去掉 weight -20 配置, 因为非抢占式这种配置, 高优先级的不会去抢占低优先级的 VIP, 所以检测失败降低权重是没有效果的。 配...
Prometheus通过remote_write写入数据到另一台Prometheus
假设 Prometheus1 是一个集群内的 Prometheus,需要远程写入数据到 Prometheus_Core Prometheus_Core 开启 remote_write_receiverPrometheus_Core 需要打开接收远程写入的功能,通过增加启动参数 --web.enable-remote-write-receiver: 远程写的接口地址 /api/v1/write Prometheus_Core 开启认证参考 Prometheus开启basic_auth认证 Prometheus1 配置 remote_writePrometheus1 需要将 remote_write 写入到 Prometheus_Core 的远程接口 远程写如何判断监控是否离线远程写不像联邦集群,联邦是事先配置好的,远程写的方式,被写入的 Prometheus 是无法预知是谁在向我发送数据的。可以通过 absent 函数来实现。 收集 Prometheus 自身的监控指标想要监控 Prometheus 的状态,则需要收集自身的监控指标(比如 up 指标),确保 Prome...
Prometheus开启basic_auth认证
考虑将公司的联邦集群(pull)换成 remote_write(push)这种形式, 所以需要将 Prometheus 开放到公网,看了看认证相关的配置 也可以使用 Nginx 来反向代理,可以参考 Nginx开启基本http认证, 不过 Prometheus 原生带了 basic auth 和 ssl 认证, 官网的说明https://prometheus.io/docs/guides/basic-auth/ 开启 web 配置文件 生成密码密码需要 bcrypt 加密,这里使用 htpasswd 工具生成 Ubuntu和Debian安装CentOS和Fedora安装 web 配置文件vim web.yml 验证一下配置 remote write 访问后面访问控制台页面或者调用接口都需要指定账号密码了 其他 Prometheus 如果需要往这台写入, 需要在其他的 Prometheus remote_write 配置认证 联邦配置如果此 Prometheus 需要通过联邦机制接入到其他 Prometheus, 需要在对方的配置里面增加: 启用了 Bas...
Ingress Nginx 的灰度方案
在 k8s 环境下进行灰度,ingress-nginx 自带了灰度注解, 这篇文章挺详细的https://v2-1.docs.kubesphere.io/docs/zh-CN/quick-start/ingress-canary/ 再此之前有个需求, 根据请求 header 有没有特定的值,来判断是否进入灰度环境。当时的做法是在集群内用 nginx 这种方式可以实现需求, 不过不灵活, 也不优雅, 搜了一下, 发现 ingress nginx 原生提供了灰度的方案 ingress 自带 canary 部署简单来说就是部署了两套环境, 这两套一模一样, 只是在不同的 namespace(同一个 namespace 需要取不同的名字),service 和 ingress 域名都配置成一样的, 然后在 canary 环境的 ingress 上添加注解即可。 如何测试效果可以使用 echo server 来做测试容器, 请求它可以输出一些基本信息, 我们就知道访问到哪个 pod 了 测试过程


