mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-24 02:20:37 +00:00
The concept of seed and the different behaviour between seed nodes and non seed nodes generate a lot of confusion, complication and error for users. For example, how to add a seed node into into a cluster, how to promote a non seed node to a seed node, how to choose seeds node in multiple DC setup, edit config files for seeds, why seed node does not bootstrap. If we remove the concept of seed, it will get much easier for users. After this series, seed config option is only used once when a new node joins a cluster. Major changes: - Seed nodes are only used as the initial contact point nodes. - Seed nodes now perform bootstrap. The only exception is the first node in the cluster. - The unsafe auto_bootstrap option is now ignored. - Gossip shadow round now attempts to talk to all nodes instead of just seed nodes. Manual test: - bootstrap n1, n2, n3 (n1 and n2 are listed as seed, check only n1 will skip bootstrap, n2 and n3 will bootstrap) - shtudown n1, n2, n3 - start n2 (check non seed node can boot) - start n1 (check n1 talks to both n2 and n3) - start n3 (check n3 talks to both n1 and n3) Upgrade/Downgrade test: - Initialize cluster Start 3 node with n1, n2, n3 using old version n1 and n2 are listed as seed - Test upgrade starting from seed nodes Rolling restart n1 using new version Rolling restart n2 using new version Rolling restart n3 using new version - Test downgrade to old version Rolling restart n1 using old version Rolling restart n2 using old version Rolling restart n3 using old version - Test upgrade starting from non seed nodes Rolling restart n3 using new version Rolling restart n2 using new version Rolling restart n1 using new version Notes on upgrade procedure: There is no special procedure needed to upgrade to Scylla without seed concept. Rolling upgrade node one by one is good enough. Fixes: #6845 Tests: ./test.py + update_cluster_layout_tests.py + manual test