如何使用Artifactory配置HAProxy ?

JFrog支持
2023-01-22十一10

JFrog已经为Artifactory的多种用途提供了广泛的反向代理支持。该应用程序甚至有一个内置的反向代理配置生成器.尽管如此,如果您想在Artifactory中使用HAProxy,下面的说明和Artifactory Docker存储库配置示例(一个用于单个实例,另一个用于两个节点的集群)可能会对您的工作有所帮助。

当你配置一个反向代理与Artifactory合作码头工人注册表,你可以从以下两个选项中选择一个:

  1. 端口方法
  2. 子域法

在下面的配置中,尽管我们将向您展示如何使用自签名SSL证书,注意你也可以使用a签署的公共受信任CA证书

  1. 首先,创建一个自签名证书您的HAProxy,如所述在这里(Ubuntu)。请注意:只有生成证书和私钥步骤。此外,在创建证书时,普通的名字是最重要的组件,如FQDN您的服务器必须匹配DNS记录HAProxy端点,它将在您的Artifactory服务器的前面。换句话说,如果您的公共服务器名称为artifactory1,然后artifactory1必须是HAProxy端点的DNS名称。

  1. 复制代码并将下面的代码粘贴到/etc/haproxy/haproxy.cfg文件。请注意:这是一个例子对于Docker虚拟存储库,使用Port方法对单个Artifactory实例:

全球

. log local0 . log
chroot /var/lib/haproxy
maxconn 4096
haproxy用户
haproxy集团
守护进程
tune.ssl.default-dh-param 2048
Stats socket /run/haproxy/admin。袜子模式660级管理员

违约

日志全球
http方式
选择httplog
选择dontlognull
选择redispatch
选择forwardfor
选择http-server-close
maxconn 4000
超时连接5000
超时客户端50000
超时服务器50000
错误文件400 /etc/haproxy/errors/400.http
错误文件403 /etc/haproxy/errors/403.http
错误文件408 /etc/haproxy/errors/408.http
错误文件500 /etc/haproxy/errors/500.http
错误文件502 /etc/haproxy/errors/502.http
错误文件503 /etc/haproxy/errors/503.http
错误文件504 /etc/haproxy/errors/504.http

前端正常

结合*:80
绑定*:443 SSL CRT /etc/ssl/certs/server.bundle.pem
http方式
选择forwardfor
reqirep ^([^ :]*) / v2(. *)美元1 / artifactory / api /码头工人/码头工人/ v22
reqadd X-Forwarded-Proto: https if {ssl_fc}
选项转发报头X-Real-IP
default_backend正常

请注意:如果您只需要访问docker-dev-local2,然后跳过以下框内部分。但是,在配置docker-virtual存储库,您可以选择docker-dev-local2作为你的默认部署存储库存储图像:

bind *: ssl crt /etc/ssl/certs/server.bundle.pem
http方式
选择forwardfor
选项转发报头X-Real-IP
reqirep ^([^ :]*) / v2(. *)美元1 / artifactory / api /码头工人/码头工人/ v22
reqadd X-Forwarded-Proto: https if {ssl_fc}
default_backend正常

后端正常

http方式
server :<端口>

请注意:下面的代码片段是一个基线对于一个HA集群,以及码头工人设置。使用它来启用HAProxy平衡你的Artifactory节点:

# haproxy服务器配置
# 1.0版本
#历史
# —————————————————————————
#此配置启用的功能
# HA配置
#端口80,443 Artifactory GUI/API

#使用端口来区分artifactory docker存储库
docker-virtual (v2)将被重定向到docker-dev-local。
# docker-prod-local (v1);docker-prod-local2 (v2)
# docker-dev-local (v1);docker-dev-local2 (v2)

使用<…>包含的必要信息编辑此文件
# 1。证书和密钥
# 2。artifactory-host
# 3如果需要更换端口号
# —————————————————————————-

全球

日志127.0.0.1 local0 . Log
chroot /var/lib/haproxy
maxconn 4096
haproxy用户
haproxy集团
守护进程
tune.ssl.default-dh-param 2048
Stats socket /run/haproxy/admin。袜子模式660级管理员

违约

日志全球
http方式
选择httplog
选择dontlognull
选择redispatch
选择forwardfor
选择http-server-close
maxconn 4000
超时连接5000
超时客户端50000
超时服务器50000
错误文件400 /etc/haproxy/errors/400.http
错误文件403 /etc/haproxy/errors/403.http
错误文件408 /etc/haproxy/errors/408.http
错误文件500 /etc/haproxy/errors/500.http
错误文件502 /etc/haproxy/errors/502.http
错误文件503 /etc/haproxy/errors/503.http
错误文件504 /etc/haproxy/errors/504.http

前端正常

结合*:80
绑定*:443 SSL CRT
http方式
选择forwardfor
Reqirep ^([^:]*) /v2(.*$) 1 /artifactory/api/docker/docker-virtual/v22
reqadd X-Forwarded-Proto: https if {ssl_fc}
选项转发报头X-Real-IP
default_backend正常

请注意:如果您只需要访问docker-dev-local2,然后跳过以下框内部分。但是,在配置docker-virtual存储库,您可以选择docker-dev-local2作为你的默认部署存储库来存储图像。

绑定*:5000 SSL CRT
http方式
选择forwardfor
选项转发报头X-Real-IP
Reqirep ^([^:]*) /v2(.*$) 1 /artifactory/api/docker/docker-remote/v22
reqadd X-Forwarded-Proto: https if {ssl_fc}
default_backend正常

请注意:如果您只需要访问docker-dev-local2,然后跳过以下框内部分。

绑定*:5001 SSL CRT
http方式
选择forwardfor
选项转发报头X-Real-IP
Reqirep ^([^:]*) /v1(.*$) 1 /artifactory/api/docker/docker-prod-local/v12 . Reqirep ^([^:]*) /v1(.*$
Reqirep ^([^:]*) /v2(.*$) 1 /artifactory/api/docker/docker-prod-local2/v22 . Reqirep ^([^:]*) /v2(.*$
reqadd X-Forwarded-Proto: https if {ssl_fc}
default_backend正常

请注意:如果您只需要访问docker-dev-local2,然后跳过以下框内部分。但是,在配置docker-virtual存储库,您可以选择docker-dev-local2作为你的默认部署存储库来存储图像。

绑定*:5002 SSL CRT
http方式
选择forwardfor
选项转发报头X-Real-IP
Reqirep ^([^:]*) /v1(.*$) 1 /artifactory/api/docker/docker-dev-local/v12
Reqirep ^([^:]*) /v2(.*$) 1 /artifactory/api/docker/docker-dev-local2/v22
reqadd X-Forwarded-Proto: https if {ssl_fc}
default_backend正常
# Artifactory非HA配置
#即服务器artifactory 198.168.1.206:8081

后端正常

http方式
服务器<人工制造-主机> <人工制造-主机IP地址>:<人工制造-主机端口>

# Artifactory HA配置
#使用默认故障切换间隔- rise = 2;跌倒=3 3;间隔- 2秒
#后台正常
#模式HTTP
# balance roundrobin
# option httpchk OPTIONS /
# option forwardfor
#选项http-server-close
# appsession JSESSIONID len 52 timeout 3h
# server <人工制造-主机-ha1> <人工制造-主机IP地址>:<人工制造-主机端口>
# server <人工制造-主机-ha2> <人工制造-主机IP地址>:<人工制造-主机端口>

  1. 重新启动HAProxy:$ sudo /etc/init.d / haproxy重启
  2. 将以下内容添加到设置文件:< Machine_IP > < Public_Server_Name >
    请注意
    :在生产环境中,使用您的DNS配置,因为通常使用hosts文件只有用于本地测试。
  3. 有关如何使用的信息自签名证书与你的码头工人的客户可以找到在这里.如果您希望避免使用任何证书,请将以下内容添加到您的/etc/default/docker文件,它将配置Docker使用不安全的注册表

DOCKER_OPTS = " -insecure-registry< Public_Server_Name >: < Repository_Port >

  1. 重新启动码头工人:$sudo systemctl daemon-reload

$sudo systemctl restart docker

请注意systemctl美元在上面的例子中使用了Ubuntu 16.04(使用systemd)。

您现在应该能够执行了码头工人美元登录而且拉/推Artifactory。

关于如何开始使用Artifactory Docker注册表的更多信息在这里