簡體   English   中英

無法使用phpcassa連接到雲服務器上的Cassandra

[英]Cannot connect to Cassandra on a cloud server using phpcassa

我已經設置了一個測試雲服務器(Rackspace上的Ubuntu 10.10)來使用Cassandra數據庫 (0.6.8)。 使用cassandra-cli基本客戶端,無論是從服務器內部還是從雲外部的計算機,我都可以毫無問題地連接:我已經創建並檢索了示例數據。

然后,我已經在雲服務器和外部計算機上安裝了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支持建議更改防火牆設置,但我沒有防火牆:

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         

任何幫助非常感謝!!!

干杯,魯傑羅

使用http://wiki.apache.org/cassandra/Cas​​sandraCli訪問節點(第一個)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM