如何在AWS中设置人工高可用性集群?

JFrog支持
2023-01-22十一10

如果您计划在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 role方法连接到S3。

我们建议在此设置中使用AWS中的Classic负载平衡器类型。

设置反向代理:

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

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

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

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

*.myart.server.com -> ELB端点
myart.server.com -> 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;
如果($http_x_forwarded_proto = ") {
设置$http_x_forwarded_proto $scheme;
}
特定于应用程序的日志
## access_log /var/log/nginx/myart.server.com- access_log定时;
## error_log /var/log/nginx/myart.server.com-error.log
重写^/$ https://myart.server.com/artifactory/webapp/ redirect;
重写^ / artifactory ? (/ webapp) ?$ https://myart.server.com/artifactory/webapp/ redirect;
重写^ / (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 http://localhost: 8081 / artifactory / 1美元;
}
proxy_pass http://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;
proxy_set_header $http_host;
$proxy_add_x_forwarded_for;
}
}

AWS ELB:

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

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

在人工HA集群中使用S3桶的binarstore .xml示例:

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





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

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


< maxCacheSize > 100000000000 < / maxCacheSize > < !缓存的最大大小(以字节为单位):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 >