如何将ALB作为NLB目标组以实现Bitbucket的SSH克隆?
关于Bitbucket数据中心SSH克隆的负载均衡配置方案
架构可行性判断
你提到的「将ALB配置为NLB的目标组」方案不可行。NLB是四层(TCP/UDP)负载均衡器,其目标组仅支持直接指向后端实例、IP地址或Lambda函数,无法将七层负载均衡器(ALB)作为目标。这种嵌套负载均衡的架构不符合AWS负载均衡器的设计逻辑,无法正常转发流量。
正确的Bitbucket SSH克隆实现方式
结合你已完成的ALB配置,推荐采用「ALB处理HTTP/HTTPS流量 + NLB单独处理SSH流量」的分离架构,具体步骤如下:
1. 创建并配置NLB处理SSH流量
- 新建NLB,协议选择TCP,端口设置为Bitbucket SSH服务的监听端口(默认22,也可自定义)。
- 配置目标组:
- 目标类型选择「实例」或「IP地址」,添加所有Bitbucket数据中心节点。
- 目标端口设置为Bitbucket节点上SSH服务的实际监听端口(默认22)。
- 健康检查选择TCP协议,检查端口22的可达性,确保仅正常运行的节点会被分配流量。
2. 配置Bitbucket集群与安全组
- 确保所有Bitbucket节点的SSH服务正常运行,集群内的SSH密钥配置保持一致(Bitbucket数据中心会共享SSH认证信息)。
- 在Bitbucket管理后台的「服务器设置」中,确认SSH端口配置正确,可将
plugin.bitbucket-git.hostname设置为NLB的域名,这样系统生成的SSH克隆链接会自动使用NLB地址。 - 安全组配置:
- NLB的安全组允许外部客户端访问SSH端口(22或自定义端口)。
- Bitbucket节点的安全组允许NLB的安全组访问自身的22端口。
3. DNS与客户端使用
- 为NLB分配独立的域名(如
ssh.your-bitbucket-domain.com),与ALB使用的Web域名(如your-bitbucket-domain.com)区分开。 - 用户克隆仓库时,使用NLB域名的SSH链接,例如:
若使用默认22端口,可省略端口号。git clone ssh://git@ssh.your-bitbucket-domain.com/project/repo.git
关键注意事项
- 不要尝试在NLB后挂载ALB,两者层级不同,无法兼容。
- 保持Bitbucket集群内所有节点的SSH配置同步,避免部分节点无法响应SSH请求。
- 定期检查NLB的目标组健康状态,确保流量仅转发到正常节点。
内容的提问来源于stack exchange,提问作者Ramesh Thiyagarajan
相关产品推荐
相关产品推荐

