cloudstack-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Indra Pramana <in...@sg.or.id>
Subject Problem in adding Ceph RBD as primary storage for CloudStack 4.1.0
Date Wed, 10 Jul 2013 09:45:25 GMT
Dear all,

I am installing CloudStack 4.1.0 (upgraded from 4.0.2) and I also have a
Ceph cluster running. However, I am having issues in adding the RBD as
primary storage. Tried to follow the instruction here, but unable to make
it work:

http://ceph.com/docs/master/rbd/rbd-cloudstack/

I have setup a pool on the Ceph cluster. The status of the cluster is
healthy. Since I am using Ubuntu 12.04.2 LTS (Precise) for the hypervisors,
I also have compiled libvirt manually to ensure that the version 0.9.13 is
installed (previously it's 0.9.8).

indra@hv-kvm-01:~/rbd$ ceph
ceph> health
HEALTH_OK

indra@hv-kvm-01:~$ ceph osd lspools
0 data,1 metadata,2 rbd,3 sc1,

root@hv-kvm-01:/home/indra# libvirtd --version
libvirtd (libvirt) 0.9.13

I tried to add Primary Storage into the Cloudstack zone which I have
created:

Add Primary Storage:

Zone: my zone name
Pod: my pod name
Cluster: my cluster name
Name: ceph-rbd-pri-storage
Protocol: RBD
RADOS Monitor: my first Ceph monitor IP address
RADOS Pool: sc1 (the pool name on Ceph cluster)
RADOS User: client.admin
RADOS Secret: /etc/ceph/ceph.client.admin.keyring (keyring file location)
Storage Tags: rbd

This is the error message when I tried to add the primary storage by
clicking OK:

DB Exception on: com.mysql.jdbc.JDBC4PreparedStatement@4b2eb56: INSERT INTO
storage_pool (storage_pool.id, storage_pool.name, storage_pool.uuid,
storage_pool.pool_type, storage_pool.created, storage_pool.update_time,
storage_pool.data_center_id, storage_pool.pod_id,
storage_pool.available_bytes, storage_pool.capacity_bytes,
storage_pool.status, storage_pool.scope, storage_pool.storage_provider_id,
storage_pool.host_address, storage_pool.path, storage_pool.port,
storage_pool.user_info, storage_pool.cluster_id) VALUES (217,
_binary'ceph-rbd-pri-storage',
_binary'a226c9a1-da78-3f3a-b5ac-e18b925c9634', 'RBD', '2013-07-10
09:08:28', null, 2, 2, 0, 0, 'Up', null, null, null, _binary'ceph/
ceph.client.admin.keyring@10.237.11.2/sc1', 6789, null, 2)

On the management-server.log file:

2013-07-10 17:08:28,845 DEBUG [cloud.api.ApiServlet] (catalina-exec-2:null)
===START===  192.168.0.100 -- GET
command=createStoragePool&zoneid=c116950e-e4ae-4f23-a7e7-
74a75c4ee638&podId=a748b063-3a83-4175-a0e9-de39118fe5ce&clusterid=1f87eb09-324d-4d49-83c2-88d84d7a15df&name=ceph-rbd-pri-storage&url=rbd%3A%2F%2Fclient.admin%3A_etc%2Fc
eph%2Fceph.client.admin.keyring%4010.237.11.2%2Fsc1&tags=rbd&response=json&sessionkey=rDRfWpqeKfQKbKZtHr398ULV%2F8k%3D&_=1373447307839
2013-07-10 17:08:28,862 DEBUG [cloud.storage.StorageManagerImpl]
(catalina-exec-2:null) createPool Params @ scheme - rbd storageHost - null
hostPath - /ceph/ceph.client
.admin.keyring@10.237.11.2/sc1 port - -1
2013-07-10 17:08:28,918 DEBUG [cloud.storage.StorageManagerImpl]
(catalina-exec-2:null) In createPool Setting poolId - 217 uuid -
a226c9a1-da78-3f3a-b5ac-e18b925c9634 z
oneId - 2 podId - 2 poolName - ceph-rbd-pri-storage
2013-07-10 17:08:28,921 DEBUG [db.Transaction.Transaction]
(catalina-exec-2:null) Rolling back the transaction: Time = 3 Name =
persist; called by -Transaction.rollbac
k:890-Transaction.removeUpTo:833-Transaction.close:657-TransactionContextBuilder.interceptException:63-ComponentInstantiationPostProcessor$InterceptorDispatcher.interce
pt:133-StorageManagerImpl.createPool:1378-StorageManagerImpl.createPool:147-CreateStoragePoolCmd.execute:123-ApiDispatcher.dispatch:162-ApiServer.queueCommand:505-ApiSe
rver.handleRequest:355-ApiServlet.processRequest:302
2013-07-10 17:08:28,923 ERROR [cloud.api.ApiServer] (catalina-exec-2:null)
unhandled exception executing api command: createStoragePool
com.cloud.utils.exception.CloudRuntimeException: DB Exception on:
com.mysql.jdbc.JDBC4PreparedStatement@4b2eb56: INSERT INTO storage_pool (
storage_pool.id, storage_pool
.name, storage_pool.uuid, storage_pool.pool_type, storage_pool.created,
storage_pool.update_time, storage_pool.data_center_id, storage_pool.pod_id,
storage_pool.availab
le_bytes, storage_pool.capacity_bytes, storage_pool.status,
storage_pool.scope, storage_pool.storage_provider_id,
storage_pool.host_address, storage_pool.path, storage_
pool.port, storage_pool.user_info, storage_pool.cluster_id) VALUES (217,
_binary'ceph-rbd-pri-storage',
_binary'a226c9a1-da78-3f3a-b5ac-e18b925c9634', 'RBD', '2013-07-1
0 09:08:28', null, 2, 2, 0, 0, 'Up', null, null, null, _binary'ceph/
ceph.client.admin.keyring@10.237.11.2/sc1', 6789, null, 2)
        at
com.cloud.utils.db.GenericDaoBase.persist(GenericDaoBase.java:1342)
        at
com.cloud.storage.dao.StoragePoolDaoImpl.persist(StoragePoolDaoImpl.java:232)
        at
com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125)
        at
com.cloud.storage.StorageManagerImpl.createPool(StorageManagerImpl.java:1378)
        at
com.cloud.storage.StorageManagerImpl.createPool(StorageManagerImpl.java:147)
        at
org.apache.cloudstack.api.command.admin.storage.CreateStoragePoolCmd.execute(CreateStoragePoolCmd.java:123)
        at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:162)
        at com.cloud.api.ApiServer.queueCommand(ApiServer.java:505)
        at com.cloud.api.ApiServer.handleRequest(ApiServer.java:355)
        at com.cloud.api.ApiServlet.processRequest(ApiServlet.java:302)
        at com.cloud.api.ApiServlet.doGet(ApiServlet.java:66)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:615)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at
org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:889)
        at
org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:744)
        at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:2282)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:679)
Caused by:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:
Column 'host_address' cannot be null
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
        at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.Util.getInstance(Util.java:386)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1040)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2468)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2719)
        at
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
        at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2450)
        at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2371)
        at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2355)
        at
org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
        at
org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
        at
com.cloud.utils.db.GenericDaoBase.persist(GenericDaoBase.java:1305)
        ... 32 more
2013-07-10 17:08:28,927 DEBUG [cloud.api.ApiServlet] (catalina-exec-2:null)
===END===  192.168.0.100 -- GET
command=createStoragePool&zoneid=c116950e-e4ae-4f23-a7e7-74a75c4ee638&podId=a748b063-3a83-4175-a0e9-de39118fe5ce&clusterid=1f87eb09-324d-4d49-83c2-88d84d7a15df&name=ceph-rbd-pri-storage&url=rbd%3A%2F%2Fclient.admin%3A_etc%2Fceph%2Fceph.client.admin.keyring%4010.237.11.2%2Fsc1&tags=rbd&response=json&sessionkey=rDRfWpqeKfQKbKZtHr398ULV%2F8k%3D&_=1373447307839

Based on the error message, I tried to map the value of each field being
submitted, and it seems the problem is here:

Caused by:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:
Column 'host_address' cannot be null

storage_pool.id, 215
storage_pool.name, _binary'sc1'
storage_pool.uuid, _binary'a226c9a1-da78-3f3a-b5ac-e18b925c9634'
storage_pool.pool_type, 'RBD'
storage_pool.created, '2013-07-10 08:27:03'
storage_pool.update_time, null
storage_pool.data_center_id, 2
storage_pool.pod_id, 2
storage_pool.available_bytes, 0
storage_pool.capacity_bytes, 0
storage_pool.status, 'Up'
storage_pool.scope, null
storage_pool.storage_provider_id, null
storage_pool.host_address, null <=======
storage_pool.path, _binary'ceph/ceph.client.admin.keyring@10.237.11.2/sc1
storage_pool.port, 6789
storage_pool.user_info, null
storage_pool.cluster_id, 2

It seems that it's expecting the IP address / hostname of the monitor
server on the "storage_pool.host_address" field. However, I noted that the
IP address is in the storage_pool.path field rather than the
storage_pool.host_address.

Anyone knows what can be done to resolve this problem?

Looking forward to your reply, thank you.

Cheers.

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message