Iptables进行持久化配置,重启不丢失
操作文档针对 ubuntu20 和 centos 系统,其他系统类似。iptables-save 命令其实只是把配置文件打印出来,并不会真的 save,这个有点容易让人误解。 针对 ubuntu 平台ubuntu20 需要安装 iptables-persistent 才能实现持久化 1apt install iptables-persistent 持久化的配置文件保存在 12345# 针对ipv4/etc/iptables/rules.v4# 针对ipv6/etc/iptables/rules.v6 手动保存当前配置 12345# 针对ipv4sudo iptables-save > /etc/iptables/rules.v4# 针对ipv6sudo ip6tables-save > /etc/iptables/rules.v6 针对 centos 平台安装包 iptables-services 1sudo dnf install...
使用iptables做4层端口转发
用途:有两台机器,需要用其中的一台机器做跳板,转发另一台机器一个特定的端口,机器列表如下 机器 IP iptables 机器 10.0.0.41 web 服务器 10.0.0.42:8000 开启内核转发功能临时开启永久开启1sudo sysctl -w net.ipv4.ip_forward=1 或者 1echo "1" > /proc/sys/net/ipv4/ip_forward1234567sudo vim /etc/sysctl.conf# 保证是这个配置net.ipv4.ip_forward=1# 立即生效sudo sysctl -p 本地端口转发到本地端口12# 访问本地的2222端口,转发到本地的22端口iptables -t nat -A PREROUTING -p tcp --dport 2222 -j REDIRECT --to-port 22 转发请求到目标主机这是通过本主机做一个跳转,比如访问 A 的 80 端口转发到 B 的 8000 端口 1234iptables -t nat -A...
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...