Cloud customer?
Start for Free >
Upgrade in MyJFrog >
What's New in Cloud >





Overview

Private Distribution Network (PDN) is a lightweight, storage-savvy distribution solution that enables you to meet your growing distribution needs.

This document details how to use the advanced PDN configurations, such as deploying and managing a Central PDN Node, configuring PDN for intermittent connectivity, PDN YAML configurations, and more. To learn how to set up and use PDN, see Setting up a Private Distribution Network (PDN) and Working with the Private Distribution Network (PDN).



Advanced PDN Configurations

Central PDN Node Deployment and Management

You can modify and manage all the PDN Node configurations from a central YAML, since all PDN settings are centrally stored in the JFrog Platform. All that is required is to add your settings to a YAML file and to update the settings using the REST API, directly in the UI, or through the bootstrap from the file system. The next time the PDN Nodes connect to the PDN Server, they will be populated with the new YAML settings.

Modify the default dynamic default YAML attributes on all your PDN Nodes.

  1. Create a YAML file containing the dynamic parameters. To view a list of parameters, see Dynamic Attributes.
  2. Depending on how you want to deploy the PDN Nodes, do one of the following:
    • Set up your Distribution Nodes with customized advanced settings in a YAML to be populated during the initial connection to Artifactory, by copying the YAML to the bootstrap file to the following path.

      <ARTIFACTORY_PRODUCT_HOME>/var/etc/tracker/distribution-node/distribution-node.config.import.yaml

      After the startup of the PDN Node, the yaml file is loaded and renamed:

      distribution-node.config.bootstrap.<TIMESTAMP>.yaml
    • Upload the YAML to the JFrog Platform web UI under User Management | Settings | PDN Access Token.

PDN Configuration for Intermittent Connectivity

PDN is designed to support operations in an environment that has intermittent Internet connectivity. This design provides the following capabilities:

  • The node in the device is allowed to continue downloading binaries from the local cache when the device is offline.
  • The node in the device can continue to operate without fatal errors or without entering dead-end states that require a reset when the connection to the server is unreliable and the device changes its state from online to offline and back.

To support this capability, you will need to configure PDN to support these scenarios using yaml files. The configurations include both static configurations and dynamic ones.

Static Configurations

In the Distribution system.yaml file, you will need to set the following static configurations. 

After implementing changes to the yaml file, you will need to restart Artifactory.

FlagTypeDefaultDescription
highResilienceMode
BooleanFalse

When this flag is set to true, a PDN Node does not shutdown in the case of any bootstrap error, which may occur due to network issues while the startup is in progress. Instead of an immediate shutdown, a DN retries its bootstrap every 5 minutes until all startup dependencies are successfully resolved (i.e., the network is healthy).

Also, if the flag is set to true, there is no shutdown in the case of a failed system token refresh; without this flag, a DN shuts down when all retries (maximumNumberOfCallRetries, dynamic config, default: 100) run out. With the flag enabled, the retries are unlimited, and the DN will continue trying to refresh the system token until it succeeds. 

defaultAuthorization 
String<empty>

When specified, this flag is used for the download caches warmup after release bundle distribution. The warmup of the respective caches allows clients to download the contents of a release bundle from a DN even when there is no connection from the DN to its parent PDN Server (i.e. network issues). The default authorization corresponds to the “Authorization” header contents.

For example, when your artifactory credentials are admin:password, the contents of the “Authorization” header will be a base64 encoded string: “Basic YWRtaW46cGFzc3dvcmQ=”.

To utilize the warmed up caches, a downloading client must carry the same “Authorization” header (backed by the same credentials). In case of the release bundle deletion, the caches are cleared respectively. Note, that the expiration for the download caches is configured by the following properties (dynamic config):

  • skipDownloadCaches - bool - false - Enable/Disable all download caches.
  • authzCacheExpiryMins - int - 30 - Expiry for the authorization caches (docker/generic).
  • authzLruCacheSize - int - 100 - Size of the authorization caches (docker/generic). The unit is in "entries" - the number of API responses to be stored in a cache. The volume of such entries is very low (under 1KB).
  • authnCacheExpiryMins - int - 30 - Expiry for the authentication cache (docker).
  • authnLruCacheSize - int - 100 - Size of the authentication cache (docker); the unit is in "entries".
  • manifestCacheExpiryMins - int - 30 - Expiry for the manifest cache (docker).
  • manifestLruCacheSize - int - 100 - Size of the manifest cache (docker); the unit is in "entries".
  • clientsHeapPiecesCacheMax - int - 100 - Maximum size of client’s heap pieces.

Dynamic Configurations

The dynamic configuration is supplied via a yaml file that is dropped into the nodes Configuration field, which you reach by navigating to User Management | Settings | PDN Nodes Configuration

Set the following dynamic configurations.

After implementing changes to the yaml file, you will not need to restart Artifactory.

FlagTypeDefaultDescription
maximumNumberOfRegistrationRetrie
int5This flag defines how many attempts of registration to the same parent PDN Server should be issued. Note that the overall number of registration retries is determined by the number of available DNs in a topology. For example, when there are 10 parent PDN Servers in the parent group, and 1 root PDN Server above them, the overall number of registration retries will be 10*5 + 1*5 = 55. In cases where the network is completely down (it is not possible to register anywhere), the subsequent registration will occur upon the next health-check request (in 5 seconds).
deferredRegistrationIntervalMin
int10This flag defines how long to wait until the subsequent registration on a parent group PDN Server in those cases when a DN has to register on a PDN Server that is not its parent (e.g., when all PDN Servers from the parent group are down)
systemTokenExpirySecs
nt3600This flag defines the time to live (TTL) for system tokens, which are used for authentication within a PDN hierarchy. These tokens are refreshed on a scheduled basis by each DN. The greater the TTL is, the longer a DN can stay without a connection to the root PDN Server.
downloadTokenExpirySec
int3600

This flag defines the TTL for download tokens, which are used for authorization within an Artifactory for each file download. As these tokens are cached, the value of this property must be greater or equal to authzCacheExpiryMins.

Note that the value of downloadTokenExpirySec must be greater than authzCacheExpiryMins. This separation is used to allow having the AuthZ cache either completely disabled (set to 0) or having a low value to re-generate tokens more often, while the downloadTokenExpirySec property must be always specified as non-zero - it is the value, which is put in the token creation request as the ‘Expiry’.


PDN Server and Node YAML Configurations

PDN Server YAML Attributes

In a High Availability setup, when a support bundle request arrives, the bundle will be redirected to the lead PDN Server. The lead server will send the internal support bundle request to all the other PDN Servers, and then all the PDN Servers will upload the logs to the requested repository in Artifactory.

PDN Server Static YAML
## NODE CONFIGURATION FILE##
## HOW TO USE: comment-out any field and keep the correct yaml indentation by deleting only the leading '#' character.
  
## NOTE: The provided commented key and value is the default.
​
shared:
​
  ## Base URL of the JFrog Platform Deployment (JPD)
  ## This is the URL to the machine where JFrog Artifactory is deployed, or the load balancer pointing to it.
  ## It is recommended to use DNS names rather than direct IPs.
  ## Examples: "http://jfrog.acme.com or http://10.20.30.40:8082"
  #jfrogUrl: "<artifactory-host-address>"
​
  ## Shared security configuration
  security:
    ## Join key value for joining the cluster (takes precedence over 'joinKeyFile')
    #joinKey: "XXX"
​
    ## Join key file location
    #joinKeyFile: "JFROG_HOME/tracker/var/etc/security/join.key"
​
    ## Master key file location
    ## Generated by the product on first startup if not provided
    #masterKeyFile: "<For example: JFROG_HOME/tracker/var/etc/security/master.key>"
​
  ## Shared node settings
  node:
    ## A unique id to identify this node.
    ## Default: auto generated at startup.
    #id: "PdnServer-1"
  
    ## Default: auto resolved by startup script
    #ip:
​
    ## Default: auto resolved by startup script
    #name: ""
​
​
pdnServer:
​
  ## The port number of the secure gRPC server, that has to be reachable for external connections.
  #port: 8095
​
  ## The port number of the pdnServer's gRPC insecure server (for communication via the Router).
  #internalPort: 8094
​
  ## The port number to exchange root certificate traffic that is signed using PDN Join Key,
  ## and is reachable for external connections.
  #insecurePort: 8093
​
  ## The port number of the HTTP secure server.
  #httpPort: 8092
​
  ## When the PDN join key is provided manually, it will be applied as the PDN join key for Distribution Nodes.
  ## It is recommended to be set for parallel deployment of the PdnServer and Distribution Nodes.
  #joinKey: "<Your-PDN-JoinKey>"
​
  ## The external address to be used from outside the PdnServer service for the PdnServer to be reached.
  ## The port must match the "port" property value.
  #selfAddress: "<Host:Port> without http/https schema"
​
  ## Controls whether the HTTP client verifies the server's certificate chain and host name.
  #skipVerifyCertificate: false
​
  ## TLS is enabled by default. When set to true, TLS is disabled.
  #forceInsecureServer: false
​
  ## The number of times the node is counted as an "Alive" node in relation to the last node availability report.
  #minimumPeerUnavailableLeewayMillis: 30000
​
  ## The PdnServer upload throttle in KB/S.
  #uploadRateLimitKb: 0
​
  ## The minimal transfer unit in the JFrog PDN protocol in KB.
  #subpieceSize: 512
​
  ## The maximum number of nodes that can download files from this node.
  #maximumPeersToServe: 60
​
  ## The piece metadata cache size which contains the piece checksum.
  #fileInfoCacheSize: 100
​
  ## A piece is always equal to 2 MB. The number of pieces you can store in RAM.
  #piecesInMemoryCacheSize: 500
​
  ## How many peers can serve pieces of a file at once.
  #maximumPeersPerFile: 20
​
  ## The Artifactory instance address that is associated with the PdnServer.
  #artifactoryUrl: "http://localhost:8046/artifactory"
​
  ## Limits the total number of HTTP client connections per host, including connections in the dialing,
  ## active, and idle states. On limit violation, dials will block. Zero means no limit.
  #httpClientMaxConnections: 50
​
  ## Retry interval upon an API error during internal communications.
  #genericErrorRetryPeriodSecs: 30
​
  ## Determines the window, which is used for rate limit in context of the same distribution node.
  #rateLimitSleepRangeSecs: 10
​
  ## Min sleep time limit for the download rate limit.
  #rateLimitSleepMinimumMillis: 5
​
  ## Max sleep time limit for the download rate limit.
  #rateLimitSleepMaximumMillis: 100
​
  ## The number of full seeders that can replace a PdnServer. The default value 2 full seeders will remove a PdnServer
  ## from the seeding list to offload Artifactory or a parent group.
  #excludePdnServerFactor: 2
​
  ## The log verbosity control. Supported levels: info | debug | trace.
  #logLevel: info
​
  ## In an HA environment, where the PdnServer is not set as the leader,
  ## it will announce it is ready for seeding in milliseconds.
  #reportAvailablePeriodMillis: 5000
​
  ## Interval for access token refresh (45 min by default).
  #refreshPeerTokenPeriodSecs: 2700
​
  ## The CRON expression that indicates the interval to run the call home tasks.
  ## By default, it runs every 24 hours.
  #callHomeCֹronExpression:
​
  ## The interval for collecting metrics for the next call home message.
  ## For example, to count the number of available nodes is set to every 30 milliseconds.
  #callHomeMetricsCollectionPeriodMillis: 1800000
​
  ## Call-home endpoint (artifactory router API by default).
  #callHomeUrl: "<routerUrl + /artifactory/api/system/usage>"
​
  ## The disk pieces cache file system path.
  #piecesDiskCachePath: "<dataDir>"
​
  ## The expiry of disk items in minutes.
  #piecesDiskCacheExpiryMins: 30
​
  ## The number of pieces you can store on your disk.
  #piecesDiskCacheSize: 2000
​
  ## How much of a file a peer must have to act as the file pieces provider.
  #minimalPiecesToUsePeerPercent: 10
​
  ## How many pieces of a file a peer must have to act as the file pieces provider.
  #minimalPiecesToUsePeerAbsolute: 15
​
  ## For how long a Release Bundle must remain non-expired in PDN after distribution.
  #releaseBundleFileTokenExpiryFactor: 0.5
​
  ## How many workers are involved into Support Bundle collection.
  #numberOfLogUploadWorkers: 20
​
  ## The maximum size of gRPC message that the PDN can send or receive.
  #maximumMessageSizeMb: 2000
​
  ## The duration in seconds until support bundle collection request is expired.
  #logCollectionDescriptorSecs: 60
​
  ## Timeout for the support bundle collection.
  #pdnSupportBundlesMaxWaitingSecs: 60
​
  ## How often to check for support bundle collection readiness.
  #pdnSupportBundlesStatusCheckIntervalMillis: 1000
​
  ## How often to log memory consumption statistics.
  #memoryStatusIntervalMillis: 60000
​
  ## Main service log file for each microservice, containing data on the service activity.
  serviceLog:
​
    ## Log file name.
    #logFileName:
​
    ## The maximum size of a single log file.
    #maxSizeInMb: "50"
​
    ## The number of backup files to maintain.
    #maxAmountOfFiles:
​
    ## Maximum duration in days to retain old log files
    #maxAgeInDays: "7"
​
    ## Whether to compress the backup file.
    #decompress:
​
    ## If compress is true, the number of archived files to be left uncompressed.
    #keepLastDecompressed:
​
    ## If true, all services console logs will be redirected to a common console.log.
    #consoleOut:
​
    ## The max file size at which enforce rotation.
    #rotationIntervalSeconds:
​
  ## Provides the user with in detailed information regarding site traffic and file sizes.
  trafficLog:
​
    ## Log file name.
    #logFileName:
​
    ## The maximum size of a single log file.
    #maxSizeInMb: "50"
​
    ## The number of backup files to maintain.
    #maxAmountOfFiles:
​
    ## Maximum duration in days to retain old log files
    #maxAgeInDays: "7"
​
    ## Whether to compress the backup file.
    #decompress:
​
    ## If compress is true, the number of archived files to be left uncompressed.
    #keepLastDecompressed:
​
    ## If true, all services console logs will be redirected to a common console.log.
    #consoleOut:
​
    ## The max file size at which enforce rotation.
    #rotationIntervalSeconds:
​
  ## Lists all http requests (including gRPC) that were made to the service.
  requestLog:
​
    ## Log file name.
    #logFileName:
​
    ## The maximum size of a single log file.
    #maxSizeInMb: "50"
​
    ## The number of backup files to maintain.
    #maxAmountOfFiles:
​
    ## Maximum duration in days to retain old log files
    #maxAgeInDays: "7"
​
    ## Whether to compress the backup file.
    #decompress:
​
    ## If compress is true, the number of archived files to be left uncompressed.
    #keepLastDecompressed:
​
    ## If true, all services console logs will be redirected to a common console.log.
    #consoleOut:
​
    ## The max file size at which enforce rotation.
    #rotationIntervalSeconds:
​
  ## Provides the user with PdnServer metrics in the format of OpenMetrics.
  metricsLog:
​
    ## Log file name.
    #logFileName:
​
    ## The maximum size of a single log file.
    #maxSizeInMb: "50"
​
    ## The number of backup files to maintain.
    #maxAmountOfFiles:
​
    ## Maximum duration in days to retain old log files
    #maxAgeInDays: "7"
​
    ## Whether to compress the backup file.
    #decompress:
​
    ## If compress is true, the number of archived files to be left uncompressed.
    #keepLastDecompressed:
​
    ## If true, all services console logs will be redirected to a common console.log.
    #consoleOut:
​
    ## The max file size at which enforce rotation.
    #rotationIntervalSeconds:
​
## Router template
router:
​
  ## Profiling related settings.
  profiling:
    ## Enable profiling endpoints.
    #enabled: true
​
  ## Corporate proxy related settings
  proxy:
    ## Proxy url for all outgoing http requests.
    #httpUrl: ""
​
    ## Proxy url for all outgoing https requests.
    #httpsUrl: ""
​
    ## List of target hosts to communicate with directly, bypassing the proxy.
    ## "localhost" will always be added to this list automatically.
    #ignoredHosts:
    #- "ignore.me1.com"
    #- "ignore.me2.com"
​
  ## Router entry points
  entrypoints:
    ## The internal port, used by local services to communicate with the router and any other service (local and external).
    #internalPort: 8046
​
    ## The external port, registered in the service registry, used by external services to communicate with services in this node.
    #externalPort: 8082
​
    ## An internal port used for internal Traefik (and Router) REST API.
    #traefikApiPort: 8049
​
    ## An internal port used for Router's gRPC API.
    #grpcPort: 8047
​
  ## Service registry (Access) communication settings
  serviceRegistry:
    ## Service registry (Access) TLS verification skipped if enabled.
    #insecure: false
​
    ## Service registry (Access) request timeout.
    #requestTimeout: 15s
​
  ## Topology related settings
  topology:
    ## Local topology settings
    local:
      #requiredServiceTypes: "jftrk"
​
      ## Settings for checking the health of local services
      healthCheck:
        ## Duration between health checks.
        #interval: 5s
​
        ## Health check request timeout.
        #requestTimeout: 5s
​
        ## The number of consecutive successful health checks that must occur before declaring an instance healthy.
        #healthyThreshold: 2
​
        ## The number of consecutive failed health checks that must occur before declaring an instance unhealthy.
        #unhealthyThreshold: 2
​
    ## External topology settings
    external:
      ## Settings for refreshing the router with external topology from the service registry.
      refresh:
        ## Refresh interval.
        #interval: 3s
​
        ## The maximum duration a service can be considered as healthy since its last heartbeat.
        #maxStaleHeartbeat: 30s
​
  ## Support bundle aggregation settings
  supportBundle:
    ## The maximum duration support bundle aggregation is allowed before it is automatically cancelled.
    #aggregationTimeout: 1h
​
  ## Logging settings
  logging:
    ## Router log settings
    application:
      ## The log level: error, warning, info, debug, trace.
      #level: "info"
​
      ## The log format: jftext, json.
      #format: "jftext"
​
      ## Whether to include the caller information (runtime frame).
      #caller: false
​
      ## Whether to print the log also to stdout.
      #console: true
​
      ## Log rotation settings
      rotation:
        #compress: true
        #maxSizeMb: 25
        #maxAgeDays: 0
        #maxFiles: 10
​
    ## Traefik log settings
    traefik:
      ## The log level: error, warning, info, debug, trace.
      #level: "info"
​
      ## The log format: jftext, json.
      #format: "jftext"
​
      ## Whether to include the caller information (runtime frame).
      #caller: false
​
      ## Whether to print the log also to stdout.
      #console: true
​
      ## Log rotation settings
      rotation:
        #compress: true
        #maxSizeMb: 25
        #maxAgeDays: 0
        #maxFiles: 10
​
    ## Request log settings
    request:
      ## If true, request log will contain additional information.
      ## This may result in a slight performance overhead.
      #verbose: false
​
      ## Log rotation settings
      rotation:
        #compress: true
        #maxSizeMb: 100
        #maxAgeDays: 0
        #maxFiles: 10
​
  ## Add any custom environment variables to be passed to this service.
  ## Environment variables starting with JF_ are not allowed, will be ignored with a warning if it is added.
  env:
    #EXAMPLE_VAR: example-value
​
  ## Retry configuration
  retry:
    ## Enable retry sending request in case of network error.
    #enabled: true

PDN Node YAML Attributes

PDN Nodes are configured in two separate yaml files: 

Static Node Attributes

## NODE CONFIGURATION FILE##
## HOW TO USE: comment-out any field and keep the correct yaml indentation by deleting only the leading '#' character.
  
## NOTE: The provided commented key and value is the default.
  
pdnNode:
  ## PdnServer URL on which the PdnServer accepts secure gRPC connections.
  ## your PdnServer URL, for example: <external host IP>:8095
  pdnServerUrl:
​
  ## PdnServer URL on which the PdnServer accepts insecure gRPC connections. Alternately, you can set the accessRootCertificate
  pdnServerInitialConnectionUrl: "your PdnServer URL, for example: <external host IP:8093>"
​
  ## Path to the access root certificate. Alternately, you can set the pdnServerInitialConnectionUrl. The certificate must be Base-64 Encoded X.509.
  accessRootCertificate: "<root certification location>"
​
  ## gRPC address to expose for other PDNs must be aligned with the gRPC port.
  selfGrpcAddress: "<auto resolved if not set>"
​
  ## HTTP address to expose for external clients.
  selfHttpAddress: "<auto resolved if not set>"
​
  ## PDN Join key value generated in the Artifactory node and used for establishing a connection between the PDNs to the PdnServer. Alternately you can provide pemFilePath.
  joinKey: "<Your JoinKey>"
​
  ## Path to PEM file that contains the certificate for SSL client authentication and the client certificate key. Alternately you can provide joinKey.
  pemFilePath: "<Path to Pem file>"
​
  ## The PDN gRPC server secure port.
  port: "Default: 8088"
​
  ## The PDN http server secure port.
  httpPort: "Default: 8089"
​
  ## The PDN http bouncer server secure port, used as a load balancer between the PDNs.
  httpBouncerPort: "Default: 8090"
​
  ## The Artifactory, load balancer, or router address used for proxy and metadata requests.
  artifactoryUrl: "Default: http://<pdnServerUrl-noport>:8081/artifactory"
​
  ## The group that the PDN belongs to.
  selfGroup: "Default: default-group"
​
  ## The group the PDN parents belong to.
  parentGroup: "Default: default-group"
​
  ## The path to the watch folder containing files and metadata.
  watchFolder: "Default: {servicehome.datadir}/watch"
​
  ## The path to the metadata file.
  stateFilePath: "Default: {servicehome.datadir}/state"
​
  ## The maximum amount of connection that a single http client can use.
  httpClientMaxConnections: "Default: 50"
​
  ## The path in the local file system containing the test runs.
  testFolderPath: "Default: {servicehome.datadir}/test"
​
  ## The path in the local file system containing the access root certificate to support skipping the insecure initial connection phase.
  certificatesFolderPath: "Default: {servicehome.securitydir}/certificates"
​
  ## The PDN application log level. Supported levels: info | debug | trace.
  logLevel: "Default: info"
​
  ## Enables porifiling.
  profilingEnabled: "Default: false"
​
  ## Allow none secure comunication.
  http: "Default: false"
​
  ## Path to Certificate Authority’s certificate.
  certificateAuthorityPath: "<Path to CA file>"
​
  ## Recovers from any panic, which is encountered during the startup preventing the app termination until it is requested by an OS.
  highResilienceMode: "Default: false"
​
  ## Authorization that should be provided before the PDN is starting, precondition to the service warmup that responsibble to get release bundles content.
  defaultAuthorization: ""
​
  ## Main service log file for each microservice, containing data on the service activity.
  serviceLog:
​
    ## Log file name.
    logFileName: ""
​
    ## The maximum size of a single log file.
    maxSizeInMb: "Default: 50"
​
    ## The number of backup files to maintain.
    maxAmountOfFiles: ""
​
    ## Maximum duration in days to retain old log files
    maxAgeInDays: "Default: 7"
​
    ## Whether to compress the backup file.
    decompress: ""
​
    ## If compress is true, the number of archived files to be left uncompressed.
    keepLastDecompressed: ""
​
    ## If true, all services console logs will be redirected to a common console.log.
    consoleOut: ""
​
    ## The max file size at which enforce rotation.
    rotationIntervalSeconds: ""
​
  ## Provides the user with in detailed information regarding site traffic and file sizes.
  trafficLog:
​
    ## Log file name.
    logFileName: ""
​
    ## The maximum size of a single log file.
    maxSizeInMb: "Default: 50"
​
    ## The number of backup files to maintain.
    maxAmountOfFiles: ""
​
    ## Maximum duration in days to retain old log files
    maxAgeInDays: "Default: 7"
​
    ## Whether to compress the backup file.
    decompress: ""
​
    ## If compress is true, the number of archived files to be left uncompressed.
    keepLastDecompressed: ""
​
    ## If true, all services console logs will be redirected to a common console.log.
    consoleOut: ""
​
    ## The max file size at which enforce rotation.
    rotationIntervalSeconds: ""
​
  ## Lists all http requests (including gRPC) that were made to the service.
  requestLog:
​
    ## Log file name.
    logFileName: ""
​
    ## The maximum size of a single log file.
    maxSizeInMb: "Default: 50"
​
    ## The number of backup files to maintain.
    maxAmountOfFiles: ""
​
    ## Maximum duration in days to retain old log files
    maxAgeInDays: "Default: 7"
​
    ## Whether to compress the backup file.
    decompress: ""
​
    ## If compress is true, the number of archived files to be left uncompressed.
    keepLastDecompressed: ""
​
    ## If true, all services console logs will be redirected to a common console.log.
    consoleOut: ""
​
    ## The max file size at which enforce rotation.
    rotationIntervalSeconds: ""
​
  ## Provides the user with PDN's metrics in the format of OpenMetrics.
  metricsLog:
​
    ## Log file name.
    logFileName: ""
​
    ## The maximum size of a single log file.
    maxSizeInMb: "Default: 50"
​
    ## The number of backup files to maintain.
    maxAmountOfFiles: ""
​
    ## Maximum duration in days to retain old log files
    maxAgeInDays: "Default: 7"
​
    ## Whether to compress the backup file.
    decompress: ""
​
    ## If compress is true, the number of archived files to be left uncompressed.
    keepLastDecompressed: ""
​
    ## If true, all services console logs will be redirected to a common console.log.
    consoleOut: ""
​
    ## The max file size at which enforce rotation.
    rotationIntervalSeconds: ""
​
  ## Force PDN to use tls when proxy requests in case artifactory doesn't use https scheme.
  forceTls: "Default: false"
​
  ## The maximum size of gRPC message that the PDN can send or receive.
  maximumMessageSizeMb: "Default: 2000"
​
  ## disable bouncer server.
  disableBouncer: "Default: false"
​
  ## cache size of metadata of urls that were redirected through the bouncer server.
  signedUrlCacheSize: ""
​
  ## The duration in seconds untill support bundle request expired.
  logCollectionDescriptorSecs: "Default: 60"
​
  ## The maximum number of workers you can assign to upload log files from the PDN.
  numberOfLogUploadWorkers: "Default: 20"    

Dynamic Node Attributes

global:
  pdnNode:
    ## Transfer unit over the network in KB
    subpieceSizeKb: 524288
    ## Number of pieces in window of downloaded file
    streamShuffleWindowSize: 80
    ## Channel size for sending file pieces to client
    clientDownloadChannelSize: 100
    ## Maximum number of nodes that can download files from this node
    maximumPeersToServe: 40
    ## Total peer to peer download rate limit in kbps
    downloadRateLimitKb: 0
    ## Total peer to peer upload rate limit in kbps
    uploadRateLimitKb: 0
    ## Number of files to store in the file system cache
    maximumFilesToKeep: 30000
    ## Size limit in MB to store in the file system cache
    maximumMbToKeep: 50000
    ## Single download iteration timeout in milliseconds
    maximumCallTimeoutMillis: 30000
    ## Node reporting liveness interval in milliseconds
    reportAvailabilityIntervalMillis: 5000
    ## Maximum number of retries in single file download
    maximumNumberOfCallRetries: 100
    ## Maximum number of recalculate retries per single download file
    maximumNumberOfRecalculateRetries: 500
    ## Maximum number of registration attempts to the same parent node
    maximumNumberOfRegistrationRetries: 5
    ## Maximum delay time between two subsequent retries in milliseconds
    maximumErrorDelayMillis: 5000
    ## Time to wait until the subsequent registration on a parent node
    deferredRegistrationIntervalMins: 10
    ## Time to live for system tokens, which are used for authentication within a PDN hierarchy
    systemTokenExpirySecs: 3600
    ## Time to live for download tokens, which are used for authorization within an Artifactory for each file download
    downloadTokenExpirySecs: 3600
    ## The number of concurrent pieces to download from other nodes per file
    numberOfDownloadFromPeerWorkers: 5
    ## The number of concurrent pieces to download from PDN Servers per file
    numberOfDownloadFromPdnServerWorkers: 2
    ## The number of node searches for new sources, when the stated number of pieces is downloaded
    numberOfDownloadToRecalculate: 5
    ## Skips checksum verification for file when file download is completed
    skipChecksumVerification: false
    ## Time to wait for file deletion in the network inspection tool
    deleteFileWaitMillis: 5000
    ## Rewrite rules for download url, contains from and to values to rewrite, used mostly for docker strategies
    rewrite: []
    ## The maximum time in milliseconds the node is counted as an "alive" node since the last node availability report
    minimumPeerUnavailableLeewayMillis: 30000
    ## The number of full seeders that can replace a PDN Server
    excludePdnServerFactor: 0
    ## Release Bundle download timeout in minutes
    releaseBundleDownloadTimeoutMins: 30
    ## Number of download release bundle workers
    numberOfDownloadReleaseBundleWorkers: 10
    ## Expiry for the authorization caches (docker/generic)
    authnCacheExpiryMins: 30
    ## Expiry for the authentication cache (docker)
    authzCacheExpiryMins: 30
    ## Expiry for the manifest cache (docker)
    manifestCacheExpiryMins: 30
    ## Size of the authentication cache (docker)
    authnLruCacheSize: 100
    ## Size of the authorization caches (docker/generic)
    authzLruCacheSize: 100
    ## Size of the manifest cache (docker)
    manifestLruCacheSize: 100
    ## Maximum size of client’s heap pieces
    clientsHeapPiecesCacheMax: 100
    ## Enable/Disable all download caches
    skipDownloadCaches: false
    ## Cache synchronization mode (serial/parralel) when bouncer is enabled
    enableParallelSyncingBouncer: false
    ## Number of workers for cache synchronization when bouncer is enabled
    syncingWorkers: 5
    ## Signed url cache expiry in seconds
    signedUrlCacheExpirySecs:
    ## Number of logs upload retries for support bundle
    numberOfLogUploadRetries: 30
    ## Logs upload chunk size for support bundle in bytes
    logsUploadChunkSizeBytes: 1024
    ## Maximum amount of incoming download pieces in queue
    incomingPiecesQueueCapacity: 300
    ## Should disable PDN Server pieces shuffling
    disableShufflePdnServerPieces: false
    ## Memory status interval in milliseconds
    memoryStatusIntervalMillis: 60000
    ## Dynamic configuration bootstrap files backups to retain
    bootstrapBackupsToRetain: 10
    ## Dynamic configuration persisted files backups to retain
    persistedBackupsToRetain: 10
    ## For support bundle internal log collection deletion
    logCollectionDescriptorSecs: 60
    ## Maximum number of nodes to be involved in file download
    maximumPeersPerFile: 20
    ## Minimum time to sleep in case we need to limit download rate
    rateLimitSleepMinimumMillis: 5
    ## Maximum time to sleep in case we need to limit download rate
    rateLimitSleepMaximumMillis: 100
    ## Sleep range duration in case we need to limit download rate
    rateLimitSleepRangeDurationSecs: 10
    ## Minimum file pieces percent in order to include node in download information response
    minimalPiecesToUsePeerPercent: 10
    ## Minimum file pieces in order to include node in download information response
    minimalPiecesToUsePeerAbsolute: 15
    ## Multiplication factor of release bundle token expiration time
    releaseBundleFileTokenExpiryFactor: 0.5
  • No labels
Copyright © 2022 JFrog Ltd.