In my previous post I showed how to deploy hadoop clusters on-demand using Apache Whirr and CloudStack. Whirr can do much more than hadoop: Cassandra, Ganglia, Solr, Zookeeper etc...and of course Elasticsearch.
This post is really a little wink at a CloudStack PMC member and also a start of investigating if ES would be a better choice than Mongodb for all my email and logs analysis.
Let's get to it. In the Whirr source find the
For this test I am using exoscale again, but any CloudStack cloud like ikoula, pcextreme or leaseweb will do (some European chauvinism right there :) ). In a basic zone, specify your ssh keypairs that whirr will use to boostrap ES.
whirr.cloudstack-keypair=exoscale
Set the number of machines in the cluster
# Change the number of machines in the cluster here whirr.instance-templates=2 elasticsearch
Set the instance type of each cluster instanc (e.g large, extra-large etc..). I have not tried to pass them by name I just use the uuid from CloudStack.
whirr.hardware-id=b6cd1ff5-3a2f-4e9d-a4d1-8988c1191fe8
And of course define the endpoint
whirr.provider=cloudstack whirr.endpoint=https://api.exoscale.ch/compute
And define the template that you want to use (e.g Ubuntu, CentOS etc)
whirr.image-id=1d16c78d-268f-47d0-be0c-b80d31e765d2
Finally, define the ES tarball you want to use. Whirr has not updated this in a long time, so the default is still set at 0.15. Remember to change it.
# You can specify the version by setting the tarball url whirr.elasticsearch.tarball.url=http://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.2.tar.gz
Then launch the cluster
whirr launch-cluster --config elasticsearch.properties
When whirr is done launching and bootstrapping the instance you will get something like:
You can log into instances using the following ssh commands: [elasticsearch]: ssh -i /Users/toto/.ssh/id_rsa -o "UserKnownHostsFile /dev/null" -o StrictHostKeyChecking=no toto@185.19.28.90 [elasticsearch]: ssh -i /Users/toto/.ssh/id_rsa -o "UserKnownHostsFile /dev/null" -o StrictHostKeyChecking=no toto@185.19.28.92 To destroy cluster, run 'whirr destroy-cluster' with the same options used to launch it.
Don't bother with those IPs, the cluster is already dead when you read this and the security group are set so that I am the only one who can access them. That said you now have a working elasticsearch cluster in the cloud and you can hit it with the API:
$ curl -XGET 'http://185.19.28.90:9200/_cluster/nodes?pretty=true' { "ok" : true, "cluster_name" : "elasticsearch", "nodes" : { "njCzrXYaTnKxtqKsMrV-lA" : { "name" : "Powderkeg", "transport_address" : "inet[/185.19.28.90:9300]", "hostname" : "elasticsearch-f76", "version" : "0.90.2", "http_address" : "inet[/185.19.28.90:9200]" }, "bdqnkSNfTb63eGMM7CUjNA" : { "name" : "USAgent", "transport_address" : "inet[/185.19.28.92:9300]", "hostname" : "elasticsearch-a28", "version" : "0.90.2", "http_address" : "inet[/185.19.28.92:9200]" } }
Really cool, have fun !!!
No comments:
Post a Comment