Eu tenho um aplicativo que usa o cliente PyCassa Cassandra para abrir várias conexões simultâneas para um servidor Cassandra. Quando executo o aplicativo cliente localmente no servidor de banco de dados, ele funciona. No entanto, quando eu encaminhar a porta Cassandra através de um túnel ssh para o servidor de banco de dados e conectar o aplicativo cliente para o servidor através deste túnel, algumas conexões recebem, mas geralmente eu recebo erros como este:
'2012210105:49:49'|WARNING |_append_historyStorage|75 |Exception when appending to CassandraTimeSeries
Traceback (most recent call last):
File "atr/cassandratimeseries.py", line 140, in append
cf = self._getColumnFamily(duration, 'main')
File "atr/cassandratimeseries.py", line 63, in _getColumnFamily
return ColumnFamily(ConnectionPool(self._keyspace, pool_timeout=100, timeout=15, max_overflow=5), self._columnFamilyName(duration, table_type), **self._column_family_op_options)
File "/usr/local/lib/python2.7/dist-packages/pycassa/pool.py", line 356, in __init__
self.fill()
File "/usr/local/lib/python2.7/dist-packages/pycassa/pool.py", line 415, in fill
conn = self._create_connection()
File "/usr/local/lib/python2.7/dist-packages/pycassa/pool.py", line 403, in _create_connection
(exc.__class__.__name__, exc))
AllServersUnavailable: An attempt was made to connect to each of the servers twice, but none of the attempts succeeded. The last failure was TTransportException: TSocket read 0 bytes
Em um terminal onde eu estava ssh'd no servidor é impresso uma linha de mensagens como:
channel 1034: open failed: administratively prohibited: open failed
channel 1035: open failed: administratively prohibited: open failed
channel 1036: open failed: administratively prohibited: open failed
channel 1037: open failed: administratively prohibited: open failed
channel 1038: open failed: administratively prohibited: open failed
channel 1039: open failed: administratively prohibited: open failed
channel 1040: open failed: administratively prohibited: open failed
Curiosamente, se eu tentar ssh no servidor, obtenho:
channel 1023: chan_read_failed for istate 1
channel 1023: chan_write_failed for ostate 3
Shared connection to xx.xxx.xxx.xxx closed.
Se eu excluir o arquivo de soquete principal em / tmp, então eu posso ssh para ele novamente.
Alguma idéia do que poderia estar dando errado? Eu já aumentei o limite de nofile via /etc/security/limits.conf para o cliente e o servidor (para dez mil) e reiniciei. O "open failed: administratively prohibited" sugere que há algum limite administrativo sendo atingido. O que é e como faço para aumentar (e como eu deveria ter percebido isso por mim mesmo?)
Existem outras maneiras pelas quais os túneis ssh são mais limitados do que se conectar a uma porta local?
obrigado