HLA-based simulations, as any distributed computing application, can undergo critical performance issues due to load imbalances on large-scale, heterogeneous, non-dedicated distributed systems. Such imbalances are produced by HLA simulation entities that can dynamically change their computation and communication load during their execution time, so an initial static load deployment is incapable of providing simulations complete and even distributed resources usage. Moreover, because the computing resources are non-dedicated, unknown external applications can generate load for any computing resource, increasing the imbalances' unpredictability. Thus, in order to re-allocate resources for an HLA simulation during its execution time, an hierarchical dynamic load balancing system is introduced. The system manages a simulation's workload by monitoring the distributed load through the MDS Grids' service; by identifying load imbalances according to a load sharing policy; by re-allocating resources according to defined policies; and by migrating federates through the GRAM Grids' service, a migration proxy, and peer-to-peer state transfer. By keeping the load evenly partitioned on the distributed system, such a devised system successfully improved the simulations' performance. The experimental results and comparative analyses between balanced and non-balanced simulations proved the efficiency of the proposed dynamic load balancing system.