mesos / mr-redis

Redis on Apache Mesos
Apache License 2.0
127 stars 32 forks source link

New GitHub release #33

Open gdhgdhgdh opened 8 years ago

gdhgdhgdh commented 8 years ago

Hello!

I'm using mr-redis today for the first time (on DC/OS) and this is a great project :) Is there any chance of publishing a 0.0.2 release on GitHub (and DC/OS package Universe ?) ?

The 0.0.1 in March 2016 was a long time ago and many new features have been contributed!

Gavin

dhilipkumars commented 8 years ago

HI Gavin, Sorry for the delay in responding. it is great to hear from you. I will update the docker image (so that you get the latest in DC/OS) as well as update the release with the latest binaries.

I have planned certain things for the next release dockerizing the workload and wanted to use the latest Mesos's POD facility (especially the Auto Restart Policy) as soon as its available. It might take bit more time.

It would be great to hear more from you on this project.

Thanks Dhilip

gdhgdhgdh commented 8 years ago

Excellent - thank you :)

One of the key points for me is the need for better service discovery... e.g. the DC/OS Cassandra and Kafka frameworks all have callable API's to get connection information, e.g.

https://github.com/mesosphere/dcos-cassandra-service#retrieve-connection-info

Similarly being able to call <dcos_url>/mr-redis/v1/nodes/<INSTANCENAME>/connect and get the addresses + ports of masters + slaves would be much more consistent with DC/OS design.

This is key because only nodes inside DC/OS are able to resolve 'mr-redis.marathon.mesos' and our automation relies on this information being accessed from other networks via a well-known URL.

gdhgdhgdh commented 8 years ago

Actually, even more useful would be 'VIP' (virtual IP) support.. This is a new internal load-balancer https://github.com/dcos/minuteman in DC/OS 1.8 which uses iptables to pass traffic into userspace:

In short, by accessing a special hostname format, you can access a service on a fixed hostname and IP address, and get the same benefit as using HAProxy, but without having to use HAProxy, and without any DNS caching problems.

Taking Kafka as an example: See step 3 of https://github.com/mesosphere/dcos-kafka-service#quick-start

Now rather than having to store + access each of the broker hostnames (broker-0, broker-1, broker-2) individually, it is now possible to access the single hostname broker.kafka.l4lb.thisdcos.directory (minuteman will automatically allocate a fictional IP address and adjust the networking)

It would be excellent to be able to access master.instancename.mr-redis.l4lb.thisdcos.directory or slave.instancename.mr-redis.l4lb.thisdcos.directory !

dhilipkumars commented 8 years ago

@gdhgdhgdh we can easily expose a 'connect api but not sure how they have integrated it with dcos_url, ill check for now you could use mr-redis:port/v1//STATUS returns a json with connection information.

with respect to VIP, i have been looking at the VIP options and want to give it a try. I will create ISSUES and add it to the next milestone. Hopefully you should be able to get these the next version.

gdhgdhgdh commented 8 years ago

Ah excellent, thank you :) I have already been using the JSON output from the STATUS endpoint - the complexity in our environment is that we submit new Marathon jobs from Jenkins, which lives outside the DC/OS cluster...

So whilst it's fine to access the external-facing DC/OS URL for Cassandra/Kafka, the mr-redis admin endpoint is only available inside the DC/OS cluster on port 5656... that means some bad trickery is needed to get the host/port :)

I'm really looking forward to future releases - thanks for picking this up!