devops

MongoDB cluster automation and orchestration by Puppet and Pulsar

Almost every software developer could say a few words about MongoDB. We could say scalability and replication out of the box, easy for clustering... and yes, this is true but to achieve that point there are many things to do!

I have spent a few weeks researching, learning and developing a set of tools to handle all MongoDB technologies and make it ready for real production so...

For a last few weeks my company is running mongo cluster based on over than 10 servers with more than 2 independent replicas and still grows. This is basically first technology we use which is built with concept of “distributed computing” in mind. As this kind of technology is sometimes difficult for administration we had to invest a lot of time for experiments to make sure this is secure for our production. A lot of work has been done in case of automation, orchestration, testing and reporting. We have large set of tools based on puppet, pulsar (sorry private repo), bipbip and cloud services like Copperegg and MMS for cluster backup and restore.

Our cluster is based on few roles: routers (mongos), shards/replicas (mongod), config servers (mongod) and MMS agents. For easy modeling and scaling we introduced Hiera based description for cluster and member roles (example). Each member of cluster is controlled by puppet which contains built in mongodb logic in case of replicasets and shards. Please have a look on very reach set of tests prepared for MongoDB Puppet Module.

The Pulsar tool which was previously used for many applications deployment in many environments was extended to orchestrate MongoDB cluster. So far it works very well for us. Basic implemented tasks list can be found here. Unfortunately full set of tasks is private now (hope will be public soon as well). There is built it simple logic for testing global health of cluster with output useful for e.g. monit or tools like pulsar-rest-api (in development, ETA end of 2014) which will be able to notify sysadmin team over hubot and hipchat or e.g. pager-duty!

Resource summary:

Comments

Related posts

PULSAR REST API

Why? If you work in scale, If you manage multiple application in multiple environments, If you automate any tasks using Capistrano then try a handy solutions which will improve and extend your workbench. Real-life scenario There are many automated tasks…

Infrastructure deployment with Puppet

After few months of hard work with new approach to infrastructure deployment I can say that the choice of using Puppet was very good. We reached our goals like: If you are interested in puppet please have a look on open…

Extending Puppetmaster module with Passenger

If you manage large farm of servers then most probably you experienced performance problems time to time. To solve puppetmaster problems with handling many of concurrent SSL connections the best solution is switch from WEBrick to Apache2 as gateway for…

Infrastructure deployment with Puppet

After few months of hard work with new approach to infrastructure deployment I can say that the choice of using Puppet was very good. We reached our goals like: If you are interested in puppet please have a look on open…