如何在AWS中搭建Artifactory HA集群?

JFrog支持
2018-09-16 08:34

如果您计划在AWS中安装Artifactory,那么您可以考虑使用我们的SAAS服务它在AWS/GCP/Microsoft Azure中提供。如果你选择自己设置Artifactory,那么下面是一个在AWS中设置Artifactory HA集群的示例:

用户添加图片

手工安装和设置:

以下我们的维基页面有安装Artifactory的说明。为了将Artifactory节点配置为HA集群,请阅读以下内容wiki上的说明.我们建议使用Amazon RDS对于数据库。Artifactory已经使用以下DB类型进行了测试;PostgreSQL, MySQL, MSSQL, Oracle。在这里是设置Artifactory要使用的数据库的说明。S3将被设置为文件存储和我们的维基有S3配置的示例。请注意,目前您可以通过在binarstore .xml文件中提供身份和凭据来连接到S3,也可以使用IAM角色方法连接到S3。

我们建议使用AWS中的经典负载均衡器类型进行此设置。

设置反向代理:

如果您计划在Artifactory中使用docker存储库,则需要为每个Artifactory节点安装反向代理服务器。ELB请求将被转发到Artifactory节点前面的反向代理服务器,该服务器将重写规则来处理docker客户端请求和Artifactory web UI请求。反向代理服务器的配置可以使用人工反向代理生成器.你可以生成Apache或NGINX配置,这取决于你已经安装了什么。为了生成配置,请直接绕过负载均衡器访问Artifactory节点。由于ELB将处理SSL,因此反向代理可以配置为HTTP端点。下面是一个将通过ELB访问的Artifactory节点的Nginx配置示例:

在下面的例子中,如果你注意到,我们已经为标题硬编码了一些值,并突出显示了这些条目。Nginx配置中的“server_name”将与ELB的CNAME相同,Nginx将在80端口监听。我们还硬编码了一些头,以便从Nginx到客户端的响应URL将与请求URL相同。请注意,在这个例子中,我们已经考虑ELB正在处理HTTPS,并将请求转发给Nginx, Nginx正在监听端口80。

在这个Nginx配置示例中,我们考虑将“myart.server.com”作为映射到ELB的CNAME。请将此值替换为您正在使用的CNAME。

这个Nginx配置配置为使用子域方法访问docker存储库。使用子域方法的要求是有一个通配符CNAME记录和CNAME的通配符SSL证书。SSL证书应该对通配符CNAME和常规CNAME都有效,例如(* .myart.server.com而且myart.server.com).通配符CNAME将用于docker请求,常规CNAME将用于所有其他请求。SSL证书需要安装在AWS ELB中,下面是需要在您这边创建的CNAME记录:

*.myart.server.com -> ELB端点
> ELB端点


Terraform部署,将“certificate_domain”设置为“myart.server.com”,将“artifactory_server_name”设置为“artifactory”。例如,如果您想访问artifactory,那么您将使用https://artifactory.myart.server.com。

###########################################################
这个配置是由JFrog Artifactory生成的
###########################################################

##服务器配置
服务器{
80;
server_name ~(? <回购>。+)。myart.server.com myart.server.com
If ($http_x_forwarded_proto = ") {
设置$http_x_forwarded_proto $scheme;
##应用程序特定的日志
access_log /var/log/nginx
## error_log /var/log/nginx/myart.server.com
重写^/$ https://myart.server.com/ artifactory / webapp /重定向;
重写^ / artifactory ? (/ webapp) ?美元,https://myart.server.com/ artifactory / webapp /重定向;
重写^ / (v1 | v2) / (. *) / artifactory / api /码头工人/ docker-local / 1 / 2美元;
chunked_transfer_encoding;
client_max_body_size 0;
位置/工厂/ {
proxy_read_timeout 900;
proxy_pass_header服务器;
proxy_cookie_path ~ * ^ /。* /;
If ($request_uri ~ ^/artifactory/(.*)$) {
proxy_pass https://localhost: 8081 / artifactory / 1美元;
proxy_pass https://localhost: 8081 / artifactory /;
proxy_set_header x - artifactory - overrides - base - url https://$host/artifactory;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header X-Forwarded-Proto https;
主机$http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

AWS ELB:

负载均衡器将需要粘性会话来持久化用户对Artifactory UI的访问。的本文介绍了在AWS ELB中配置会话保持的方法。为了在ELB中为Artifactory节点配置健康检查,请查看以下内容文章.以下AWS页面为ELB设置域名的说明。

自定义基础URL在Artifactory中需要设置为https://CNAME/artifactory.URL中的“CNAME”将是映射到AWS ELB的自定义域名。请注意,如果您已配置artifactory以ROOT身份运行,则自定义基URL中的上下文“artifactory”将是不需要的。

对于Artifactory HA集群,使用S3桶的binarstore .xml示例:

<!—S3二进制提供程序配置—> . zip
<配置version = " 2 " >
<链>




.
> < /供应商
< / sub-provider >

> < /供应商
> < /供应商
< / >链


< maxCacheSize > 100000000000 < / maxCacheSize > < !—cache的最大大小(单位:字节):100gig - >
缓存< cacheProviderDir > < / cacheProviderDir >
> < /供应商


< readBehavior > crossNetworkStrategy < / readBehavior >
< writeBehavior > crossNetworkStrategy < / writeBehavior >
<冗余> 1 > < /冗余
.
> < /供应商


当地<区> < /区>
> < /供应商


10 < maxTrys > < / maxTrys >
> < /供应商


<凭证> < /东西证书>
<标识> < / >身份的东西
端点> < s3.amazonaws.com > < /端点
< bucketName > mybucket < / bucketName >
真正< httpsOnly > < / httpsOnly >
<属性名= " s3service。disable-dns-buckets " value = " true " > < /属性>
<属性名= " httpclient。最大连接“价值= " 300 " > < /属性>
> < /供应商

.
<区>远程> < /区
> < /供应商

< / config >