ARTIFACTORY:安装快速入门指南- Docker-compose

伊诺崔
2022-03-21 07:36

你会得到什么?用户添加图片

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

的必备条件

安装码头工人引擎

安装码头工人组成

支持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

数据库

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

PostgreSQL支持:

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

外部Postgres设置:

1.连接到PostgreSQL并创建Artifactory用户和数据库

CREATE USER artifactory WITH PASSWORD
创建一个UTF8的数据库
授予数据库artifactory上的所有特权给artifactory;

2.下载与你的PostgreSQL版本相对应的JDBC驱动程序PostgreSQL JDBC驱动程序下载站点将下载的jar文件拷贝到- $JFROG_HOME/artifactory/var/bootstrap/artifactory/tomcat/lib目录下。
确保您的驱动程序具有所有用户的读权限。请注意,这个目录将在安装compose时创建,或者您可以预先创建它。

3.从Artifactory服务器启用PostgreSQL连接:

在“$POSTGRES_HOME/data/pg_hba.conf”中增加如下一行

主机[artifactory_db_name] [artifactory_user] [cidr] md5

例子:

主机artifactory artifactory 123.456.78.90/32 md5

添加下面的行到(如果已经存在,更新它)POSTGRES_HOME /数据/ postgresql.conf美元

listen_addresses = ' * '

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

Artifactory支持多种数据库类型,包括mysql, oracle, mariaDB。你可以找到的链接其他支持的数据库下面是术语表。

有关更多数据库建议,请参见//m.si-fil.com/whitepaper/best-practices-for-managing-your-artifactory-database/

Filestore (S3)

默认情况下,Artifactory被配置为使用本地文件系统作为其文件存储。Artifactory通过位于$JFROG_HOME/ Artifactory /var/etc/ Artifactory文件夹中的binarstore .xml配置文件提供了灵活的文件存储管理。请注意,这个文件/目录将在安装compose时创建,或者您可以预先创建它。
通过修改这个文件,您可以实现各种不同的存储配置。为了便于扩展,我们建议设置一个S3桶,并利用它进行无限扩展。使用以下方法cluster-s3-storage-v3模板配置S3云存储。<配置version = " 2 " >
<链模板= " cluster-s3-storage-v3 " / >

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

我们也为其他云提供商提供了其他配置模板:

//m.si-fil.com/confluence/display/JFROG/Configuring+the+Filestore#ConfiguringtheFilestore-ConfiguringShardingforHACluster

如果您想使用本地磁盘存储而不是S3,您可以使用:

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

下载位置

从。下载docker编写包下载JFrog平台页面
请确保您的机器可以连接到“releases-docker.jfrog”。为Artifactory提取必要的图像。

安装步骤

1.解压缩jfrog-artifactory-pro-- composer .tar.gz文件,并转到解压缩的文件夹。

$ tar -xvf jfrog-artifactory-pro-- composer .tar.gz
$ CD artifactory-pro-<版本>

2.运行交互脚本来设置Artifactory。

美元。/ config.sh

3.建议将Artifactory主目录定义为为所有用户(如/opt)提供运行和执行权限的目录。

安装目录(默认为“/root/.jfrog/artifactory”):“/opt/jfrog/artifactory”

4.指定Artifactory机器的IP地址。

对于IPv6地址,将值用方括号括起来:[]
请指定此机器的IP地址(默认值:):

5.如果您正在设置一个HA集群,并将此机器添加到现有的Artifactory实例中,请选择“y”,否则选择“N”。

您是否要向现有产品集群添加额外的节点?[y / N]: N

6.由于我们将使用已配置的外部数据库,选择“N”并选择数据库。

安装程序可以安装PostgreSQL数据库,也可以连接到现有的兼容PostgreSQL数据库
(https://service.jfrog.org/installer/System + # SystemRequirements-RequirementsMatrix需求)
如果您正在从现有的安装升级,如果已经外部化PostgreSQL,请选择N,如果没有,请选择Y。
你想安装PostgreSQL吗?[Y / n]: n

提供要连接到的外部数据库的类型。
注意:如果您选择derby,它将被视为一个内部数据库,并且不会询问进一步的细节
输入数据库类型,支持的值[postgresql mssql mariadb mysql oracle derby]: postgresql

7.提供URL、用户名和密码。

提供数据库连接的详细信息
PostgreSQL的url。示例:[jdbc:postgresql://:/artifactory]: postgresql://:5432/artifactory

数据库用户名(如果您现有的连接URL已经包含该用户名,请留空):artifactory

数据库密码(如果您现有的连接URL已经包含密码,请留空):

数据库连接成功

8.安装完成后,可以使用提供的Docker-Compose命令启动Artifactory。

开始:docker-compose -p rt up -d
停止:docker-compose -p rt down

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

$ docker logs -f artifactory
2021-09-20T20:44:34.610Z [jfrou] [INFO] [30a6b3f102dc9b52] [local_topology.]Go:270][主要]-
###############################################################
###所有服务在86.544秒内成功启动
###############################################################

10.一旦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",…

11.要安装其他节点,请遵循上面的安装步骤。
a.对于询问将机器添加到现有Artifactory实例的步骤,选择“y”

您是否要向现有产品集群添加额外的节点?[y / N]: y
12.新节点要加入集群,这些节点必须连接到相同的数据库并具有相同的主密钥。

a)复制母版。从第一个节点到位于$JFROG_HOME/artifactory/var/etc/security/master.key的其他节点。如果您想提前生成自己的密钥,可以这样做按照这里的指南来做

b)启动其他节点。

c)检查Artifactory日志。

$ docker-compose -p rt日志

(*)对于Docker安装,验证主机的ID为“shared.node. node.”共享节点id和IP。Ip”被添加到system.yaml。如果没有手动添加这些,它们将自动解析为容器的主机名和IP,这意味着其他节点和服务将无法访问此实例。

共享:
extraJavaOpts: "-Xms512m -Xmx4g"
节点:
id:“MyNodeID”
知识产权:“10.1.2.3”

确保保持YAML间距一致!我们建议使用2或4个空格缩进,但要确保始终一致。

SSL

如果需要SSL (HTTPS)连接到Artifactory,可以在Artifactory前配置反向代理,如Nginx或Apache。对于Docker-Compose的安装,你可以在解压缩的Docker-Compose文件夹下的“templates”文件夹中找到Nginx Docker-Compose模板。你可以将模板以docker-compose.yaml的形式复制到解压缩的文件夹中。请确保在artifactory.ports下添加端口443。

版本:“3”
服务:
artifactory:
图片:$ {DOCKER_REGISTRY} / jfrog / artifactory-pro: $ {ARTIFACTORY_VERSION}
container_name: artifactory
环境:
- JF_ROUTER_ENTRYPOINTS_EXTERNALPORT = $ {JF_ROUTER_ENTRYPOINTS_EXTERNALPORT}
港口:
—${jf_router_entrypoints_externalport}:${jf_router_entrypoints_externalport} #
- 8081:8081 #用于人工通信
- 443:443 # nginx
卷:
- $ {ROOT_DATA_DIR} / var: / var / opt / jfrog / artifactory
- /etc/localtime: / etc /作用:罗依
重启:总是
日志:
司机:json文件
选项:
最大尺寸:50米
max-file:“10”
ulimit:
nproc: 65535
nofile:
软:32000
困难:40000
nginx:
图片:$ {DOCKER_REGISTRY} / jfrog / nginx-artifactory-pro: $ {ARTIFACTORY_VERSION}
container_name: nginx
depends_on:
——artifactory
network_mode:服务:artifactory
卷:
- $ {ROOT_DATA_DIR} / var /数据/ nginx: / var / opt / jfrog / nginx
- /etc/localtime: / etc /作用:罗依
环境:
- ART_BASE_URL = http://localhost: $ {JF_ROUTER_ENTRYPOINTS_EXTERNALPORT}
- NGINX_LOG_ROTATE_COUNT = $ {NGINX_LOG_ROTATE_COUNT}
- NGINX_LOG_ROTATE_SIZE = $ {NGINX_LOG_ROTATE_SIZE}
- - - - - - SSL = true
重启:总是
日志:
司机:json文件
选项:
最大尺寸:50米
max-file:“10”
ulimit:
nproc: 65535
nofile:
软:32000
困难:40000

示例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-compose -p rt stop

2.解压缩归档文件的内容并转到解压缩的文件夹。

Tar -xvf jfrog-artifactory-pro-- composer . Tar .gz
cd artifactory-pro——<版本>

3.将之前安装的。env文件的内容(例如,artifactory-pro-7.23.3文件夹)复制到这个归档文件中新创建的。env文件(例如,artifactory-pro-7.24.3文件夹),但不要复制版本,因为这会影响升级。

a)以前安装的.env文件

从Docker注册表中获取图像
DOCKER_REGISTRY = releases-docker.jfrog.io

要安装的artifactory版本
ARTIFACTORY_VERSION = 7.23.3

Artifactory的安装目录。如果没有输入,脚本将提示您进行输入。默认($ HOME / .jfrog / artifactory)
ROOT_DATA_DIR = / opt / jfrog / artifactory

##路由器外部端口映射此属性可能会被系统覆盖。yaml (router.entrypoints.externalPort)
JF_ROUTER_ENTRYPOINTS_EXTERNALPORT = 8082

Nginx日志记录配置
NGINX_LOG_ROTATE_COUNT =
NGINX_LOG_ROTATE_SIZE =

b)新的安装。env文件

从Docker注册表中获取图像
DOCKER_REGISTRY = releases-docker.jfrog.io

要安装的artifactory版本
ARTIFACTORY_VERSION = 7.24.3

Artifactory的安装目录。如果没有输入,脚本将提示您进行输入。默认($ HOME / .jfrog / artifactory)
ROOT_DATA_DIR = / opt / jfrog / artifactory

##路由器外部端口映射此属性可能会被系统覆盖。yaml (router.entrypoints.externalPort)
JF_ROUTER_ENTRYPOINTS_EXTERNALPORT = 8082

Nginx日志记录配置
NGINX_LOG_ROTATE_COUNT =
NGINX_LOG_ROTATE_SIZE =

4.运行config.sh脚本设置所需所有权的文件夹。

美元。/ config.sh

5.使用Docker-Compose命令启动Artifactory。

开始:docker-compose -p rt up -d
停止:docker-compose -p rt down

调优Artifactory(可选)

我们有以下可选的调优部分来优化Artifactory以适应更大的负载——当Artifactory实例承受更大的负载时,记住这些参数是个好主意。
//m.si-fil.com/knowledge-base/how-do-i-tune-artifactory-for-heavy-loads/

1.javaOpts(堆大小)。Yaml -我们建议至少设置这个:
共享:
extraJavaOpts: "-Xms512m -Xmx4g"共享:
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
JFrog下载://m.si-fil.com/download-jfrog-platform/
—外部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
—Amazon S3官方SDK模板://m.si-fil.com/confluence/display/JFROG/Configuring+the+Filestore#ConfiguringtheFilestore-AmazonS3OfficialSDKTemplate
- SSL (HTTPS)://m.si-fil.com/confluence/display/JFROG/HTTP+Settings
- Docker-Compose安装://m.si-fil.com/confluence/display/JFROG/Installing+Artifactory#InstallingArtifactory-DockerComposeInstallatio
—Docker-Compose升级:
//m.si-fil.com/confluence/display/JFROG/Upgrading+Artifactory#UpgradingArtifactory-DockerComposeUpgrade