2011-01-10 105 views
1

我已經在Cassandra database(0.6.8)上安裝了一個測試雲服務器(Rackspace上的Ubuntu 10.10)。 使用cassandra-cli基本客戶端,我無法從服務器內部和外部計算機連接任何問題:我創建並檢索了示例數據。使用phpcassa無法連接到雲服務器上的Cassandra

我已經在雲服務器和外部計算機上安裝了phpcassa。

我創建了一個非常簡單的PHP程序來測試連接:

<?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.' 
?> 

我使用緩衝的傳輸。

我可以高興地連接並從服務器讀取中的數據(上我也安裝LAMP):

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

而不是從外面,因爲我總是得到異常:

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

這是我的storage-conf.xml文件:

<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支持建議更改fir ewall設置,但我沒有防火牆:

[email protected]:~# 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   

任何幫助非常感謝!

乾杯,Rujero

+1

什麼是你的外部機器是怎樣的?操作系統,PHP版本等是從服務器或從外部客戶端的iptables輸出? – 2011-01-11 02:38:48

回答