用Go 写了个负载均衡器
时间:2022-07-27
本文章向大家介绍用Go 写了个负载均衡器,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Feature:
- 支持多 LB 实例,动态创建、停止、开启实例
- 动态配置,增删 server,升级后端服务无需重启(像 nginx -s reload 虽然无服务中断,但也重启了进程)
- 被动健康检查
- SSL 卸载
- 更多的统计信息 http status/path/method/bytes
- 支持一致性哈希
- 支持 Nginx 中更为均衡平滑的 roundrobin
组态
配置指定控制器侦听127.0.0.1:6587
,并使用默认的roundrobin方法定义包含两个服务器的虚拟服务器
脚步
- 1号航站楼:?
make run
- 2号航站楼:?
watch 'curl -H "Host:localhost" http://127.0.0.1:8081 /dev/null'
- 3号航站楼:?
python -m Simple
HTTP
Server 10001 & python -m Simple
HTTP
Server 10002 & python -m Simple
HTTP
Server 10003
- 4号航站楼:
查询基本统计数据
curl -u admin:admin http://127.0.0.1:6587/stats
curl -u admin:admin http://127.0.0.1:6587/vs
curl -u admin:admin http://127.0.0.1:6587/vs/web
添加/删除池成员
curl -XPOST -u admin:admin -d '{"address":"127.0.0.1:10003"}' http://127.0.0.1:6587/vs/web/pool
curl -u admin:admin http://127.0.0.1:6587/vs/web
curl -u admin:admin http://127.0.0.1:6587/stats
curl -XDELETE -u admin:admin -d '{"address":"127.0.0.1:10003"}' http://127.0.0.1:6587/vs/web/pool
启用/禁用LB实例
curl -XPOST -u admin:admin -d '{"action":"disable"}' http://127.0.0.1:6587/vs/web
curl -u admin:admin http://127.0.0.1:6587/vs/web
curl -XPOST -u admin:admin -d '{"action":"enable"}' http://127.0.0.1:6587/vs/web
Github 地址:?https://github.com/onestraw/golb
欢迎提 Issue、PR、star
- 【干货】TensorFlow实战——图像分类神经网络模型
- HTML5手机APP开发入(5)
- 这种自带黑科技的R包,请给我来一打
- 4927 线段树练习5
- codevs4919 线段树练习4
- 利用OpenCV和深度学习实现人脸检测
- 洛谷P2676 超级书架
- 洛谷P1720 月落乌啼算钱
- 2017.10.1解题报告
- 这个包绝对值得你用心体验一次!
- Python之函数的进阶(带参数的装饰器)
- 2017.10.2解题报告
- MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具集成Visual Studio 2013
- 左手用R右手Python系列——百度地图API调用与地址解析/逆解析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【Kubernetes】Octant再探...
- 聊聊claudb的SlaveReplication
- 深度学习trick--labelsmooth
- Java锁的那些事儿
- React Hooks踩坑分享
- Python 自动化,Helium 凭什么取代 Selenium?
- Explain详解与索引最佳实践
- 使用SAP Analysis Path Framework (APF)展示CDS view数据
- 基于docker封装prometheus解决时区问题
- Node.js 如何处理 ES6 模块
- 关于Hive使用的一些实例
- 134. 加油站 Krains 2020-08-20 14:03:21 前缀和贪心
- 53. 最大子序和 Krains 2020-08-20 10:46:24 动态规划前缀和
- 如何用Unity导出H5与小游戏的3D场景
- 设计模式 之 模板模式