Я только что установил Artifactory OSS 7.84.15 на облачную машину IBM с Windows Server 2019. Я изменил только 4 параметра: я изменил 2 порта по умолчанию, которые конфликтуют с другими установками Tomcat на этом компьютере, я изменил базу данных, используемую на встроенный Derby, потому что это всего лишь проверка концепции, и я настроил IP на 127.0.0.1, потому что я видел, что где-то во время устранения неполадок он использовал адрес IPv6, и я прочитал другой вопрос, который может вызвать проблемы.
При запуске Artifactory, будь то в виде службы или из файла Artifactory.bat, после минуты или двух ожидания в выводе журнала появляется следующая ошибка:
2024-06-24T07:59:46.763Z [1;33m[jfac ][0;39m [1;31m[ERROR][0;39m [ ] [o.j.c.ExecutionUtils:60 ] [jf-common-pool-2 ] - Uncaught exception.
org.jfrog.jfconnect.client.exception.JFConnectClientException: Could not init the client
at org.jfrog.jfconnect.client.EntitlementsClientImpl.init(EntitlementsClientImpl.java:36)
at org.jfrog.jfconnect.client.JFConnectClientImpl.init(JFConnectClientImpl.java:63)
at org.jfrog.access.server.service.license.EntitlementsService.lambda$init$1(EntitlementsService.java:59)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: org.jfrog.jfconnect.client.exception.RetryFailedException: org.jfrog.common.ExecutionFailed: Failed executing GetEntitlements, last error [Server responded with an invalid status, [localhost:8046]. Status code: [UNIMPLEMENTED]. Description [HTTP status code 404
invalid content-type: text/plain; charset=utf-8
headers: Metadata(:status=404,content-type=text/plain; charset=utf-8,x-content-type-options=nosniff,date=Mon, 24 Jun 2024 07:59:46 GMT,content-length=19)
DATA-----------------------------
404 page not found
]. Err [UNIMPLEMENTED: HTTP status code 404
invalid content-type: text/plain; charset=utf-8
headers: Metadata(:status=404,content-type=text/plain; charset=utf-8,x-content-type-options=nosniff,date=Mon, 24 Jun 2024 07:59:46 GMT,content-length=19)
DATA-----------------------------
404 page not found
]]. Will not retry anymore.
at org.jfrog.jfconnect.client.grpc.GrpcRetryableCallSupplier.executeWithRetry(GrpcRetryableCallSupplier.java:37)
at org.jfrog.jfconnect.client.grpc.GrpcClient.executeWithRetryAndConfig(GrpcClient.java:132)
at org.jfrog.jfconnect.client.grpc.GrpcClient.getEntitlementsUntilSucceed(GrpcClient.java:122)
at org.jfrog.jfconnect.client.EntitlementsAutoUpdatingCache.updateEntitlements(EntitlementsAutoUpdatingCache.java:120)
at org.jfrog.jfconnect.client.EntitlementsAutoUpdatingCache.init(EntitlementsAutoUpdatingCache.java:46)
at org.jfrog.jfconnect.client.EntitlementsClientImpl.init(EntitlementsClientImpl.java:34)
... 5 common frames omitted
Я попробовал поискать в Google эту ошибку и не нашел ничего подходящего. Странно то, что ранее в тот же день я попытался использовать Artifactory Pro, и все запустилось без каких-либо проблем. Причина, по которой я перестал его использовать, заключалась в том, что у нас не было лицензии Pro для установки, и нам пришлось перейти на версию OSS.
Судя по предоставленному фрагменту журнала, микросервис JFconnect, похоже, не запустился.
Насколько я знаю, этот сервис не должен блокировать загрузку и запуск Artifactory, а просто показывать ожидаемое исключение. Если Artifactory не запускается, это потенциальная ошибка.
В любом случае, я бы порекомендовал вам проверить, решит ли отключение этого микросервиса вашу проблему. Вы можете сделать это, отредактировав файл конфигурации system.yaml
:
jfconnect:
enabled: false
Я еще раз посмотрел на полный файл system.yaml по умолчанию, и оказалось, что порт по умолчанию для jfconnect установлен на 8030. Но если это так, то почему артефакты пытались связаться с ним через порт 8046?
Платформа JFrog использует два типа портов: 1. Внутренние порты (8046,8030, 8040 и т. д.). Эти порты предоставляются каждому микросервису и используются для внутренней связи с другими микросервисами в пределах одного узла/виртуальной машины. 2. Внешние порты (8081 и 8082) — специальные порты для микросервисов Router и Artifactory. (Да. Artifactory — это также название основного продукта платформы и конкретного микросервиса в приложении Artifactory). Подробнее о портах можно прочитать здесь (jfrog.com/help/r/jfrog-installation-setup-documentation/…)
Что касается вашего вопроса об общении с маршрутизатором (jfrog.com/help/r/jfrog-installation-setup-documentation/…), позвольте мне объяснить. Маршрутизатор — это встроенный обратный прокси-сервер, который перенаправляет запросы к нужному микросервису. Кроме того, он выполняет проверки работоспособности маршрутизации всех других микрослужб и определяет, доступны ли другие микрослужбы. Это объясняет связь Artifactory с маршрутизатором.
Дальнейшее добавление для наглядности: полученная вами ошибка связана с микрослужбой Access, что видно по «jfac» как журналу идентификаторов микрослужбы. Access попытался связаться с микросервисом JFconnect и обнаружил исключение. Мы видим, что он попробовал несколько раз и в конце концов сдался. В это время микрослужба маршрутизатора пытается отправить проверки работоспособности, но они не увенчались успехом, что может объяснить упомянутую связь с портом 8046.
Я понимаю. И последний вопрос: что такое служба jfconnect и могу ли я пока оставить ее отключенной? Насколько я понимаю, это связано с тем, что разрешено делать подключенной лицензии, но поскольку я использую версию OSS, я совершенно уверен, что лицензия не задействована.
Ты прав. JFconnect — это служба предоставления прав, которая обеспечивает динамическое распределение прав для подключенных продуктов на основе учетной записи/подписки. Поскольку вы используете версию OSS, лицензия не используется, поэтому эту службу можно отключить. Я думаю, что наблюдаемая проблема всегда будет возникать с версией OSS и может быть потенциальной ошибкой.
Куда мне следует сообщить о подобной ошибке для сортировки?
Вы можете открыть ошибку для этой проблемы в общедоступной JIRA JFrog jfrog.atlassian.net/jira/software/c/projects/RTFACT/issues . Сначала вы можете зарегистрироваться здесь id.atlassian.com/…
Я отключил эту службу, и артефакты теперь загружаются правильно. Я не уверен, действительно ли из-за этой службы она не работала, потому что до того, как я отключил эту службу, она попадала в окно входа в систему. Когда я пытался войти на эту страницу раньше, она, очевидно, зависала. Но теперь, когда служба jfconnect отключена, вход в систему работает и появляется мастер регистрации.