Sommario

Introduzione

Problema

Soluzione

Introduzione

In questo documento viene descritto come risolvere i problemi se si verifica un errore di "connessione scaduta" in CloudCenter Orchestrator (CCO).

Problema

Dopo aver configurato MongoDB per CCO, è probabile che si verifichi un errore quando non è in grado di connettersi correttamente a MongoDB. Il problema può essere dovuto a diversi fattori, tuttavia lo scenario menzionato riguarda le porte bloccate da IPTABLES.

Per diagnosticare il problema, si consiglia sempre di esaminare i file di registro e verificare la causa effettiva dell'errore. In questo caso l'errore è causato dal timeout della connessione.

2017-05-25 17:35:53,340 ERROR context.ContextLoader [localhost-startStop-1]  - Context initialization failed

com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=localhost:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused (Connection refused)}}]

at com.mongodb.connection.BaseCluster.createTimeoutException(BaseCluster.java:369)

at com.mongodb.connection.BaseCluster.selectServer(BaseCluster.java:101)

at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.

(ClusterBinding.java:75)

at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.

(ClusterBinding.java:71)

at com.mongodb.binding.ClusterBinding.getReadConnectionSource(ClusterBinding.java:63)

at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:210)

at com.mongodb.operation.FindOperation.execute(FindOperation.java:480)

at com.mongodb.operation.FindOperation.execute(FindOperation.java:77)

at com.mongodb.Mongo.execute(Mongo.java:773)

at com.mongodb.Mongo$2.execute(Mongo.java:760)

at com.mongodb.DBCursor.initializeCursor(DBCursor.java:851)

at com.mongodb.DBCursor.hasNext(DBCursor.java:152)

at com.hazelcast.spring.mongodb.MongoMapStore.loadAllKeys(MongoMapStore.java:142)

at com.hazelcast.spring.mongodb.MongoMapStore.loadAllKeys(MongoMapStore.java:47)

at com.hazelcast.map.impl.MapStoreWrapper.loadAllKeys(MapStoreWrapper.java:119)

at com.hazelcast.map.impl.mapstore.BasicMapStoreContext.loadAllKeys(BasicMapStoreContext.java:179)

at com.hazelcast.map.impl.MapKeyLoader.sendKeysInBatches(MapKeyLoader.java:249)

at com.hazelcast.map.impl.MapKeyLoader.access$200(MapKeyLoader.java:65)

at com.hazelcast.map.impl.MapKeyLoader$1.call(MapKeyLoader.java:152)

at com.hazelcast.map.impl.MapKeyLoader$1.call(MapKeyLoader.java:149)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at com.hazelcast.util.executor.CompletableFutureTask.run(CompletableFutureTask.java:57)

at com.hazelcast.util.executor.CachedExecutorServiceDelegate$Worker.run(CachedExecutorServiceDelegate.java:209)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at java.lang.Thread.run(Thread.java:748)

at com.hazelcast.util.executor.HazelcastManagedThread.executeRun(HazelcastManagedThread.java:76)

at com.hazelcast.util.executor.HazelcastManagedThread.run(HazelcastManagedThread.java:92)

Versione applicazione

CloudCenter

4.6.x / 4.7.x / 4.8.0

Soluzione

Aggiungere un'eccezione per MongoDB in IPTABLES ed eseguire questo comando:

# iptables -A INPUT -ptcp --dport 27017 -j ACCEPT

Riavviare quindi il servizio MongoDB e il servizio tomcat:

# /etc/init.d/mongod restart

# /etc/init.d/tomcat restart