Go IPs Forward 是一个用 Go 语言编写的高性能 TCP 转发和负载均衡工具。它能够从 CSV 文件中读取目标 IP 地址和数据中心信息,并根据实时测量的网络延迟,将入站连接转发到延迟最低的目标服务器。
- 从 CSV 文件读取目标 IP 地址和数据中心信息
- 按数据中心分组管理多个转发目标
- 动态测量目标服务器的网络延迟
- 基于最低延迟的负载均衡
- 实时更新最佳转发目标(每分钟)
- 支持多个数据中心的并行转发
- 使用 Go 的并发特性实现高效的多连接处理
- 利用 goroutines 和 channels 进行异步操作
- 使用互斥锁(mutex)确保线程安全
- TCP 连接用于延迟测量和数据转发
-
准备 CSV 文件
创建一个名为
ip.csv
的文件,格式如下:IP地址,数据中心,地区,城市,网络延迟 172.65.90.46,RUH,Middle East,Riyadh,6 ms 172.65.90.58,SJC,North America,San Jose,6 ms
注意:虽然 CSV 文件包含网络延迟信息,但程序会实时测量实际延迟。
-
编译程序
go build -o go-ips-forward main.go
-
运行程序
./go-ips-forward
程序将开始监听并转发连接。
目前,配置是硬编码在程序中的。主要的配置项包括:
- CSV 文件名:
ip.csv
- 起始监听端口:10000(每个数据中心递增)
- 延迟测量间隔:1分钟
- 连接超时:5秒
-
配置文件支持
- 实现通过 YAML 或 JSON 配置文件读取设置
- 允许用户自定义 CSV 文件路径、起始端口、更新间隔等
-
命令行参数
- 添加命令行参数支持,允许覆盖默认配置
-
监控和日志
- 实现详细的日志记录系统
- 添加 Prometheus 指标导出
- 创建基本的 Web UI 用于查看当前状态和统计信息
-
高级负载均衡策略
- 实现加权轮询算法
- 添加基于地理位置的路由选项
-
安全性增强
- 添加 TLS 支持
- 实现简单的认证机制
-
容错和恢复
- 实现优雅关闭
- 添加自动重试机制
- 实现目标服务器健康检查
-
性能优化
- 实现连接池
- 优化内存使用
-
插件系统
- 设计插件接口,允许自定义负载均衡策略和监控
-
容器化
- 创建 Dockerfile
- 提供 Docker Compose 配置用于快速部署
-
文档和测试
- 编写全面的文档
- 增加单元测试和集成测试覆盖率
欢迎提交 issues 和 pull requests。