This is a great idea for a guide we should write: walkthrough of running on 3 machines. We should also provide a script to package up only what you'll need to run, after finishing a build. I've made a note to think more about those ideas.
In the meantime, here are some pointers:
You shouldn't need to run bootstrap.sh or dev.env everywhere - only on one machine that you use to do the build. Once you finish 'make build' on that machine, here's my first attempt at the list of directories you'll need to package up and copy to the other machines:
$VTROOT/bin
$VTROOT/config (note this is a symlink to $VTTOP/config)
$VTROOT/dist/vt-zookeeper-3.4.6
$VTTOP/web/vtctld
Instead of running dev.env, you should just set a few environment variables according to how you unpack your files:
VTROOT
VTDATAROOT
VT_MYSQL_ROOT
The examples/local scripts are only meant to be a source for you to make your own scripts suited to your environment. They would also need modifications to run on multiple machines, so I would add another set of scripts if I write that guide.
Some things that would need to be changed are:
ZooKeeper server addresses:
Note that although you need to configure ZK addresses, you don't need to configure addresses for vttablets because they publish their own addresses to the rest of Vitess (vtgate, vtctld) via ZooKeeper. In other words, you just point everything in Vitess at ZK, and then they can all find each other automatically.
For zk-* and vttablet-* scripts, you would modify them to only start one zkid and one tablet uid. You would set each machine to run a different zkid/uid.
For a simple setup, you only need one vtgate and one vtctld. You can add and remove these as needed for load balancing.
There may be some more things that I haven't thought of just now, but until I get time to work on a full guide, please give this a shot and let me know if you run into any problems.
Anthony