You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Piavlo <lo...@gmail.com> on 2012/05/16 12:14:47 UTC

is it possible to run cassandra process in client mode as smart proxy

  Hi,

I'm interested in using some smart proxy cassandra process that could 
act as coordinator node and be aware of cluster state.
And run this smart proxy cassandra process on each client side host  
where the application(php) with short lived cassandra connections runs.
Besides being aware of cluster state if it could act as coordinator node 
it would save unneeded network trips.
And maybe even have an option to take care of hinted handoffs.
IMHO the best candidate for this is the cassandra itself (like it's done 
in elasticsearch 
http://www.elasticsearch.org/guide/reference/modules/node.html)
I also see there was a work done in this direction at 
https://issues.apache.org/jira/browse/CASSANDRA-535
So maybe this is something that is already usable?

Or maybe there is some third party project that could be used as smart 
cassandra proxy?

Thanks
Alex

Re: is it possible to run cassandra process in client mode as smart proxy

Posted by "R. Verlangen" <ro...@us2.nl>.
Yes, I'm aware of those issues however in our use case they don't cause any
problems.

But ... If there's something better out there I'm really curious: so I'll
keep up with this thread.

2012/5/16 Piavlo <lo...@gmail.com>

>  On 05/16/2012 01:24 PM, R. Verlangen wrote:
>
> Hi there,
>
>  I'm using HAProxy for PHP projects to take care of this. It improved
> connection pooling enormous on the client side: with preserving failover
> capabilities. Maybe that is something for you to use in combination with
> PHP.
>
> I already use it exactly like this :)
> But i don't think it's a good solution. And it's totally unaware of
> thrift/cassandra protocol, it's was pretty well discussed here
>
> http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/Cassandra-amp-HAProxy-td5473144.html
> I even see the plain tcp healchecks failing from time to time for no
> reason.
> I'm planning to make it a bit smarter with localhost http level
> healthchecks - where it would make a cassandra write to CF in
>  keyspace wich has replication of 1, and will write to a key that maps to
> the specific cassandra node being checked by healthcheck (of course  the
> keys need to be recaclulated each time the cluster is rebalanced).
> But IMHO it's very very ugly hack, and not as reliable as real smart proxy
> which is way more superior and efficient (especially if it could do the
> reads/writes coordination itself).
>
> Haproxy also has an issue that then once of the backend ip changes (which
> happens often in clouds) it's has to be restarted to resolve the the
> correct hostname,
> though it looks like Willy is finally seriously considering to implement
> more dynamic for hostnames  lookups (which was not the case about a year
> ago then I asked  for such feature)
> the problem was is discussed here recently -
> http://marc.info/?l=haproxy&m=133559164408814&w=1
>
> haproxy has some more issues - i don't remember off top of my head.
>
> Smart proxy would simply not have all those issues, as it's aware of the
> ring state and the protocol and if smaprt proxy was  the cassandra itself
> then it would have all the needed features tested and reliable at no effort.
>
> Thanks
> Alex
>
>
>  Good luck!
>
> 2012/5/16 Piavlo <lo...@gmail.com>
>
>>
>>  Hi,
>>
>> I'm interested in using some smart proxy cassandra process that could act
>> as coordinator node and be aware of cluster state.
>> And run this smart proxy cassandra process on each client side host
>>  where the application(php) with short lived cassandra connections runs.
>> Besides being aware of cluster state if it could act as coordinator node
>> it would save unneeded network trips.
>> And maybe even have an option to take care of hinted handoffs.
>> IMHO the best candidate for this is the cassandra itself (like it's done
>> in elasticsearch
>> http://www.elasticsearch.org/guide/reference/modules/node.html)
>> I also see there was a work done in this direction at
>> https://issues.apache.org/jira/browse/CASSANDRA-535
>> So maybe this is something that is already usable?
>>
>> Or maybe there is some third party project that could be used as smart
>> cassandra proxy?
>>
>> Thanks
>> Alex
>>
>
>
>
>  --
> With kind regards,
>
>  Robin Verlangen
> www.robinverlangen.nl
>
>
>


-- 
With kind regards,

Robin Verlangen
www.robinverlangen.nl

Re: is it possible to run cassandra process in client mode as smart proxy

Posted by Piavlo <lo...@gmail.com>.
On 05/16/2012 01:24 PM, R. Verlangen wrote:
> Hi there,
>
> I'm using HAProxy for PHP projects to take care of this. It improved 
> connection pooling enormous on the client side: with preserving 
> failover capabilities. Maybe that is something for you to use in 
> combination with PHP.
I already use it exactly like this :)
But i don't think it's a good solution. And it's totally unaware of 
thrift/cassandra protocol, it's was pretty well discussed here
http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/Cassandra-amp-HAProxy-td5473144.html
I even see the plain tcp healchecks failing from time to time for no reason.
I'm planning to make it a bit smarter with localhost http level 
healthchecks - where it would make a cassandra write to CF in
  keyspace wich has replication of 1, and will write to a key that maps 
to the specific cassandra node being checked by healthcheck (of course  
the keys need to be recaclulated each time the cluster is rebalanced).
But IMHO it's very very ugly hack, and not as reliable as real smart 
proxy which is way more superior and efficient (especially if it could 
do the reads/writes coordination itself).

Haproxy also has an issue that then once of the backend ip changes 
(which happens often in clouds) it's has to be restarted to resolve the 
the correct hostname,
though it looks like Willy is finally seriously considering to implement 
more dynamic for hostnames  lookups (which was not the case about a year 
ago then I asked  for such feature)
the problem was is discussed here recently - 
http://marc.info/?l=haproxy&m=133559164408814&w=1

haproxy has some more issues - i don't remember off top of my head.

Smart proxy would simply not have all those issues, as it's aware of the 
ring state and the protocol and if smaprt proxy was  the cassandra 
itself then it would have all the needed features tested and reliable at 
no effort.

Thanks
Alex
>
> Good luck!
>
> 2012/5/16 Piavlo <lolitushka@gmail.com <ma...@gmail.com>>
>
>
>      Hi,
>
>     I'm interested in using some smart proxy cassandra process that
>     could act as coordinator node and be aware of cluster state.
>     And run this smart proxy cassandra process on each client side
>     host  where the application(php) with short lived cassandra
>     connections runs.
>     Besides being aware of cluster state if it could act as
>     coordinator node it would save unneeded network trips.
>     And maybe even have an option to take care of hinted handoffs.
>     IMHO the best candidate for this is the cassandra itself (like
>     it's done in elasticsearch
>     http://www.elasticsearch.org/guide/reference/modules/node.html)
>     I also see there was a work done in this direction at
>     https://issues.apache.org/jira/browse/CASSANDRA-535
>     So maybe this is something that is already usable?
>
>     Or maybe there is some third party project that could be used as
>     smart cassandra proxy?
>
>     Thanks
>     Alex
>
>
>
>
> -- 
> With kind regards,
>
> Robin Verlangen
> www.robinverlangen.nl <http://www.robinverlangen.nl>
>


Re: is it possible to run cassandra process in client mode as smart proxy

Posted by "R. Verlangen" <ro...@us2.nl>.
Hi there,

I'm using HAProxy for PHP projects to take care of this. It improved
connection pooling enormous on the client side: with preserving failover
capabilities. Maybe that is something for you to use in combination with
PHP.

Good luck!

2012/5/16 Piavlo <lo...@gmail.com>

>
>  Hi,
>
> I'm interested in using some smart proxy cassandra process that could act
> as coordinator node and be aware of cluster state.
> And run this smart proxy cassandra process on each client side host  where
> the application(php) with short lived cassandra connections runs.
> Besides being aware of cluster state if it could act as coordinator node
> it would save unneeded network trips.
> And maybe even have an option to take care of hinted handoffs.
> IMHO the best candidate for this is the cassandra itself (like it's done
> in elasticsearch http://www.elasticsearch.org/**
> guide/reference/modules/node.**html<http://www.elasticsearch.org/guide/reference/modules/node.html>
> )
> I also see there was a work done in this direction at
> https://issues.apache.org/**jira/browse/CASSANDRA-535<https://issues.apache.org/jira/browse/CASSANDRA-535>
> So maybe this is something that is already usable?
>
> Or maybe there is some third party project that could be used as smart
> cassandra proxy?
>
> Thanks
> Alex
>



-- 
With kind regards,

Robin Verlangen
www.robinverlangen.nl