Apache ZooKeeper is a great tool to synchronize virtual machines and services on Windows Azure, as well as on-premise servers, and even other cloud providers. ZooKeeper maintains the state of systems in memory as well as storing status information in local log files for session and system persistence. It’s designed to keep large numbers of processes on servers running as nodes in a cluster.
ZooKeeper creates what it calls znodes, which are in their simplest form files persisting in memory on each ZooKeeper server and persisted locally on disk. These status files can be updated by other znodes in a defined cluster. Any node in the cluster can also register to “watch” other znodes. Applications can synchronize tasks across the ZooKeeper cluster by updating their znode status and informing “watchers” of a specific status change. Status is centralized via a master server to manage and serialize tasks across a distributed set of znodes.
Here at Microsoft Open Technologies, Inc, we’ve been working with ZooKeeper to make sure it runs reliably and performs well on Windows Azure. It’s part of our overall plan to ensure Open Source DevOps tools are interoperable and easy to use with Windows Azure, devices, and other Microsoft tools and technologies.