jfrog artifactory could not validate router error

Viewed 15872

When I download, unpack and launch artifactory.sh I see the following error

2020-02-26T21:32:50.496Z [jfac ] [ERROR] [c1b4de79a3f11666] [.j.a.s.s.r.JoinServiceImpl:253] [http-nio-8040-exec-1] - Could not validate router Check-url: http://XXXXXX:8082/router/api/v1/system/ping

And then

2020-02-26T21:32:55.636Z [jfac ] [WARN ] [67b9d42698f5614c] [o.j.c.ExecutionUtils:141      ] [pool-6-thread-2     ] - Retry 20 Elapsed 9.04 secs failed: Registration with router on URL http://localhost:8046 failed with error: UNAVAILABLE: io exception. Trying again

I realize I'm missing something obvious but couldn't figure it out yet. Any suggestions? Thanks.

5 Answers

Alexey, I suspect ipv6 ip being picked up by the start-script, causing this.

Can you update your system.yaml (will be in var/etc/ folder) with the following and try?

shared:
    node:
        ip: <your ipv4 IP>

Might be helpful to anyone. I had tried many things mentioned on google to solve the issue but does not work. Finally, it gets resolved by setting up proper resources. I used 4 GB RAM and 2 core and it worked

Alexey, Do you see any error in:

  • tomcat localhost log - will be at var/log/tomcat
  • router_service.log - will be at var/log
  • access_service.log - will be at var/log

Potential issue may be -

  • your box is not allowing localhost calls (due to some security set-up), or
  • all dependent services are not starting for some other reason

Also - please check which script are you using, there is a new artifactory.sh script packed in app/bin folder, which should be used.

In my case, I had a similar error the moment i was trying to access artifactory. Logs of router-service:

[root@artifactory-master log]# tail -f router-service.log
2020-03-20T22:17:05.328Z [jfrou] [INFO ] [                ] [bootstrap.go:70               ] [main                ] - Router (jfrou) service initialization started. Version: 1.1.0 Revision: c2646fcb28e2d4ca095b07aacebe509d934cef77 PID: 19062 Home: /opt/jfrog/artifactory
2020-03-20T22:17:05.329Z [jfrou] [INFO ] [                ] [bootstrap.go:73               ] [main                ] - JFrog Router IP: ::1
2020-03-20T22:17:05.334Z [jfrou] [INFO ] [                ] [bootstrap.go:159              ] [main                ] - System configuration encryption report:
shared.newrelic.licenseKey: does not exist in the config file
shared.security.joinKeyFile: file '/opt/jfrog/artifactory/var/etc/security/join.key' - already encrypted
2020-03-20T22:17:05.336Z [jfrou] [INFO ] [                ] [bootstrap.go:78               ] [main                ] - JFrog Router Service ID: jfrou@01e3wgemz9esckmd8v48etdy18
2020-03-20T22:17:05.336Z [jfrou] [INFO ] [                ] [bootstrap.go:79               ] [main                ] - JFrog Router Node ID: artifactory-master
2020-03-20T22:17:07.354Z [jfrou] [INFO ] [                ] [config_holder.go:107          ] [main                ] - configuration update detected
2020-03-20T22:17:10.738Z [jfrou] [FATAL] [                ] [bootstrap.go:100              ] [main                ] - Cluster join: Failed joining the cluster; Error: Error response from service registry, status code: 400; message: Could not validate router Check-url: http://::1:8082/router/api/v1/system/ping; detail: I/O error on GET request for "http:///:1:8082/router/api/v1/system/ping": URI does not specify a valid host name: http:///:1:8082/router/api/v1/system/ping; nested exception is org.apache.http.client.ClientProtocolException: URI does not specify a valid host name: http:///:1:8082/router/api/v1/system/ping

To give you some context, i am running artifactory in a centos 8 VM and I'm accessing artifactory graphical interface via windows machine. That means, I am using a web browser (Chrome) to navigate to the artifactory instance.

For that, in the VM side i updated the files "hosts" and "hostname" (/etc/):

hosts:

127.0.0.1   localhost artifactory-master
::1         localhost artifactory-master

hostname:

artifactory-master

In the windows machine, i updated the hosts file located in "C:\Windows\System32\drivers\etc" with the VM host ip and hostname:

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost

192.100.100.10 artifactory-master

(in order to get the ip of the VM machine run the command ifconfig)

Then, I started artifactory by running the command:

service artifactory start

And tried to access artifactory in the browser unsucessfuly:

http://artifactory-master:8082/ui

I stopped the service and in order to accomplish my goal after some tryouts, I realized that I had to comment out the address "::1" in the "hosts" file (/etc/):

hosts:

127.0.0.1   localhost artifactory-master
#::1         localhost artifactory-master

Finally, I started the service again and i was able to access artifactory. Logs of router-service :

2020-03-24T23:02:17.219Z [jfrou] [INFO ] [                ] [bootstrap.go:70               ] [main                ] - Router (jfrou) service initialization started. Version: 1.1.0 Revision: c2646fcb28e2d4ca095b07aacebe509d934cef77 PID: 14542 Home: /opt/jfrog/artifactory
2020-03-24T23:02:17.220Z [jfrou] [INFO ] [                ] [bootstrap.go:73               ] [main                ] - JFrog Router IP: 127.0.0.1
2020-03-24T23:02:17.224Z [jfrou] [INFO ] [                ] [bootstrap.go:159              ] [main                ] - System configuration encryption report:
shared.newrelic.licenseKey: does not exist in the config file
shared.security.joinKeyFile: file '/opt/jfrog/artifactory/var/etc/security/join.key' - already encrypted
2020-03-24T23:02:17.227Z [jfrou] [INFO ] [                ] [bootstrap.go:78               ] [main                ] - JFrog Router Service ID: jfrou@01e3wgemz9esckmd8v48etdy18
2020-03-24T23:02:17.227Z [jfrou] [INFO ] [                ] [bootstrap.go:79               ] [main                ] - JFrog Router Node ID: artifactory-master
2020-03-24T23:02:19.572Z [jfrou] [INFO ] [                ] [config_holder.go:107          ] [main                ] - configuration update detected
2020-03-24T23:02:25.663Z [jfrou] [INFO ] [                ] [join_executor.go:180          ] [main                ] - Cluster join: Successfully joined the cluster
2020-03-24T23:02:25.813Z [jfrou] [INFO ] [                ] [registry_handler.go:89        ] [main                ] - the following services were registered automatically based on persisted data: jfac@01e3wgdn6q0gvj0czswc8k0gp8, jffe@000, jfmd@01e3wges9tvwawj403y5mxfjp7, jfrt@01e3wgfass87mh1nbcv5rv1t98
2020-03-24T23:02:25.984Z [jfrou] [INFO ] [                ] [main.go:36                    ] [main                ] - Router (jfrou) service initialization completed in 8.808 seconds. Listening on port: 8082
2020-03-24T23:03:01.281Z [jfrou] [INFO ] [7e7df2f621a4e1aa] [local_topology.go:212         ] [main                ] -
###############################################################
###   All services started successfully in 44.081 seconds   ###
###############################################################

PS: my artifactory version is the OSS 7.2.1

we have put the IP in our node, and this doesnt work.

we can see that the router is still using LOCALHOST and that its using the ::1 IPV6, despite our system.yaml being indented correctly.

this was working fine (running system for more than 4 months) and then the most recent update this started to fail.

Does anyone have anything better than "check the file" - that actually addresses the issue, which is the following:

  • OS's generally come with both localhost set to the 127.0.0.1 and the ::1 to localhost.

  • JFROG router is "dumb " in that its picking up the url https://localhost:8046, but then trying to do resolution to the ::1 (catch all for IPv6).

  • many SO ticket shows @prasanna and others doing "edits" to the file, but even with correct syntax, we can see JFROG's product is not doing what is says its doing.

example of system.yaml (you can see the the indents are correct and in fact, this is from the system.yaml-full-example template that JFROG provides.

SHARED CONFIGURATIONS

A shared section for keys across all services in this config

shared: ## Security Configuration security: ## Join key value for joining the cluster (takes precedence over 'joinKeyFile') #joinKey: ""

## Join key file location
#joinKeyFile: "<For example: JFROG_HOME/artifactory/var/etc/security/join.key>"

## Master key file location
## Generated by the product on first startup if not provided
#masterKeyFile: "<For example: JFROG_HOME/artifactory/var/etc/security/master.key>"

## Maximum time to wait for key files (master.key and join.key)
#bootstrapKeysReadTimeoutSecs: 120

## Node Settings
node:
    ## A unique id to identify this node.
    ## Default auto generated at startup.
    id: "art-00"
    ## Default auto resolved by startup script
    ip: 10.x.34.63    (x is there on purpose)
## Sets this node as primary in HA installation

you can see plainly inside the logs when you start what is happening as the OP showed.

SAMPLE LOG

Related