cloudstack-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chip Childers <chip.child...@sungard.com>
Subject Re: Problem in adding Ceph RBD as primary storage for CloudStack 4.1.0
Date Wed, 10 Jul 2013 13:42:05 GMT
Cc'ing Wido, our resident Ceph expert. ;-)

On Wed, Jul 10, 2013 at 05:45:25PM +0800, Indra Pramana wrote:
> 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
View raw message