Currently, what I've been doing is solution #1, but on Rackspace (I work there). I have a Jenkins master configured with 2 extra beefier nodes as slaves. For isolation, each node can only run 1 build at a time. The slaves are targeted by labels. Then I configured a Job to use the Workflow plugin, and setup the job to this Workflow script
https://github.com/meteorfox/gatling-workflow/blob/master/gatling_flow.groovy
With that workflow script, it will configure both nodes in parallel, get the Gatling simulations, and start them at roughly the same time. Finally at the end it aggregates the simulation logs from each Gatling client,
and generates a report.
It works kind of OK, if one of the slaves takes longer to start, then they will be out of sync. I'm working on a new primitive (i.e. rendezvous) for Workflow, to fix this problem.
Cheers,
Carlos