Some project ideas:<p>1. Implement a leader election algorithm and play with the fault tolerance.<p>2. Implement Raft and learn about it, good and bad.<p>3. Implement a logging application that has to meet all the requirements for a good distributed system.  e.g. log from anywhere, always available, etc.  This sounds easy until you actually do it.<p>Alternatively, study code from memcached, redis or some other open source distributed software where there are known good and bad things.  Cassandra is another one you could study.