Hi,
I wrote a python script that uses boto to create a VPC cluster. One node runs the "server" process, the other nodes run the "client" process. The number of client nodes is configurable. The goal of the test was to determine:
(a) How long it takes the client nodes to find each other
(b) Messaging reliability
Much more work is needed to draw conclusions about (b). But I have some very preliminary answers for (a).
/24 EC2 VPC subnets appear to work pretty well even with small numbers of nodes. With 5 clients on m1.small instances clients reliably found the server after 30 seconds.
/21 subnets probably need more nodes than I wanted to pay for. With up to 10 clients waiting for 2 minutes they still didn't find each other. I also got errors in syslog regarding the ARP cache, so you'll need to tune some sysctl settings if you plan to have a subnet this large.
Also: micro instances didn't work well. Lot's of weird random errors. m1.small worked much better.
_____
Again, I want to emphasize this is all preliminary. Here's the python script I used.
here's a screen shot of the example logs in papertrail's web ui:
It downloads a .tgz file from my S3 bucket that contains the RSA key, Go distribution, and test client/server binaries. AMI is Centos 6.4 x86_64 with cloud-init support.
It uses
papertrailapp.com as a central syslog dump. I just wanted a simple way to watch the machines run, and they offer a free account - no credit card required.
Each run of the script generates a unique random job id, so you can easily filter the papertrail logs by that ID.
If others want to run this script, please feel free. There's a few things to know:
1) the most recent version of boto in pypi doesn't fully support the VPC API. There's one critical patch you need to apply to your boto installation if you want this script to work:
Without this patch, the "AssociatePublicIpAddress" parameter to "run_instances" will not work, and your VMs will not be publicly addressable.
I personally just grabbed the "connection.py" and "networkinterface.py" changes and applied them to my local install.
3) you need to set 4 environment variables:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SSH_KEY_NAME (name of ssh key pair registered w/your AWS account to use when booting the machines)
PAPERTRAIL_PORT (assigned to you when you create your account)
_____
Please let me know if you try this script out and learn more about how Iris operates within EC2.
cheers
-- James