Cannot connect to Cassandra on a cloud server using phpcassa

大兔子大兔子 提交于 2019-12-08 05:44:36

问题


I have setup a test cloud server (Ubuntu 10.10 on Rackspace) to play with Cassandra database (0.6.8). I can connect no problem both from within the server and from a computer external to the cloud using the cassandra-cli basic client: I have created and retrieved sample data.

I have then installed phpcassa on the cloud server and on an external computer.

I have created a very simple php program to test the connection:

<?php
$GLOBALS['THRIFT_ROOT'] = dirname(__FILE__) . '/include/thrift/';
require_once $GLOBALS['THRIFT_ROOT'].'/packages/cassandra/Cassandra.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TSocket.php';
require_once $GLOBALS['THRIFT_ROOT'].'/protocol/TBinaryProtocol.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TFramedTransport.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TBufferedTransport.php';

include_once(dirname(__FILE__) . '/include/phpcassa.php');
include_once(dirname(__FILE__) . '/include/uuid.php');

echo 'phpcassa test01<br /><br />';
CassandraConn::add_node('184.106.97.245', 9160);

$users = new CassandraCF('Keyspace1', 'Standard2');

try {
    $res = $users->get('jsmith');
    print_r($res);
} catch (Exception $e) {
    print CassandraConn::$last_error;
}

echo 'End.'
?>

I am using buffered transport.

I can happily connect and read data from within the server (I have also installed LAMP on it):

phpcassa test01
Array ( [age] => 42 [first] => John [last] => Smith ) 
End.

but not from outside because I am always getting the exception:

phpcassa test01
TException: TSocket: Could not connect to 184.106.97.245:9160 (Operation timed out [60])
End.

This is my storage-conf.xml file:

<Storage>
<ClusterName>Test Cluster</ClusterName>
<AutoBootstrap>false</AutoBootstrap>
<HintedHandoffEnabled>true</HintedHandoffEnabled>
<IndexInterval>128</IndexInterval>
<Keyspaces>
<Keyspace Name="Keyspace1">
  <ColumnFamily Name="Standard1" CompareWith="BytesType"
                KeysCached="1000"
                RowsCached="100"
                RowCacheSavePeriodInSeconds="0"
                KeyCacheSavePeriodInSeconds="3600"/>
  <ColumnFamily Name="Standard2" 
                CompareWith="UTF8Type"
                KeysCached="100%"/>
  <ColumnFamily Name="StandardByUUID1" CompareWith="TimeUUIDType" />
  <ColumnFamily Name="Super1"
                ColumnType="Super"
                CompareWith="BytesType"
                CompareSubcolumnsWith="BytesType" />
  <ColumnFamily Name="Super2"
                ColumnType="Super"
                CompareWith="UTF8Type"
                CompareSubcolumnsWith="UTF8Type"
                RowsCached="10000"
                KeysCached="50%"
                Comment="A column family with supercolumns, whose column and subcolumn names are UTF8 strings"/>
  <ReplicaPlacementStrategy>org.apache.cassandra.locator.RackUnawareStrategy</ReplicaPlacementStrategy>
  <ReplicationFactor>1</ReplicationFactor>
  <EndPointSnitch>org.apache.cassandra.locator.EndPointSnitch</EndPointSnitch>        
</Keyspace>
</Keyspaces>
<Authenticator>org.apache.cassandra.auth.AllowAllAuthenticator</Authenticator>  
<Partitioner>org.apache.cassandra.dht.RandomPartitioner</Partitioner>
<InitialToken></InitialToken>
<SavedCachesDirectory>/var/lib/cassandra/saved_caches</SavedCachesDirectory>
<CommitLogDirectory>/var/lib/cassandra/commitlog</CommitLogDirectory>
<DataFileDirectories>
  <DataFileDirectory>/var/lib/cassandra/data</DataFileDirectory>
</DataFileDirectories>
<Seeds>
  <Seed>184.106.97.245</Seed>
</Seeds>
<RpcTimeoutInMillis>10000</RpcTimeoutInMillis>
<CommitLogRotationThresholdInMB>128</CommitLogRotationThresholdInMB>
<ListenAddress>184.106.97.245</ListenAddress>
<StoragePort>7000</StoragePort>
<ThriftAddress>184.106.97.245</ThriftAddress>
<ThriftPort>9160</ThriftPort>
<ThriftFramedTransport>false</ThriftFramedTransport>
<DiskAccessMode>auto</DiskAccessMode>
<RowWarningThresholdInMB>64</RowWarningThresholdInMB>
<SlicedBufferSizeInKB>64</SlicedBufferSizeInKB>
<FlushDataBufferSizeInMB>32</FlushDataBufferSizeInMB>
<FlushIndexBufferSizeInMB>8</FlushIndexBufferSizeInMB>
<ColumnIndexSizeInKB>64</ColumnIndexSizeInKB>
<MemtableThroughputInMB>64</MemtableThroughputInMB>
<BinaryMemtableThroughputInMB>256</BinaryMemtableThroughputInMB>
<MemtableOperationsInMillions>0.3</MemtableOperationsInMillions>
<MemtableFlushAfterMinutes>60</MemtableFlushAfterMinutes>
<ConcurrentReads>8</ConcurrentReads>
<ConcurrentWrites>32</ConcurrentWrites>
<CommitLogSync>periodic</CommitLogSync>
<CommitLogSyncPeriodInMS>10000</CommitLogSyncPeriodInMS>
<GCGraceSeconds>864000</GCGraceSeconds>
<DoConsistencyChecksBoolean>true</DoConsistencyChecksBoolean>
</Storage>

Rackspace support suggested changing the firewall settings but I have no firewall:

root@Oahu:~# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Any help very much appreciated!!!

Cheers, Rujero


回答1:


Access the node (first) with http://wiki.apache.org/cassandra/CassandraCli



来源:https://stackoverflow.com/questions/4651519/cannot-connect-to-cassandra-on-a-cloud-server-using-phpcassa

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!