安装快速入门指南- Docker

罗兰杨
2022-03-21 07:35

你会得到什么?

用户添加图片

本指南将概述如何通过docker安装为生产就绪环境安装Artifactory 7 HA。在本指南中,我们将逐步设置Postgres外部数据库、多个人工节点和NGINX反向代理(也可以作为负载均衡器)。每个Artifactory节点至少需要一个服务器。注意,每个Artifactory节点都需要一个许可证。我们还建议准备一种云桶存储(例如S3)。充分理解基于linux的操作系统和docker将需要充分掌握整个指南的材料。

的必备条件

最小Docker引擎v18。

对于docker安装,设置挂载点非常重要。这将覆盖Artifactory主页,并允许配置持久化。

支持docker引擎v18的操作系统
https://docs.docker.com/engine/install/

以下端口需要在内部(集装箱内)使用:8081、8082、8040、8045、8048、9092、8070、8086、8046、8047、8049、8091、8061、8062。8081和8082还需要在节点和您的LB/反向代理之间可以从外部访问。这两个端口将在集装箱启动时暴露在下面。它们不需要暴露给最终用户。其他端口只需要在容器内可用,不被其他进程占用——其中一些端口可以通过系统进行配置。Yaml,如果它不能提供。

环境的细节

安装Artifactory前,请参考系统需求有关支持的平台、支持的浏览器和其他需求的信息。我们建议使用易于扩展的机器,以防Artifactory使用量增加。一般来说,一台拥有4核CPU、每个节点8GB RAM的机器就足够了。
查看更多节点硬件细节//m.si-fil.com/confluence/display/JFROG/System+Requirements

Pre-setup

1.为您的Artifactory主页创建一个目录。在我的例子中,我选择创建一个' jfrog '目录:

/home/loreny/jfrog

2.在jfrog目录下,创建目录树:

$ mkdir -p artifactory/var/etc/
$ mkdir -p artifactory/var/bootstrap/artifactory/tomcat/lib

3.创建system.yaml

$ touch jfrog/artifactory/var/etc/system.yaml

4.该文件涵盖了您将为Artifactory和我们的其他产品调整的大多数配置。hth华体会最新官方网站我们将在下面继续编辑。检索主机的IP,并给它一个唯一的ID。如果不设置这些,其他节点将无法到达Artifactory。这将进入系统。Yaml是这样的:

共享:
extraJavaOpts: "-Xms512m -Xmx4g"
节点:
知识产权:10.150.0.222
id: nodeone
haEnabled:真
taskAffinity:任何

确保保持YAML间距一致!我们建议使用2或4个空格缩进,但要确保始终一致。
5.为整个目录提供适当的权限;默认情况下,这意味着所有权属于1030用户(默认的artifactory id)。您不需要显式地创建id为1030的用户来运行chown。您需要拥有sudo级别的权限才能成功运行chown。

$ chown -R 1030:1030 jfrog/

数据库

我们强烈建议与Artifactory一起使用外部DB——内置的derby数据库性能会随着您上传更多工件而下降,并且不支持Artifactory HA。我们建议将您的数据库安装在一个独立的服务器上,远离您的Artifactory实例,但在最小的延迟(相同的局域网)内。在这个快速入门指南中,我们将介绍Postgres的设置。

PostgreSQL支持:

  • 9.5 (EOL)
  • 9.6 (EOL很快)
  • 10.倍
  • 11.倍
  • 12.倍
  • 13.倍

外部Postgres设置:

1.登录DB,执行如下SQL语句:创建密码为“PassJFrog!453”的用户
创建UTF8编码的数据库
授予artuser数据库artifactory的所有权限;
2.下载与你的PostgreSQL版本相对应的JDBC驱动程序PostgreSQL JDBC驱动程序下载站点将下载的jar文件复制到artifactory/var/bootstrap/artifactory/tomcat/lib目录下。确保您的驱动程序具有所有用户的读权限。
3.调整系统中的数据库连接明细。Yaml配置文件。为了便于演示,可以在端口5432上的10.150.0.223访问我的DB。
共享:类型:postgresql
司机:org.postgresql.Driver
url: jdbc: postgresql: / / 10.150.0.223:5432 / artifactory
用户名:artus
密码:PassJFrog !453
4.从Artifactory服务器启用PostgreSQL连接:
/data/pg_hba.conf中增加如下一行。主机artifactory artifactory md5将以下行添加到(如果已经存在,则更新它)< postgres_mount > /数据/ postgresql.conf
listen_addresses = ' * '
Artifactory支持多种数据库类型,包括mysql, oracle, mariaDB。你可以找到的链接其他支持的数据库下面是术语表。

我们建议为数据库提供相当大的存储空间,即使它只存储元数据。它应该至少是您预期文件存储大小的2/10。

有关更多数据库建议,请参见管理Artifactory数据库的最佳实践

文件存储(S3/Local):

Artifactory将二进制文件与数据库分开存储。默认情况下,这是在与Artifactory安装相同的文件系统上完成的。为了便于伸缩,我们建议设置一个s3桶,并利用它进行无限伸缩。文件存储是通过文件binarstore .xml来配置的,它在下面:

artifactory / var / etc / artifactory / binarystore.xml。

要将其配置为使用S3,您需要使用以下模板并填写详细信息:

<配置version = " 2 " >
<链模板= " cluster-s3-storage-v3 " / >

端点> < s3.amazonaws.com > < /端点
< bucketName > bucketName < / bucketName >
<路径> pathPrefix > < /路径
<地区> s3Region > < /地区
<标识> yourIdentity > < /身份
<凭证> yourCredentials < /证书>
真正< usePresigning > < / usePresigning >
600年< signatureExpirySeconds > < / signatureExpirySeconds >
> < /供应商
< / config >

配置文件存储- JFrog
我们也为其他云提供商提供了其他配置模板:
配置文件存储- JFrog

当地的

如果你想使用本地磁盘存储而不是S3,你可以在binarstore .xml中使用:

<配置version = " 2 " >
<链模板= "集群文件系统" / >
< / config >

下载位置

这需要访问https://releases.jfrog.io

$ docker pull releases-docker.jfrog.io/jfrog/artifactory-pro:latest

安装步骤

现在我们已经配置好了系统。Yaml,我们可以启动第一个节点。作为参考,这里是我的(基本)完整系统。Yaml看起来是这样的:

共享:
数据库:
类型:postgresql
司机:org.postgresql.Driver
url: jdbc: postgresql: / / 10.150.0.223:5432 / artifactory
用户名:artus
密码:PassJFrog !453
节点:
知识产权:10.150.0.222
id: nodeone
haEnabled:真
taskAffinity:任何

1.开始Artifactory:

$ docker run——name artifactory -v /home/ lony /jfrog/artifactory/var/:/var/opt/jfrog/artifactory -d -p 8081:8081 -p 8082:8082 release -docker.jfrog.io/jfrog/artifactory-pro:最新版本

2.通过检查以下消息的日志来检查artifactory启动:

$ docker logs -f artifactory
2021-09-20T20:44:34.610Z [jfrou] [INFO] [30a6b3f102dc9b52] [local_topology.]Go:270][主要]-
###############################################################
###所有服务在86.544秒内成功启动
###############################################################
3.一旦Artifactory启动,UI应该可以在端口8082上访问。通过运行以下REST API检查Artifactory是否处于HA模式,并在插件数组中查找“HA”:$ curl localhost:8082/artifactory/api/system/version -u admin:密码

"version": "7.25.7",
"revision": "72507900",
"addons": ["ha",…

4.新节点要加入集群,这些节点必须连接到相同的数据库并具有相同的主密钥。要安装其他节点,您需要使用相同的系统。yaml(修改节点IP和ID)和binarstore .xml。除了需要复制master.key之外,安装过程是相同的。如果您想提前生成自己的密钥,可以这样做按照这里的指南来做.该密钥将在第一个节点第一次启动时为您生成。复制母版。从第一个节点(artifactory/var/etc/security/master.key)到其他节点的密钥,位于相同的文件系统位置。然后,您可以使用相同的docker run命令启动其他节点。注意,每个Artifactory节点都需要一个许可证。

SSL

如果需要HTTPS,可以在Artifactory前面设置反向代理。反向代理配置可以在Artifactory UI中通过转到管理- > Artifactory - > HTTP设置。在这个例子中,我们将使用NGINX。这将需要复制到你的NGINX配置。你需要有自己的SSL证书和密钥,并将它们放在NGINX配置中指定的正确目录中。下面是一个示例配置供参考。下面的配置假设你在与Artifactory相同的机器上安装NGINX;请根据需要调整主机。

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

在配置中设置HTTPS时添加SSL项
TLSv1.1 TLSv1.2 TLSv1.3;
ssl_certificate /etc/ssl/private/server.key;
ssl_certificate_key /etc/ssl/private/server.crt;
ssl_session_cache共享:SSL: 1米;
ssl_prefer_server_ciphers;
##服务器配置
服务器{
监听443 ssl;
80;
server_name ~ \(? <回购>。+)。artifactory_host artifactory_host;

If ($http_x_forwarded_proto = ") {
设置$http_x_forwarded_proto $scheme;

##应用程序特定的日志
## access_log /var/log/nginx/artifactory_host-access.log计时;
##错误日志/var/log/nginx/artifactory_host-error.log;
重写^/$ /ui/ redirect;
重写^/ui$ /ui/重定向;
重写^ / (v1 | v2) / (. *) / artifactory / api /码头工人/回购美元/ 1 / 2美元;
chunked_transfer_encoding;
client_max_body_size 0;
位置/ {
proxy_read_timeout 2400年代;
proxy_pass_header服务器;
proxy_cookie_path ~ * ^ /。* /;
proxy_buffer_size 128 k;
Proxy_buffers 40 128k;
proxy_busy_buffers_size 128 k;
proxy_pass http://localhost: 8082;
proxy_set_header x - jfrog - overrides - base - url $http_x_forwarded_proto://$host:$server_port;
proxy_set_header x - forwarded port $server_port;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto
主机$http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

位置~ ^/artifactory/ {
proxy_pass http://localhost: 8081;


反向代理也可以配置为处理节点之间的负载均衡流量。在NGINX的例子中,你可以在顶部添加这段代码:

上游工艺品{
服务器10.150.0.222:8082;
服务器<附加节点IP>:8082;

上游手工-直接{
服务器10.150.0.222:8081;
服务器<附加节点IP>:8081;

然后,修改proxy_pass行为:

proxy_pass http://localhost: 8082;→proxy_pass http://artifactory;
proxy_pass http://localhost: 8081;→proxy_pass http://artifactory-direct;

否则,您可以使用专用的负载均衡器来处理流量均衡。

请注意,为了支持docker请求,您需要一个反向代理或负载均衡器来处理请求重写。此外,如果你计划使用负载均衡器终止SSL,以及反向代理,你需要将以下头文件硬编码到负载均衡器的详细信息中:

NGINX的:

proxy_set_header X-JFrog-Override-Base-Url https://:;
proxy_set_header X-Forwarded-Port
proxy_set_header X-Forwarded-Proto https

升级步骤

1.使用本地Docker命令停止并删除Artifactory容器。
例如:码头停止artifactory
Docker rm -f artifactory
2.设置当前Artifactory主目录的路径,并确保正确设置了目录权限。export ARTIFACTORY_HOME=<挂载路径到当前Artifactory数据目录>
chown -R 1030:1030 $ARTIFACTORY_HOME
3.启动Artifactory容器docker run——name artifactory- v $ARTIFACTORY_HOME:/var/opt/jfrog/artifactory -d -p 8081:8081 -p 8082:8082 docker.bintray.io/jfrog/artifactory-:最新的4.对其他节点重复此步骤。

调优Artifactory(可选)

我们有以下可选的调优部分来优化Artifactory以适应更大的负载——当Artifactory实例承受更大的负载时,记住这些参数是个好主意。

如何对Artifactory进行重载调优?

1.javaOpts(堆大小)。Yaml -我们建议至少设置这个:共享:
extraJavaOpts: "-Xms512m -Xmx4g"
2.在system.yaml中定制数据库连接:artifactory:
数据库:
maxOpenConnections: 200

访问:
数据库:
maxOpenConnections: 200

元数据:
数据库:
maxOpenConnections: 200

根据经验,我们需要(最多)一些DB连接,基于以下公式:
总连接数=(节点数)* ((artifact .database. database.)maxOpenConnections * 2) + access.database.maxOpenConnections + metadata.database.maxOpenConnections) + 50

3.优化system.yaml中的Tomcat线程:

artifactory:
tomcat:
连接器:
maxThreads: 400

访问:
tomcat:
连接器:
maxThreads: 100

当修改Access maxThreads时,需要更新$JFROG_HOME/artifactory/var/etc/artifactory/artifactory.system。属性文件包含:

artifactory.access.client.max.connections =

4.调优同一文件中的异步线程池。注意corePoolSize不能超过CPU核数的8倍:

artifact .async. corepoolsize = 32
artifactory.async.poolMaxQueueSize = 100000

要开始使用该产品,您可以使用下面的指南:

快速入门指南:JFrog自托管
快速入门指南:开始
快速入门指南:Maven和Gradle
快速入门指南:npm

术语表

—系统要求://m.si-fil.com/confluence/display/JFROG/System+Requirements
—外部DB +支持的DB//m.si-fil.com/confluence/display/JFROG/Configuring+the+Database
—Postgresql DB://m.si-fil.com/confluence/display/JFROG/PostgreSQL
Filestore://m.si-fil.com/confluence/display/JFROG/Configuring+the+Filestore
—HTTPS设置//m.si-fil.com/confluence/display/JFROG/HTTP+Settings
- Nginx安装https://www.nginx.com/2022世界杯阿根廷预选赛赛程resources/wiki/start/topics/tutorials/install/
JFrog下载://m.si-fil.com/download-jfrog-platform/
—S3 Cluster Binary Provider://m.si-fil.com/confluence/display/JFROG/Configuring+the+Filestore#ConfiguringtheFilestore-S3ClusterBinaryProvider
-通用集群二进制提供程序:
//m.si-fil.com/confluence/display/JFROG/Configuring+the+Filestore#ConfiguringtheFilestore-ConfiguringShardingforHACluster
—Docker安装://m.si-fil.com/confluence/display/JFROG/Installing+Artifactory#InstallingArtifactory-DockerInstallation
//m.si-fil.com/confluence/display/JFROG/Installing+Artifactory#InstallingArtifactory-LinuxArchive/Docker/RPM/Debian/WindowsHAInstallation
—Docker升级:
//m.si-fil.com/confluence/display/JFROG/Upgrading+Artifactory#UpgradingArtifactory-DockerUpgradedockerupgr7
—HA升级://m.si-fil.com/confluence/display/JFROG/Upgrading+Artifactory#UpgradingArtifactory-UpgradeSteps.1