I'm going to install mySQL and Redis server on the Beanstalk AMI and then launch the app.
How can I start the redis-server before I load the war on beanstalk? Would i have to add a script file
somewhere on the AMI to run it upon booting the instance.
You can create a start script, move it to /etc/init.d/ and activate it using chkconfig like this:
chkconfig myredisscript on
See this blog (random search result) for an example.
Also with mySQL what happens when more nodes get added? does it just copy the EBS instance with the data. As I'm not too sure whats going on with the database upon scaling out nodes.
Or would I just be better off using Terracotta? or how could i mix that in?
If you install MySQL on your Beanstalk instance, you will get one MySQL database per instance, which is probably not what you want. You'll rather want one, possibly clustered or replicated, MySQL instance.
You could either run MySQL on another EC2 instance (outside Beanstalk!) or use Amazon RDS, which is a managed MySQL (and soon Oracle) service, which handles all the details and scaling.
You might want the same for your Redis instance, but in this case there is no managed service available, so you need to roll your own.
BTW: the new CloudFormation service might help you there. Check it out on the Amazon homepage.