# Distribution in Mirror Mode

The diagram below represents a DAH run in mirror mode. In this setup, the DAH distributes actions to several identical IDOL Servers.

DAH system architecture (mirror mode)

The DAH distributes the actions according to the value of the `DistributionMethod` parameter in the DAH configuration file. You can use the following methods:

- Load balancing. The DAH assigns each incoming action to just one of the connected IDOL Servers. It uses a cumulative predictive algorithm to spread the action load efficiently. When this IDOL Server responds with a result, the DAH returns it to the client software.

  If an IDOL Server stops responding for any reason (for example, because of a hardware failure or network outage), the DAH marks it as down. DAH assigns incoming actions only to the available IDOL Servers, which saves the time that it takes to attempt to communicate with the failed IDOL Server.

- Failover. The DAH forwards incoming actions to the first IDOL Server that you list in the DAH configuration file `[DistributedEngineN]` section. This server is the primary server. If this IDOL Server stops responding for any reason (for example, because of a hardware or network failure), the DAH marks it as down. The DAH switches to the next IDOL Server (the second one listed in the `[DistributedEngineN]` section), which becomes the new primary server, and so on, and seamlessly continues to service client actions.

The DAH periodically checks IDOL servers that are down. If an IDOL Server has come online again (for example, because the hardware has been rebooted or the network connection repaired), the DAH adds it back into the list of active IDOL Servers.

- For load balancing, this IDOL Server becomes a valid choice for actions again.

- For failover, DAH continues sending actions to the new primary server unless that server stops responding, or unless you manually change the primary server.

NOTE: The DAH always sends state-changing actions (actions that cause changes in a child server) to all child servers, to ensure that they remain consistent. The DAH queues state-changing actions for any child servers that are not running, and sends these actions before it distributes new actions to the child server.

The DAH cannot always queue `CategoryMove` and `CategorySetDetails` actions. It returns an error if child servers stop running.

_FT_HTML5_bannerTitle.htm