[Cluster Daemon] - Add Shell Driver for Cluster Control [part 3]
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.
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://127.0.0.1:3001 secret: 'cluster secret' script: shell: /bin/bash cwd: . start: ./start.sh stop: ./stop.sh env: 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
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.
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