GitHub – mariadb-corporation/glb:Galera Load Balancer – 一个简单的 TCP 连接代理和负载平衡库
| Name | ||
|---|---|---|
|
|
2 years ago
|
|
|
|
13 years ago
|
|
|
|
11 years ago
|
|
|
|
last year
|
|
|
|
last year
|
|
|
|
13 years ago
|
|
|
|
2 years ago
|
|
|
|
17 years ago
|
|
|
|
16 years ago
|
|
|
|
6 years ago
|
|
|
|
4 years ago
|
|
|
|
4 years ago
|
|
|
|
17 years ago
|
|
|
|
12 years ago
|
|
|
|
2 years ago
|
|
|
|
17 years ago
|
|
|
|
12 years ago
|
|
|
|
12 years ago
|
|
|
|
4 years ago
|
|
|
|
12 years ago
|
|
|
|
last year
|
|
|
|
last year
|
|
存储库文件导航
(glbd 和 libglb:TCP 代理守护进程和负载均衡库合二为一)
版权所有 (C) 2007-2013 Codership Oy info@codership.com
邮件列表:https://groups.google.com/forum/?fromgroups=#!forum/codership-team
分发这个程序是希望它有用,但是 在法律允许的范围内,不作任何保证;甚至没有 适销性或特定用途适用性的默示保证。
有关许可证详细信息,请参阅复制。
glbd 是一个简单的 TCP 连接平衡器,具有可扩展性和 考虑到性能。它的灵感来自笔,但与笔不同的是 功能仅限于平衡通用 TCP 连接。
- 后端服务器列表可在运行时进行配置。
- 支持服务器“耗尽”,即不分配新连接 服务器,但不会杀死现有的服务器,等待它们结束 优雅。
- 可以使用 Linux 2.6 及更高版本提供的 epoll API 进行终极版 路由性能。
- glbd 是多线程的,因此它可以利用多个 CPU 内核。此外,如果您的 作系统不支持 epoll API,即使在 单核机器,因为它将按比例减少 poll() 开销,并且 可以将整体性能提高 2 倍或更多。
- 可选的看门狗模块可以监控目的地并调整路由表 自然而然。
libglb 是一个共享库,提供 0 努力连接平衡 任何通过重载使用标准 libc 调用的 Linux 应用程序 运行时的函数。没有其他程序功能受到影响,也没有 需要修改或重新编译程序。详情见下文。connect()
GLB(glbd 和 libglb)支持五种平衡“策略”:
a) 连接最少 – 新连接将定向到具有 最少连接(针对服务器“权重”进行了更正)。此策略是默认策略。
b) 循环 – 每个新连接都被路由到下一个目的地 在列表中按循环顺序排列。
c) single – 所有连接都路由到具有最高 重量可用。所有路由都将粘在该服务器上,直到它失败或 引入了具有严格更高权重的服务器。
d) random – 连接在服务器之间随机分布。
e) 源跟踪 – 源自同一地址的连接是 定向到同一服务器。有关此政策的详细信息,请参阅下文。
-T|--top选项在 GLB 0.9.2 中引入。它限制了所有平衡 策略到具有最高权重的目标子集。例如,如果有服务器 配置权重 1 和 2,所有平衡将仅在服务器之间进行 重量为 2,只要其中至少有一个可用。
可同时通过 glbd 打开的最大连接取决于 系统打开文件限制为 493,标准限制为 1024。如果需要,glbd 将尝试在有效 用户权限。对于非特权用户,通常为 4096,结果是 最多 2029 个连接。
在 Linux 上,可以检查打开文件限制,如有必要,可以检查 增加在 。ulimit -n/etc/security/limits.conf
请参阅该选项的输出。--help
运行时管理可以通过 FIFO 文件或网络套接字完成。 默认情况下,网络套接字不打开;必须侦听的地址和端口 用选项显式指定。-c
send server 规范,其中 weight 是守护进程的整数。连接按比例分布 到重量。默认权重为 1。权重为 0 表示耗尽服务器。 负权重表示完全删除服务器(与该服务器的所有连接 服务器立即关闭)。这适用于套接字连接和 FIFO 文件。<IP address>:<port>[:weight]
向守护进程发送命令。这仅适用于套接字连接 因为它意味着回应。getstat
(这里 glbd 在 127.0.0.1:4444 监听)
$ echo "192.168.0.1:3307:5" | nc -q 1 127.0.0.1 4444
OK
$ echo "192.168.0.2:3307:5" | nc -q 1 127.0.0.1 4444
OK
$ echo "getinfo" | nc -q 1 127.0.0.1 4444
Router:
----------------------------------------------------
Address : weight usage conns
192.168.0.1:3307 : 5.000 0.000 0
192.168.0.2:3307 : 5.000 0.000 0
----------------------------------------------------
Destinations: 2, total connections: 0
usage这是一些关于目的地配备多少人员的无量纲指标 带连接(相对于重量)。范围从 0(完全未使用)到 1.0 (很忙)。路由器尝试在所有目标上保持相等。usage
所有网络地址都以 格式指定。 根据上下文,某些部分可以是可选的,在这种情况下,它们可以是可选的 省略。例如,可以指定要侦听客户端连接的地址 要么作为或仅 .在后一种情况下,glbd 将监听 所有接口上的客户端连接。后端服务器可以指定为 。在这种情况下,将使用传入端口号 对于值,1 将用于值。IP|HOSTNAME:PORT:WEIGHTHOSTNAME:PORTPORTHOSTNAME1,HOSTNAME2,HOSTNAME3PORTWEIGHT
GLB 允许使用命令通过控制套接字查询原始性能统计信息。客户端可以使用这些数据来获取有用的信息, 例如,每次 poll() 调用的平均读取次数。getstat
$ echo "getstat" | nc -q 1 127.0.0.1 4444
in: 6930 out: 102728 recv: 109658 / 45 send: 109658 / 45 conns: 0 / 4 poll: 45 / 0 / 45 elapsed: 1.03428
统计行由以空格分隔的字段组成,以便于解析 脚本。添加了一些描述字段以帮助人类阅读。价值 字段都是偶数,如下所示:
2 – 在传入接口(客户端请求)上接收的字节数
4 – 从传入接口发送的字节数(服务器响应)
6 – 通过调用传递的字节数recv()
8 – 通话次数recv()
10 – 通过调用传递的字节数(应等于 p.6)send()
12 – 通话次数send()
14 – 创建的连接数
16 – 并发连接数
18 – 返回的可读文件描述符数poll()/epoll_wait()
20 – 返回的写入就绪文件描述符数poll()/epoll_wait()
22 – 触发次数poll()/epoll_wait()
24 – 自上次统计报告以来经过的时间(秒)
除 16 和 24 之外的所有值都是自上次报告以来累积的总数。 为了获得一些可变速率,必须将其除以经过的时间。 在 32 位架构上,这些值存储在 4 字节整数中,并且可以 经过足够长的时间后溢出,因此该系列中的第一个统计报告 可能需要丢弃。
GLB 具有简单的源跟踪功能,其中连接源自 从一个地址可以路由到同一目的地,随机选择 根据其重量在可用目的地之间。此类的一个限制 方案是,当目标列表发生变化时,目标选择新的 连接也会发生变化,而已建立的连接自然会保留 变。此外,当目标标记为不可用时,所有连接 将被路由到它将故障转移到另一个随机选择的目的地。 当原始目标可用时,将路由所有新连接 回到它。
换句话说,源跟踪应被视为尽力而为的功能,并且 将最适合短期连接。
(注意:这是一项正在进行的工作,功能和术语都不是 final。
如果没有看门狗,GLB 只能通过 能够建立与目标的 TCP 连接。对于大多数用例,TCP 连接性检查不足。例如,对于 HTTP 服务器,重要的是 能够为网页提供服务,并为 DBMS 服务器提供服务 – 能够执行查询。 Watchdog 模块通过后端实现对目的地的异步监控 用于检查特定服务的可用性。
看门狗通过一个选项启用。它的参数是一个字符串 包含后端 ID 字符串,后跟冒号和后端(可选) 配置选项。例如:-w|--watchdog
$ glbd -w exec:"mysql.sh -utest -ptestpass" -t 2 3306 192.168.0.1 192.168.0.2
这将初始化执行外部程序的后端。在这种情况下 它将执行脚本(可以在目录中找到 必须放在 ) 中,并提供参数以检查 MySQL 服务器 在 192.168.0.1 和 192.168.0.2(并行线程中)。通过服务器 address 添加到脚本中,后端将插入字符串作为第一个 参数,因此实际命令将是 在这种情况下执行如下所示:execmysql.shfiles/PATHexechost:port
"mysql.sh 192.168.0.1:3306 -utest -ptestpass"
检查间隔使用参数(小数秒,默认 1.0)设置。-i|--interval
如果目标可以提供有关集群其他成员的信息 如果提供了选项,则可用于自动填充看门狗目标列表。目前已知只有 MySQL/Galera 节点 为此,因此它是仅限 Galera 的选项。-D|--discover
请参阅目录。READMEfiles/
使用 libglb 需要设置 2 个环境变量:
LD_PRELOAD=<path-to-libglb>
和
GLB_OPTIONS='options string'
- 允许以与命令行相同的方式向 libglb 指定 GLB 选项 GLBD 的参数。然而,它在选项及其价值方面是有限的 不能包含空格和逗号,短选项不能 串联的(即 应该作为 )。解析错误和 libglb 不支持的选项(如 )将被静默忽略。 特别是,不能以这种方式指定看门狗选项。 (请参阅下面的环境变量)
-qri10-q -r -i 10-dGLB_WATCHDOG
$ LD_PRELOAD=src/.libs/libglb.so
GLB_OPTIONS="--random 3306 192.168.0.1 192.168.0.2 192.168.0.3"
mysql -uroot -prootpass -h127.0.0.1 -P3306
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 76
Server version: 5.5.28 Source distribution, wsrep_24dev.7.r3830
...
如果情况不够(例如,看门狗选项需要 指定)下面有一个附加环境变量的列表(其中 优先于 )。但请注意,除此以外,所有这些选项目前都被视为已弃用。GLB_OPTIONSGLB_OPTIONSGLB_WATCHDOG
GLB_WATCHDOG=<watchdog specification>
解释方式与参数相同。--watchdog
GLB_TARGETS=H1[:P1[:W1]],[H2[:P2[:W2]],...]
是目标服务器的逗号分隔列表,其中客户端 必须分布式连接。
GLB_BIND=<addr>
其中的解释方式与 glbd 的参数相同。 每当应用程序尝试启动与此地址的连接时, 请求将被拦截,并建立与 根据平衡规则从列表中的服务器。<addr>LISTEN_ADDRGLB_TARGETS
GLB_POLICY=single|random|source
默认的 libglb 平衡策略是“round-robin”、“single”、“random”和 “源跟踪”策略可以使用变量指定。GLB_POLICY
(在这种情况下,所有来自 此客户端将路由到同一随机目标,并故障转移到 如果主目标发生故障,则为另一个。因此,客户端-服务器亲和性是 实现,但是来自许多客户端的负载将分散到所有可用的客户端上 目的地。GLB_POLICY=source
GLB_CONTROL=[IP:]PORT
解释方式与 glbd 的参数相同。申请将 在指定地址打开套接字以侦听控制命令。由于 到图书馆功能仅限于通话,没有流量 statistics 或连接计数,因此命令是 noop,并且只打印出路由表。--controlconnect()"getstat""getinfo"
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性
GLB下载网 - GLB/GLTF模型与格式资源免费下载,支持在线浏览与转换 » Galera Load Balancer – 一个简单的 TCP 连接代理和负载平衡库
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载要提取码
- 分享过期和重复下载怎么办
- 模型和平台不兼容怎么办