用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 SimpleHTTPServer 10001 & python -m SimpleHTTPServer 10002 & python -m SimpleHTTPServer 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