nginx for balancer web ui
项目起源于好哥们需要一个 7 层负载均衡器,无奈商业负载均衡器成本高昂,操作复杂。又没有特别喜欢(好看,好用)的开源产品,作为一名大 Ops 怎么能没有办法?正好最近在看 Django 框架,尝试自己给 Nginx 画皮,项目诞生!非专业开发,代码凑合看吧。
本次更新涉及数据库变动,无法直接升级,请备份配置后,删除数据库并重新还原配置
优化 新增默认数据库,新环境不再需要执行初始化数据库操作
如果升级,请备份您的数据库或配置文件,防止覆盖或丢失
新增 Dashboard 页面增加 Nginx 手动开关
操作接口会占用本地 9001,更新时请确保没有规则使用该端口
新增 同步状态及配置查询 API,请查阅 API 文档
新增 配置同步失败关闭 Nginx 功能(可选),防止多节点同步异常导致的服务异常
请自行监控并使用前端 LB 执行健康检测
新增 nginx-module-vts 模块,实现更完善的流量监测能力
新增 Dashboard 页面 Nginx 启动时间显示
API 中同步增加字段,单位为 ms,可以自行转换
新增 Prometheus 格式流量监测接口
该服务会占用
9191/tcp
端口
可以在系统设置中打开公开指标接口
功能,以实现外部监控,该功能可能造成隐私泄露等安全风险,建议使用 Telegraf 等方案从本地收集数据上游服务器健康状态(HTTP/TCP)
<BASE_URL>:9191/up_status?format=[prometheus|json|html]
流量统计(HTTP)
<BASE_URL>:9191/req_status_http/format/[prometheus|json|html]/
流量统计(TCP)
<BASE_URL>:9191/req_status_tcp/format/[prometheus|json|html]/
优化 因插件功能冲突,动态域名解析功能,由原 ngx_upstream_jdomain 模块更换为 Tengine 自带 ngx_http_upstream_dynamic 模块
因
ngx_http_upstream_dynamic
模块和主动健康检测模块及负载均衡算法实现冲突,开启动态域名解析功能后,需要由 DNS 实现负载均衡及健康检测
--platform linux/arm64
参数/api/docs
/etc/nginx/default.*
,可自行更换编译镜像
nerdctl build --platform=arm64,amd64 -t <lazy-balancer>:<v1.4.0beta> .
也可以 DockerHub
https://hub.docker.com/r/v55448330/lazy-balancer
启动命令
docker run -d --restart=always --net=host --name=lazy_balancer \
--log-opt max-size=500m \
--log-opt max-file=3 \
-v <db_dir>:/app/lazy_balancer/db \
-v <log_dir>:/var/log/nginx \
<lazy-balancer>:<v1.4.0beta> or v55448330/lazy-balancer:latest
部署
部署方式参照
deploy.sh
脚本
启动服务
supervisord -c /app/lazy_balancer/service/supervisord_docker.conf
or
supervisorctl start webui
supervisorctl start nginx
登录系统
http://[IP]:8000/
首次登陆会要求创建管理员用户,如需修改,可在系统配置中重置管理员用户