Comments (4)
One idea I've formed is to send a signal to each piece of software that needs upgrading, tell it to shutdown, then either
- replace it with the upgraded software. Replacing the older version directly with the newer version assumes that the upgraded software can work with and/or upgrade the data from the older version, or
- add the new software to another path, then upgrade the scripts that launch these software. This means
- supporting 2 binary paths, ie, an A/B path, one for the older version, and one for the newer version.
- supporting 2 data paths, one for the older version, and one for the newer version.
- once upgrade is deemed successful, the older binary and data can either be kept/archived, or deleted. This option of having an A/B path takes into account that upgrade can fail.
This means one of the following:
- deploying an agent (like a software upgrade agent) on every node, which listens on a port for commands, then execute these commands, or
- use ssh to contact every node, and send a command to shutdown Quorum, Constellation, Vault, etc, or
- a combination of the above.
Ensure the following:
- each node's security, so that its software doesn't just listen to any Tom, Dick, Harry's command to shutdown, otherwise, the nodes could suffer from a DDOS attack.
- less than 1/2 of all validator nodes are down in 900 seconds, in order not to risk consensus failure. Is there a way to get node statistics? This can help in deciding to bring nodes down for upgrading.
- PATH in environment is upgraded, if necessary.
- launch scripts are upgraded.
- optionally, trigger a backup after the upgrade is completed.
Need to investigate whether each software can support a soft signal that handles an orderly shutdown, or if each software can recover from a fatal "kill" command.
The custom scripts (refer to Blockchain Lecture, pg 8-9 under Tech Stack) can be replaced directly using cp, or mv.
from terraform-aws-quorum-cluster.
@EximChua once you have determined the design you're going with (which you may or may not have already done) can you write up the details of your design?
Remember the program is run with supervisord, so you will be able to leverage that for starting and stopping the software that needs updating.
from terraform-aws-quorum-cluster.
Implemented as SoftwareUpgrade.
from terraform-aws-quorum-cluster.
I can't seem to close this issue.
from terraform-aws-quorum-cluster.
Related Issues (20)
- Validate Blocks by Region
- Flesh Out Resource Tagging HOT 1
- Reduce Threatstack alerts to manageable levels HOT 1
- How to update consensus mechanisms to use RAFT or ISTANBUL HOT 1
- Enable passwords for constellation keys HOT 3
- Change terraform boolean variables to use "true" & "false"
- Regionalize Backup Procedure HOT 2
- Mechanism to provide more detail when alarms trigger HOT 10
- ftp.gnu.org is broken HOT 1
- Tighten security group parameters on vault
- Integrate FoxPass SSH Key Management
- Fix vim vulnerabilities
- Look into scoping credentials
- Set up emergency access for vault via Okta
- Build out basic alarms HOT 2
- Disable Constellation on Mainnet HOT 1
- Add Elastic IPs to Observers (Optionally) HOT 1
- Mechanism to remove a single node HOT 1
- Investigate instance type mismatch
- Keep EBS volumes during deployment
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from terraform-aws-quorum-cluster.