I have a distributed clustered environment with (1) search head, (2) indexer nodes clustered together, (1) master node, and (1) deployment server at location A. At location B I have (1) search head and (2) indexer nodes that are also clustered together. I want to minimize the mount of traffic sent between the (2) sites as much as possible.
My server.conf file configuration on my masternode at location A is set as follows:
Multi-site search affinity should work automatically as long as you have a searchable copy of the data at the same site. So that much should be good without going to extra steps as long as the indexers are configured correctly.
Adding site_search_factor = origin:1.total:2 as you have should take care of at least having one searchable copy of data at each site, so in case of network problem or indexer failure you'll still be able to search. (In those emergencies you may search across sites).
So, on to your multi-site indexer cluster settings. You've set site_replication_factor = origin:2,total:3 with two sites that appear to be correctly set up with two indexers each. So, wherever the data originates (either site1 or site2) will get two copies - matching your two indexers - and the "other" site will get one more copy to bring it up to 3 total copies.
In my eyes the multi-site stuff looks correct to accomplish your goals. The rest of the config I'm less an expert on but it doesn't look wrong.