MongoDB multi-datacenter deployment and shard keys
Yes, your question is quite loaded...
1.1 Yes, every shard should have RS
1.2 Every RS have it's own master.
2.1. Only if you do slave reads. Normally read is done from primary. It will not affect replication directly. Only write of data, when write concern is majority.
2.2. If you do slave read AND you connect to specific instance, then data is read from that instance.
2.3. Yes you can do that.
3.1. NO.
3.2. NO.
You can have (of course) 2 shards in US-West and 2 shards in US-East... You just have then 4 shard cluster what uses compound sharding key {region:1,foo:1}, but every shard have different data. You just need to set chunk limits by hand (to have that foo &lt; 0 and foo &gt;= 0) and disable balancing between shards... End result may not be the best available, because of uneven distribution of data.
Best possible sharding key distributes written data evenly to every shard, so there is no need for balancing between shards and queries never need to read from multiple shards. With &quot;bad&quot; key, you are writing all data to one shard and then balancing is moving that data to other shards (later).