GCP 负载均衡器下的 Gitlab Runner
Gitlab Runner under GCP Load Balancer
目前我有一个负载均衡器,它运行一个 Compute Engine Instance Group
,它至少有 1 个服务器,最多有 5 个服务器。
这是 运行 自动缩放,并使用预构建的 ubuntu 模板和所需的所有基本内容。
当一个实例启动时,它会将运行器登录到 GitLab 项目中,然后触发作业将实例更新到最新的代码副本。
这很好,效果很好。
当我对 git 分支进行更改并推送更改时,问题就出现了,它似乎只被已加载的随机 5 个实例之一拾取。
我的印象是 GitLab 会推送给所有记录的跑步者,但事实并非如此。
我在这里看到了显示多个跑步者的答案,但在单个服务器上,我还没有遇到我的特殊情况。
有人遇到过这个吗?我会假设这是一个非常正常的情况,奇怪的是它不只是工作。
对于 GitLab 中 运行 的每个作业,只有 1 运行 人收到该作业。该机制基于 PULL —— 运行 人员不断询问 GitLab 是否有 运行 可用的工作。 GitLab 从不启动与 运行ners 的通信。
因此,您的负载平衡器规则不会影响哪个 运行ner 接收作业,并且在跨服务器分配作业时不存在“公平”。只要运行者能够接受它们(根据 config.toml 中的并发设置),运行者就会每隔几秒继续请求工作,GitLab 将在 first-come、first-served 上分发它们基础。
如果将并发设置为 1 并启动多个作业,您应该会看到多个服务器接管作业。
目前我有一个负载均衡器,它运行一个 Compute Engine Instance Group
,它至少有 1 个服务器,最多有 5 个服务器。
这是 运行 自动缩放,并使用预构建的 ubuntu 模板和所需的所有基本内容。
当一个实例启动时,它会将运行器登录到 GitLab 项目中,然后触发作业将实例更新到最新的代码副本。
这很好,效果很好。 当我对 git 分支进行更改并推送更改时,问题就出现了,它似乎只被已加载的随机 5 个实例之一拾取。
我的印象是 GitLab 会推送给所有记录的跑步者,但事实并非如此。
我在这里看到了显示多个跑步者的答案,但在单个服务器上,我还没有遇到我的特殊情况。
有人遇到过这个吗?我会假设这是一个非常正常的情况,奇怪的是它不只是工作。
对于 GitLab 中 运行 的每个作业,只有 1 运行 人收到该作业。该机制基于 PULL —— 运行 人员不断询问 GitLab 是否有 运行 可用的工作。 GitLab 从不启动与 运行ners 的通信。
因此,您的负载平衡器规则不会影响哪个 运行ner 接收作业,并且在跨服务器分配作业时不存在“公平”。只要运行者能够接受它们(根据 config.toml 中的并发设置),运行者就会每隔几秒继续请求工作,GitLab 将在 first-come、first-served 上分发它们基础。
如果将并发设置为 1 并启动多个作业,您应该会看到多个服务器接管作业。