[Cluster Daemon] - Add Shell Driver for Cluster Control [part 3]

in utopian-io •  5 years ago  (edited)



Clustd is an open source cluster management provider. The goal is to provide automated failover systems for apps, whether the system is down for maintenance or an unexpected event. When the system is ready, it will deployed in production on @steemdunk to minimize any form of downtime for the bot and web services.

Disclaimer: This is not intended to be used in conjunction with a database, otherwise data will be out of sync. See your database manual for setting up clusters that will preserve the integrity of your database across multiple machines.

What does a cluster look like?

Reminder from part 2 of what the full cluster will look like. This driver allows you to put the full setup into action for testing and deployment across multiple machines. :)

Each machine runs a clustd daemon. The daemon provides automatic consensus on deciding a new master if the master goes down. Drivers control what actions to perform when this happens.

Shell Driver

This is the first release of the shell driver. It is the most basic of all but can be used to virtually control anything on the system with a shell script. The script is executed as the same user as the driver process. Scripts must not require any form of manual intervention! This includes sudo that requires a password.

The "1" and "2" and the script output is retrieved from the configuration as an environment variable. This is the output of the driver with full debugging enabled.

The following configuration is used:

host: ws://
secret: 'cluster secret'
  shell: /bin/bash
  cwd: .
  start: ./start.sh
  stop: ./stop.sh
    TEST: 1
    MY_VAR: 2

Of course, you can specify any shell or command. The start/stop commands don't even need to be scripts. It can be something as simple as systemctl start myservice (this command may require root depending on your system configuration). Scripts are the recommended way to go if more than a single line is needed.

Find the driver here: https://github.com/steemdunk/clustd-driver-shell

Now what?

clustd can now be deployed in a fully functional and useful manner. The previous parts setup the cluster, but wasn't able to provide usefulness. The shell driver will now fill the missing gap to provide full functionality you would expect of a cluster.

This is the first step towards creating a cluster for @steemdunk and will be deployed there first on a couple of machines. Afterwards automatic DNS record updating and notification drivers can be implemented to ensure uptime of web services and to personally notify me of issues.

Previous parts

If you're new to the project, be sure to check out the previous parts to get a full idea on the project.


Posted on Utopian.io - Rewarding Open Source Contributors

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Thank you for the contribution. It has been approved.

You can contact us on Discord.


I am not computer savvy...but thanks anyway.

This is really cool!

Another genius contribution Sir Sam, Amazing work brother

Great upgrade!

You do an amazing job, keep it up!

Hey @samrg472 I am @utopian-io. I have just upvoted you!


  • You have less than 500 followers. Just gave you a gift to help you succeed!
  • Seems like you contribute quite often. AMAZING!

Community-Driven Witness!

I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!


Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x

so data can travel smoother nice!

Well done!

  ·  5 years ago Reveal Comment