iptables使用记录实战
iptables 四表五链四表五链:链就是位置:共有五个 进路由 (PREROUTING)、进系统 (INPUT) 、转发 (FORWARD)、出系统 (OUTPUT)、出路由 (POSTROUTING);表就是存储的规则;数据包到了该链处,会去对应表中查询设置的规则,然后决定是否放行、丢弃、转发还是修改等等操作。 具体的四表 表 说明 filter 过滤数据包 Nat 用于网络地址转换(IP、端口) Mangle 修改数据包的服务类型、TTL、并且可以配置路由实现...
hexo博客添加自定义html页面
比如我想增加一个文件夹,文件夹里面有 img、css、js 等文件夹,还有 index.html 文件,想要在 hexo 博客里可以正常显示 将 文件夹 放到 hexo 的 source 文件夹下。 然后需要配置跳过 hexo 的渲染,因为 hexo 会改变 html 文件的结构。 修改 _config.yml 1234skip_render: # 这里排除的是 source 目录下不需要渲染的文件 - '**/README.md' - 'html/*' 后续可以通过访问 http://xxx.com/html/ 来打开页面 需要注意 js css html 等文件调用的地址有可能需要更换。
编译安装MySQL5.7
编译需要耗时,且对系统的依赖更为复杂,更容易出错, 如果没有必要,可以参考使用 二进制安装MySQL5.7 安装编译依赖Ubuntu和DebianCentOS和Fedora1sudo apt-get install -y build-essential cmake libaio-dev libncurses5-dev pkg-config1sudo yum -y install zlib-devel openssl-devel libaio-devel ncurses-devel cmake gcc-c++ 编译设置安装路径12export BASE_DIR="/usr/local/mysql"export DATA_DIR="/data/mysql" 准备工作1234wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.38.tar.gztar xf mysql-boost-5.7.38.tar.gz && cd mysql-5.7.38[[...
Prometheus手动打标签
有时候需要给 Prometheus 打标签,比如说联邦集群接入,需要知道是哪个集群,remote write 写入的时候也需要做个标记。 直接在集群打标签vim prometheus.yml 12345678910global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). external_labels: env: uat dept: ops project: xxx... 这样就可以给集群内的所有 metrics...
基于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 启动命令 12345678./vmstorage-prod -httpListenAddr "0.0.0.0:8482" \ #...
使用Keepalived来实现Nginx高可用
公有云不会考虑这些,不过自建机房,使用 nginx 做入口,keepalived 是唯一的选择。 节点 IP keepalived 主 10.0.0.45 keepalived 备 10.0.0.44 vip 10.0.0.46 组播模式keepalived1keepalived2123456789101112131415161718192021222324252627282930313233global_defs { script_user root # 脚本执行者 enable_script_security # 标记脚本安全}vrrp_script check_script { script "killall -0 nginx" # 脚本路径, 返回值为0则正常,不为0认为不正常 # 可替代的命令: # /usr/sbin/pidof nginx 这个命令不推荐, 多个进程pid会出问题 #...
Prometheus通过remote_write写入数据到另一台Prometheus
假设 Prometheus1 是一个集群内的 Prometheus,需要远程写入数据到 Prometheus_Core Prometheus_Core 开启 remote_write_receiverPrometheus_Core 需要打开接收远程写入的功能,通过增加启动参数 --web.enable-remote-write-receiver: 1./prometheus --web.enable-remote-write-receiver --web.config.file=web.yml --web.listen-address=0.0.0.0:9090 远程写的接口地址 /api/v1/write Prometheus_Core 开启认证参考 Prometheus开启basic_auth认证 Prometheus1 配置 remote_writePrometheus1 需要将 remote_write 写入到 Prometheus_Core 的远程接口 12345678910111213141516remote_write:- url:...
Prometheus开启basic_auth认证
考虑将公司的联邦集群(pull)换成 remote_write(push)这种形式, 所以需要将 Prometheus 开放到公网,看了看认证相关的配置 也可以使用 Nginx 来反向代理,可以参考 Nginx开启基本http认证, 不过 Prometheus 原生带了 basic auth 和 ssl 认证, 官网的说明https://prometheus.io/docs/guides/basic-auth/ 开启 web 配置文件1./prometheus --web.config.file="web.yml" --web.listen-address="0.0.0.0:9001" 生成密码密码需要 bcrypt 加密,这里使用 htpasswd 工具生成 Ubuntu和Debian安装CentOS和Fedora安装1apt install apache2-utils1yum install httpd-tools 1htpasswd -nB 'admin' web 配置文件vim...
Ingress Nginx 的灰度方案
在 k8s 环境下进行灰度,ingress-nginx 自带了灰度注解, 这篇文章挺详细的https://v2-1.docs.kubesphere.io/docs/zh-CN/quick-start/ingress-canary/ 再此之前有个需求, 根据请求 header 有没有特定的值,来判断是否进入灰度环境。当时的做法是在集群内用 nginx 12345# 如果有个header叫grayif ($http_gray = "true") { proxy_pass http://nginx.test1:80; break;} 这种方式可以实现需求, 不过不灵活, 也不优雅, 搜了一下, 发现 ingress nginx 原生提供了灰度的方案 ingress 自带 canary 部署简单来说就是部署了两套环境, 这两套一模一样, 只是在不同的 namespace(同一个 namespace 需要取不同的名字),service 和 ingress 域名都配置成一样的, 然后在 canary 环境的 ingress...
Nginx四层反向代理后端记录真实IP
使用 k8s 的 ingress 暴露服务,会有使用负载均衡反向代理 ingress 的情况,那么我们的 ingress 获取到的 ip 都是 4 层负载的 ip,比如常用架构图 4 层 Proxy Protocol 透传 tcp 工作在网络第 4 层,Proxy Protocol 就是在 tcp 中增加一个小的报头,用来存储额外的信息 代理协议即 Proxy Protocol,是 haproxy 的作者 Willy Tarreau 于 2010 年开发和设计的一个 Internet 协议,通过为 tcp 添加一个很小的头信息,来方便的传递客户端信息(协议栈、源 IP、目的 IP、源端口、目的端口等),在网络情况复杂又需要获取客户 IP 时非常有用。其本质是在三次握手结束后由代理在连接中插入了一个携带了原始连接四元组信息的数据包。 目前 proxy protocol 有两个版本,v1 仅支持 human-readable 报头格式(ASCIII 码),v2 需同时支持 human-readable 和二进制格式,即需要兼容 v1 格式proxy protocol...