gerlowskija opened a new pull request, #2391: URL: https://github.com/apache/solr/pull/2391
# Description Prior to this commit, Solr only supported running embedded-ZK in "standalone" mode (which cannot take part in any larger ZK ensemble or quorum). But there are usecases that would benefit from being able to do this, both on the development and testing side, and event for adventurous users who might want the benefits of a small multi-node SolrCloud cluster without the headache of also deploying ZK. # Solution This commit augments our embedded-ZK code to support running embedded-ZK in "quorum" or ensemble mode. Multiple Solr nodes can now all have their embedded-ZK's join a multi-node quorum upon startup. Other than Solr and ZK sharing a process, the embedded- ZK ensemble behaves identically to one formed of independent processes: nodes can join or leave the cluster, etc. Embedded-ensemble-ZK is enabled any time the `zkQuorumRun` system property is present, along with an explicitly specified ZK host string. On startup, Solr will identify which host in the zk-conn-string it should be (based on admittedly hacky heuristics), and then spins up a 'ZooKeeperServerEmbedded' instance in-process to join the ensemble. e.g. ``` export LH="localhost" # Run each below in a separate terminal, one for each host in the zk-conn string bin/solr start -p 8983 -z $LH:9983,$LH:9984,$LH:9985 -DzkQuorumRun bin/solr start -p 8984 -z $LH:9983,$LH:9984,$LH:9985 -DzkQuorumRun bin/solr start -p 8985 -z $LH:9983,$LH:9984,$LH:9985 -DzkQuorumRun ``` Some notes: - this doesn't (yet) work with ZK's dynamic-ensemble feature, so all ZK nodes must be specified in a static ZK conn string provided at startup - this appears to run best when the security-manager is disabled. - the interface in particular for how we expose this is pretty rough, and there's a lot of room for improvement. # Tests None, yet. # Checklist Please review the following and check all that apply: - [x] I have reviewed the guidelines for [How to Contribute](https://github.com/apache/solr/blob/main/CONTRIBUTING.md) and my code conforms to the standards described there to the best of my ability. - [ ] I have created a Jira issue and added the issue ID to my pull request title. - [ ] I have given Solr maintainers [access](https://help.github.com/en/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork) to contribute to my PR branch. (optional but recommended) - [ ] I have developed this patch against the `main` branch. - [ ] I have run `./gradlew check`. - [ ] I have added tests for my changes. - [ ] I have added documentation for the [Reference Guide](https://github.com/apache/solr/tree/main/solr/solr-ref-guide) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For additional commands, e-mail: issues-h...@solr.apache.org