#负载均衡器 #pingora #warp #个人项目 #调试

bin+lib carapace_lb

Carapace LB 是一种基于路径的负载均衡器,利用 Cloudflare 的 Pingora 框架高效地管理和路由流量

1 个不稳定版本

0.1.1 2024 年 6 月 9 日
0.1.0 2024 年 6 月 8 日

15#warp 中排名

Download history 330/week @ 2024-06-05 25/week @ 2024-06-12

每月 56 次下载

Apache-2.0

2.5MB
501

Carapace LB - 基于路径的负载均衡器

Carapace LB 是一种基于路径的负载均衡器,利用 Cloudflare 的 Pingora 框架 高效地管理和路由流量。

NOTE: I havent included SNI here because I dont have yet a good understanding on how to apply SNI in pingora.

配置

由于应用程序使用 Pingora,它也继承了其配置。有关 Pingora 相关配置的更多信息,请参阅此处:https://github.com/cloudflare/pingora/blob/main/docs/user_guide/conf.md

配置使用 TOML 格式。有关更多详细信息,请参阅 TOML 文档

高级图

Diagram

[load_balancer]

配置负载均衡器。

属性 描述
host 负载均衡器的地址。
port 负载均衡器将监听的端口。
routes_path 服务发现更新期间将保存路由的文件。
enable_tls_ssl 设置为 true 以启用 TLS/SSL。设置为 false 以禁用 TLS/SSL。
ca_crt_path .crt 文件的证书路径。
ca_pem_path .pem 文件的证书路径。
allow_file_types_pattern 用于匹配 URL 路径中文件的正则表达式模式。
debug 设置为空字符串 ""。如果设置为 "INFO",则只会打印最小信息,例如上游地址和 URL 路径。如果设置为 "DEBUG",则只会打印最小信息,例如上游地址和所有请求信息。

示例

[load_balancer]
host="0.0.0.0"
port=6170
routes_path="routes.json"
enable_tls_ssl=true
ca_crt_path="certs/localhost.crt"
ca_pem_path="certs/localhost.pem"
allow_file_types_pattern="[0-9|_|-|A-Z|a-z]*\\.(js|css|png|jpeg|jpg|ico)"
debug="INFO"

[[proxy_services]]

启用 use_container 时,请确保负载均衡器可以本地访问 docker 守护进程以及容器的网络。

根据容器标签配置代理服务以进行容器发现。

属性 描述
container_label_key 容器标签的键(当 use_container 设置为 true 时使用)。
container_label_value 容器标签的值(当 use_container 设置为 true 时使用)。
path 要匹配的 URL 路径。如果 URL 路径匹配,流量将被路由到该代理服务。
port 代理服务监听的端口。
use_container 如果上游是容器,则设置为 true。负载均衡器应该容器化,并且与容器在同一个网络中。当针对特定地址时,设置为 false
host 要负载均衡的特定地址。如果应用程序在不同的机器上,则非常有用。

示例

[[proxy_services]]
container_label_key="cbl.dev.nginx"
container_label_value="groupA"
path = "/"
port = 3101
use_container=false
host = "0.0.0.0"

[[proxy_services]]
container_label_key="cbl.dev.nginx"
container_label_value="groupC"
path="/"
use_container=false
port = 3102
host = "0.0.0.0"

[health_check]

配置健康检查和服务发现。

有关详细信息,请参阅 Pingora LoadBalancer 文档

属性 描述
health_check_frequency 执行健康检查的间隔(以毫秒为单位)。
update_frequency 执行服务发现的间隔(以毫秒为单位)。
parallel_health_check 设置为 false 以顺序执行健康检查。

示例

[health_check]
health_check_frequency=1000
update_frequency=1500
parallel_health_check=false

构建

cargo build

构建特定平台

cargo build --target=x86_64-unknown-linux-gnu

有关平台列表,请参阅 rustup target list

测试

cargo test -- --nocapture

运行

cargo run

开发者

依赖项

~39–53MB
~1M SLoC