In short - I would recommend using SolrCloud
in a model where you have a load balancing in place (either by the built-in Solr Load Balancing or by an external load balancer that is handling the load between the nodes). This should be the recommended approach for handling the shards optimally.
In that case you must connect to the load balancer url and pass solrcloud=true
in the connection string.
So your connection string should look like this:
https://[LOADBALANCER_URL]:[LOAD_BALANCER_PORT]/solr;solrCloud=true
If you need some inspiration you can refer to Setting up SolrCloud Documentation.
If you are not having a load-balancing in place (which I wouldn't recommend :)). You should just connect to the Master
server on all the servers that are doing writes
and use the slave for all the servers that are doing reads
as normal Solr servers, but you are going to lose the primary capabilities of scaling :).