1 个不稳定版本
0.1.1 | 2024 年 6 月 9 日 |
---|---|
0.1.0 |
|
15 在 #warp 中排名
每月 56 次下载
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 文档。
高级图
[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
开发者
- JP Mateo([email protected])
依赖项
~39–53MB
~1M SLoC