Я установил ONOS 2.3.0 на виртуальную машину Ubuntu Server 18.04.4, работающую в Hyper-V, выполнив следующие действия (взяты из здесь и здесь ):
- Сначала я установил Java 11 (openjdk-11-jdk и openjdk-11-jre), maven и curl;
- , затем я скачал ONOS 2.3.0 с здесь и извлек его с помощью
tar xzf onos-2.3.0.tar.gz
; - , наконец, я экспортировал необходимую переменную среды
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
.
Когда я пытаюсь запустить ее с помощью команды ./onos-service start
(проверено как от обычного пользователя, так и от sudo), он выдает мне следующие ошибки:
21:54:57.869 ERROR [onos-core-net] FrameworkEvent ERROR - org.onosproject.onos-core-net
org.osgi.framework.ServiceException: Service factory returned null. (Component: org.onosproject.store.cfg.DistributedComponentConfigStore (6))
at org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:380)
at org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:247) org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:834)
[...]
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1373)
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308) at java.base/java.lang.Thread.run(Thread.java:834)
[...]
21:54:57.881 WARN [NettyMessagingService] Failed to bind TCP server to port 0.0.0.0:9876 due to {}
java.net.BindException: Address already in use
at java.base/sun.nio.ch.Net.bind0(Native Method)
[...]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:906)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at java.base/java.lang.Thread.run(Thread.java:834)
21:54:57.899 ERROR [onos-core-primitives] bundle org.onosproject.onos-core-primitives:2.3.0 (192)[org.onosproject.store.atomix.impl.AtomixManager(115)] : The activate method has thrown an exception
java.util.concurrent.CompletionException: java.net.BindException: Address already in use
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331)
[...]
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.net.BindException: Address already in use
at java.base/sun.nio.ch.Net.bind0(Native Method)
at java.base/sun.nio.ch.Net.bind(Net.java:455)
at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:227)
at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:132)
at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:563)
... 12 more
Подключение к экземпляру karaf с помощью ssh -p 8101 karaf@localhost
подтверждает, что ONOS работает (хотя бы частично), веб интерфейс входа в систему загружается, но после входа он зависает, говоря, что ONOS GUI not ready yet... please stand by...
.
У кого-нибудь есть идеи о том, как решить эту проблему?
Заранее спасибо.
ОБНОВЛЕНИЕ 19-03-2020 : Я подготовил другую виртуальную машину, выполнив те же действия на другой P C, использующий VirtualBox и назначенные ему более низкие виртуальные ресурсы, и это работает. Честно говоря, я не понимаю, почему происходит сбой в конфигурации Hyper-V.
ОБНОВЛЕНИЕ 20-03-2020 : Я переустановил Ubuntu, настраивая сеть непосредственно из установщика, и необходимые условия и зависимости ONOS офлайн (скачал на другую машину через sudo apt install --download-only <package-name>
) и все заработало. Я думаю, что проблема была связана с чем-то в конфигурации сети, что не позволило ему распознать свой собственный процесс на порту 9876 (см. ПРЕДУПРЕЖДЕНИЕ выше). Надеюсь, что это может быть полезно для других.