解决 docker 和 docker-compose 和内网 IP 冲突问题
前言docker 一键部署爽,内网冲突火葬场。最近实施去客户那边调试,某个屋的设备可以连上网关,而某个屋的设备都不行,找了半天没有找到原因,于是晚上直接一个电话敲到了我这里,让我帮忙康康
寻找原因之前也遇到过了这种情况,简单排除掉了物联网设备那边的网关设置问题,马上想到了 docker 的问题,docker network ls 一看,发现 docker 和 docker-compose 占用的客户的地址,客户使用了 172.0.0.0/8 做为内网地址(不是很标准的做法,但是很常见),docker 占用了 172.17.0.0/16 作为桥接地址,docker-compose 跑了个 Harbor ,把 172.18.0.0/16 也给占了,物联网设备那边的网关下一跳是 172.18.12.1 ,于是华丽丽的冲突了,物联网路由访问咱们网关机器不通,于是连接不上
修改 Docker 桥接网段非常简单,有个 bip 的设置
vim /etc/docker/daemon.json
"bip":"10.255.0.1/16" ...
Jenkins Golang CI 打包上传到镜像仓,一个 shell 脚本搞定
前言写程序难免经历要很多调试,对于 K8S 开发,如果需要和集群内的其它服务进行交互,要么需要用 VPN 连接到集群内部,要么就需要打包 Docker 镜像,然后更新集群内的版本,就我来说,不是很喜欢前种方法,因为连到集群之后查资料就不是很方便,另外每次发版也是要走 CI 流程的,不妨做下 Golang 的 CI
公司技术栈是 Java + SpringBoot ,基本上没啥 Golang 的项目,自然也没有 Golang 的 CI 脚本,所以需要自己做,之前我弄过不少 CI ,不过是 Github Action 和 Gitea + Drone 之类的,需要写一个 yaml 文件,同时有很多可以用的组件 (use:xxx 这样的),是基于 Docker 的流水线,很方便,而公司使用的是 Jenkins ,而且是非常老版的 Jenkins ,所以只能写 Shell 脚本来打包
编写 Shell 脚本虽然我很不喜欢 Shell 脚本,不愿意写这玩意儿,不过还好不需要从零开始,找隔壁组大佬要到了 Java 的 CI 脚本,可以在它的基础上简单改改就行
之前我做了套 Gitea + Dron ...
【低价好物】50块钱的光纤交换机(三)?皖通邮电ZXWT CTNS 180X&150X
本篇为系列文章之第三篇
第一篇传送门:【低价好物】50块钱的光纤交换机(一)?分组传送终端格林威尔GPN710
第二篇传送门:【低价好物】50块钱的光纤交换机(二)?瑞斯康达iTN系列分组传送终端
往期【低价好物】合集(从新到旧):
【低价好物】50块钱一个的移动IEG-100系列9口全千兆边缘智能网关,会翻车吗?
【低价好物】50块钱的光纤交换机(三)?皖通邮电ZXWT CTNS 180X&150X
【低价好物】50块钱的光纤交换机(二)?瑞斯康达iTN系列分组传送终端
【低价好物】50块钱的光纤交换机(一)?分组传送终端格林威尔GPN710
【低价好物】让10多年前的防火墙继续在今天发光发热——DPTech FW1000-GC-N
皖通邮电的文档超难找,不建议没有网管交换机配置经验的同学入手
前言一时捡漏一时爽,一直捡漏一直爽!在前两期之后又有上交换机的需求了,又想玩点儿新的,于是又开始在海鲜市场搜寻起来,于是让我发现了皖通邮电(中兴子公司)的 180X & 150X ,价格也是相当的合适,赶紧入手几个康康
入手渠道、价格、设备基本信息和外观如图
ZXWT ...
k8s Golang 应用开发初体验
前言两年之前玩过 k8s ,搭了一套 k8s 集群(见:k8s豹之篇——搭建自己的 k8s 集群,实战部署 LuckyBlog 和 LuckyTalk 服务),来公司之后一直负责各个生产环境的 k8s 集群的运维,先是从运维的角度对 k8s 的理解深入了不少,最近又整了一套服务器运行状态监控,从开发的角度对 k8s 又有了一些新的理解,在这里记录一下
项目概述简介之前在这篇文章提到过一点:如何用超简单方法写一个Prometheus的Exporter ,之前做的是一个单体应用,由于公司之前的监控平台必须有外网连接才能登录,登录了之后才能拿到 json 格式的数据,而很多客户没有给服务器开放外网,导致没有办法登录到监控平台去拿数据,另一方面,由于是单体应用,需要手动部署,所以如果有哪里需要部署,需要我自己去上传、运行,很是麻烦。而公司对于 k8s 应用有着自动部署的平台,鼠标点一下就能部署,所以就想着一方面想脱离公司的监控平台直接拿到运行状态数据,一方面把自己的应用也做成 k8s 的,方便实施去部署,避免自己一个个去部署的尴尬和麻烦
各个服务器的运行状态是使用 Prometheus Exp ...
DDNS 分线路解析分流,减轻站点流量压力
前言9 月的时候,为了后面开发准备学习一些新玩意儿,按照我的习惯,学习新东西一般比较倾向于做一个 mini project ,结合自己的需求,于是选了这个 DDNS 分线路解析作为学习的 mini project
学到的新玩意儿
viper 读取配置文件
之前是用 ini 包做的解析,使用 viper 可以读取 JSON 、 TOML 、YAML、 INI 在内的多种格式的配置文件,甚至是 Java 的 properties 文件
gin 静态文件打包
通过 Go 的 embed 包,可以把所有文件(比如前端文件和静态资源)打包进一个二进制文件运行,方便部署的同时可以规避同时打开文件数量过多的问题(公司有个老项目,java 写的,没有打成一个 jar 包,访问量大了时候经常出问题)
Gracefully Shutdown
Gin 可以在等待处理完当前的连接之后再关闭,这个机制叫做 Gracefully Shutdown ,需要用到 Go 的 channel
template
顾名思义,是“模板”,可以在不通过请求接口的情况下,拿到后端对象的数据,由于是在服务器端渲染的,客 ...
如何用超简单方法写一个Prometheus的Exporter
前言想要监控公司生产环境一些节点的运行状态,目前公司做的有监控平台,可以拿到各个节点的运行数据,但是是看不到趋势的,只能看到当前时间点的状态,为了能够看到数据的趋势,为服务器的扩缩容做更好的决策,需要写一个 Prometheus 的 Exporter 将监控平台的数据导出
监控平台需要登录,数据有 API 接口、json ,具体登录平台拿 json 数据的过程不表
实践一般来说,用 Go 来写 Prometheus 的 Exporter 是用 Prometheus 官方的实现:https://github.com/prometheus/client_golang 来做,简单看了下网上的示例,如果要实现动态 label 则很麻烦,需要实现一个自己的 Controller ,如果只暴露一两个指标,就很方便,我们希望能够用服务器的主机名和服务器的 IP ,以及客户的名称作为 label ,方便后面做可视化的时候筛选指标。那么有没有什么简单一点的方式呢
哎,还真有,来介绍下今天的主角:https://github.com/VictoriaMetrics/metrics 用它的时候和写这篇文章的 ...
用 Prometheus + Grafana 组合拳轻松监控服务状态
前言应该是在去年的时候,部门的老师和我提过 Zabbix 和 Prometheus ,当时没有什么监控的需求就只是大概看了一下,到了今年 6 月的时候,因为正好新增了对象存储 MinIO ,这个要想看具体状态就需要 Prometheus ,本来是想装 Zabbix 的,但是成功被它的最低配置要求劝退了😂,于是就准备上 Prometheus 咯
Prometheus 和 Grafana 安装是非常简单的,莫要害怕
安装 Prometheus下载地址:https://prometheus.io/download/ ,生产环境建议安装 LTS 的稳定版本
# 下载并解压 Prometheuscd /opt# 生产环境建议安装 LTS 的稳定版本,自行尝试时请访问官网确定最新稳定版本的链接wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.darwin-amd64.tar.gztar -xvf prometheus-2.45.0.darwin-amd64.t ...
打造个人图床+综合业务网关,从 Cloudreve 向 MinIO 迁移
首先还是要提一下,又是一篇咕了很久的文章了,去 git 看了下自己的提交记录,6 月中的时候就已经弄好了,最近一次提交是在 6 月 22 号的时候,加上了博客随机图服务,oaPlayer 和 NoaPlayer 的模块,但是一直咕着没有写文章,趁这周末有时间有心情的时候回顾一下
草稿里面还有几篇,最近咕的好厉害(比W略强),后面慢慢补吧
前言这回考察新图床的原因自然是在用的 V2 版图床 Cloudreve 做图床有一些不尽人意的地方,大概是这些
没有明晰的 API 文档/接口
设计主要是作为私有云盘使用的,图床算是边际功能
上传图片不能自动压缩
使用 sqlite (可选 mysql/pgsql ,但是我本地没用,用 mysql/pgsql 的时候应该速度会快一些,但是我不大想动它了),外链多的时候(超过 2w+ 个)速度显著下降
没有和文档写作软件(我用的 Typora )的无缝集成。上传图片需要手动操作复制链接,很麻烦
外链的链接非常长,有些地方会不兼容(说的就是你 Plumemo ,V2 博客的时候里面的 Logo 都是放在可道云的,这就是为 ...
Cacti 最新版 1.2.24 部署指南
前言经常接触数通设备的朋友一定很熟悉 Cacti (仙人掌)监控,作为老牌开源监控软件,Cacti 常用于交换机、路由器等数通设备的监控,方便可视化感知网络流量和故障分析,但是常常有不少朋友会被其繁琐的部署流程而难倒,前段时间我把我的 Cacti 从 Docker 里面移到了虚拟机里面跑,并且升级到了最新版本,也顺带讲讲怎么部署
准备虚拟机,安装环境
CentOS 7.x 的虚拟机一台
内存和核核尽量多给一些,尤其是要监控的设备比较多的时候,Cacti 还是比较吃性能的,在内存和核数给的少的时候,添加设备过程会比较慢……
添加 epel 源yum install epel-release
添加 wlnmp 一键包源,装起来会比较方便rpm -ivh http://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm
关于这个源的更多信息可见:https://www.wlnmp.com/
安装 nginx、php、mysqlyum install wnginx wphp71 wmysql57
安装php扩展及其他所需依赖 ...
【低价好物】50块钱的光纤交换机(二)?瑞斯康达iTN系列分组传送终端
本篇为系列文章之第二篇
第三期传送门:【低价好物】50块钱的光纤交换机(三)?皖通邮电ZXWT CTNS 180X&150X
第一篇传送门:【低价好物】50块钱的光纤交换机(一)?分组传送终端格林威尔GPN710
往期【低价好物】合集(从新到旧):
【低价好物】50块钱一个的移动IEG-100系列9口全千兆边缘智能网关,会翻车吗?
【低价好物】50块钱的光纤交换机(三)?皖通邮电ZXWT CTNS 180X&150X
【低价好物】50块钱的光纤交换机(二)?瑞斯康达iTN系列分组传送终端
【低价好物】50块钱的光纤交换机(一)?分组传送终端格林威尔GPN710
【低价好物】让10多年前的防火墙继续在今天发光发热——DPTech FW1000-GC-N
前排提醒:瑞斯康达设备 console 口(USB 口)和 console 线(含串口芯片,两头 USB)为非标端口/线材,该线材随机赠送市场没有出售,如果设备不能恢复出厂设置(没有 reset 钮/ reset 钮坏了),而设备又没有使用默认 IP 和密码,此时无法恢复出厂设置并清空密码!
不过瑞 ...