架构

控制平面与数据平面分离,实现最大灵活性和可靠性

控制平面架构

GovernFlow作为外部控制平面运行,与VPN数据平面完全分离。这种分离实现了集中管理、独立扩展和故障转移,而不影响活动的VPN会话。

governflowd

主守护进程,提供REST API、集群协调、会话管理和通过Unix套接字的OpenVPN集成。

governflow-ls

许可证服务器,用于多租户许可证管理,RSA-SHA256签名许可证和基于层级的功能控制。

governflow-query

由OpenVPN调用的轻量级助手,用于客户端配置、防火墙规则和路由管理。

libgovernflow

共享库,包含通用功能:日志记录、配置解析、数据库连接池和许可证验证。

┌──────────────────────────────────────────┐
│           GovernFlow Control Plane       │
├──────────────────────────────────────────┤
│                                          │
│  ┌────────────────────────────────────┐  │
│  │          governflowd               │  │
│  │  ┌──────────────────────────────┐  │  │
│  │  │ Core: config, log, db, http  │  │  │
│  │  └──────────────────────────────┘  │  │
│  │  ┌──────────────────────────────┐  │  │
│  │  │ Plugins: 14 dynamic modules  │  │  │
│  │  └──────────────────────────────┘  │  │
│  │  Ports: 8443 (API), 8444 (UDP),   │  │
│  │         8445 (Raft), Unix Socket  │  │
│  └────────────────────────────────────┘  │
│                    │                     │
│  ┌─────────────────┴──────────────────┐  │
│  │         libgovernflow.so           │  │
│  └────────────────────────────────────┘  │
│                                          │
├──────────────────────────────────────────┤
│          OpenVPN Data Plane              │
├──────────────────────────────────────────┤
│  ┌────────────────────────────────────┐  │
│  │  OpenVPN Server + governflow-query │  │
│  │  (client-connect/disconnect hooks) │  │
│  └────────────────────────────────────┘  │
└──────────────────────────────────────────┘

集群拓扑

分布式架构,Raft共识实现高可用

领导节点

处理所有写操作并协调集群状态。通过Raft共识自动选举。

追随节点

从领导者复制状态并处理读操作。如果当前领导者失败,可以成为领导者。

仲裁保护

写入需要多数确认。防止脑裂并确保故障转移期间零数据丢失。

通信通道

Port 8443
HTTPS REST API
客户端管理、配置
Port 8444
UDP心跳
2秒间隔,HMAC-SHA256
Port 8445
Raft共识
mTLS加密,状态复制

数据流

GovernFlow如何与OpenVPN集成实现实时配置

1

客户端连接到OpenVPN

OpenVPN接收连接请求并触发client-connect脚本

2

governflow-query获取配置

通过Unix套接字查询governflowd获取客户端配置(IP、路由、QoS、区域)

3

应用配置

通过pf/iptables应用防火墙规则,添加路由,为OpenVPN生成push文件

4

在集群中跟踪会话

会话在所有集群节点上注册,使用分布式锁定防止重复

技术栈

以性能和可靠性为核心构建

C
原生性能
SQLite
零依赖
OpenSSL
加密
libmicrohttpd
HTTP/S服务器

了解更多关于GovernFlow

与我们的工程团队安排技术深度探讨。