Eucalyptus 3.3.0, the most exciting Eucalyptus release so far is knocking on the door or perhaps it has been already released when you are reading this post.
Eucalyptus 3.3.0 has couple of most desired Amazon Web Services (AWS) features by the cloud users:
1. Elastic Load Balancing (ELB)
Needless to say, this is an AWS ELB compatible feature which is being introduced in Eucalyptus 3.3.0.
Creating a basic loadbalancer:
eulb-create-lb -z PARTI00 -l 'lb-port=80, protocol=HTTP, instance-port=80' MyElb # output # DNS_NAME MyElb-576514848852.lb.localhost eulb-describe-lbs # output # LOAD_BALANCER MyElb MyElb-576514848852.lb.localhost 2013-06-10T06:57:52.07Z
Register instances with Eucalyptus Elastic Load Balancer,
eulb-register-instances-with-lb MyElb --instances i-25D3415E,i-16463E17 # output # INSTANCE i-25D3415E # INSTANCE i-16463E17 eulb-describe-instance-health MyElb # output # INSTANCE i-25D3415E InService # INSTANCE i-16463E17 InService
Few other ELB operations,
# deregister instances from ELB eulb-deregister-instances-from-lb MyElb --instances i-16463E17 # delete ELB eulb-delete-lb MyElb
2. CloudWatch
CloudWatch is another AWS-compatible feature which is shipping with Eucalyptus 3.3.0. It enables cloud users to view, collect and analyze metrics of their could resources. It also lets cloud users to configure alarm actions based on the data from the metrics.
Enable instance monitoring,
# on existing instance euca-monitor-instances i-25D3415E # during instance run euca-run-instances -k batman1key emi-90E83973 --monitor # disable monitoring euca-unmonitor-instances i-DB5842DC
Euwatch
# returns all the available metrics euwatch-list-metrics # returns list of metrics with particular metric name euwatch-list-metrics --metric-name CPUUtilization # returns list of metrics with particular namespace euwatch-list-metrics --namespace AWS/EC2 # returns list of metrics with particular dimensions euwatch-list-metrics --dimensions "InstanceId=i-25D3415E" # returns time-series data for one or more statistics of a given MetricName euwatch-get-stats CPUUtilization \ > --start-time 2013-06-10T07:09:00.043Z \ > --end-time 2013-06-10T08:46:54.043Z \ > --period 3600 \ > --statistics "Average,Minimum,Maximum" \ > --namespace "AWS/EC2" \ > --dimensions "InstanceId=i-25D3415E"
3. Auto Scaling
Eucalyptus Auto Scaling is consists of three fundamental principles,
- Launch Configurations
- Auto Scaling Groups
- Auto Scaling Policies
Create a launch configuration,
euscale-create-launch-config MyLC \ > --image-id emi-90E83973 \ > --instance-type m1.small
Create auto scaling group,
euscale-create-auto-scaling-group MyASGroup \ > --launch-configuration MyLC \ > --availability-zones PARTI00 \ > --min-size 1 --max-size 3 # describe auto scaling groups euscale-describe-auto-scaling-groups
Create scale out policy,
euscale-put-scaling-policy MyScaleoutPolicy \ > --auto-scaling-group MyASGroup \ > --adjustment=30 \ > --type PercentChangeInCapacity # output # arn:aws:autoscaling::576514848852:scalingPolicy:c2a8f9dc-1c75-49d5-b54d-8ef87fe29e9a:autoScalingGroupName/MyASGroup:policyName/MyScaleoutPolicy
Creating scale in policy,
euscale-put-scaling-policy MyScaleInPolicy \ > --auto-scaling-group MyASGroup \ > --adjustment=-2 --type ChangeInCapacity # output # arn:aws:autoscaling::576514848852:scalingPolicy:a4148c27-81da-4eff-9140-cba3ba9381cb:autoScalingGroupName/MyASGroup:policyName/MyScaleInPolicy
CloudWatch Alarm
Eucalyptus CloudWatch alarm currently helps cloud users to take decisions on the resources (e.g instances, EBS volumes, Auto Scaling instances, ELBs) automatically based on the rules defined by the users based on the metrics. Eucalyptus CloudWatch alarm currently works with Auto Scaling policies.
Create alarm for scale out capacity and scale in capacity,
# create scale out alarm euwatch-put-metric-alarm AddCapacity \ > --metric-name CPUUtilization \ > --namespace "AWS/EC2" \ > --statistic Average \ > --period 120 --threshold 80 \ > --comparison-operator GreaterThanOrEqualToThreshold \ > --dimensions "AutoScalingGroupName=MyASGroup" \ > --evaluation-periods 2 \ > --alarm-actions arn:aws:autoscaling::576514848852:scalingPolicy:c2a8f9dc-1c75-49d5-b54d-8ef87fe29e9a:autoScalingGroupName/MyASGroup:policyName/MyScaleoutPolicy # create scale in alarm euwatch-put-metric-alarm RemoveCapacity \ > --metric-name CPUUtilization \ > --namespace "AWS/EC2" \ > --statistic Average \ > --period 120 --threshold 40 \ > --comparison-operator LessThanOrEqualToThreshold \ > --dimensions "AutoScalingGroupName=MyASGroup" \ > --evaluation-periods 2 \ > --alarm-actions arn:aws:autoscaling::576514848852:scalingPolicy:a4148c27-81da-4eff-9140-cba3ba9381cb:autoScalingGroupName/MyASGroup:policyName/MyScaleInPolicy # delete alarm euwatch-delete-alarms
Set the alarm state to OK/ALARM for testing,
euwatch-set-alarm-state --state-value OK \ > --state-reason "testing" AddCapacity euwatch-set-alarm-state --state-value OK \ > --state-reason "testing" RemoveCapacity euwatch-describe-alarms # output # AddCapacity OK arn:aws:autoscaling::576514848852:scalingPolicy:c2a8f9dc-1c75-49d5-b54d-8ef87fe29e9a:autoScalingGroupName/MyASGroup:policyName/MyScaleoutPolicy AWS/EC2 CPUUtilization 120 Average 2 GreaterThanOrEqualToThreshold 80.0 # RemoveCapacity OK arn:aws:autoscaling::576514848852:scalingPolicy:a4148c27-81da-4eff-9140-cba3ba9381cb:autoScalingGroupName/MyASGroup:policyName/MyScaleInPolicy AWS/EC2 CPUUtilization 120 Average 2 LessThanOrEqualToThreshold 40.0
4. Resource Tagging
Resource tagging was another missing AWS feature which was not there until 3.2.2. This is a very important feature and also used by many 3rd party tools and application.
euca-create-tags vol-65803EB8 --tag "testtag" # TAG volume vol-65803EB8 testtag euca-describe-volumes # VOLUME vol-65803EB8 2 PARTI00 available 2013-06-10T12:29:41.082Z standard # TAG volume vol-65803EB8 testtag
5. More instance type
euca-describe-instance-types INSTANCETYPE Name CPUs Memory (MB) Disk (GB) INSTANCETYPE m1.small 1 256 5 INSTANCETYPE t1.micro 1 256 5 INSTANCETYPE m1.medium 1 512 10 INSTANCETYPE c1.medium 2 512 10 INSTANCETYPE m1.large 2 512 10 INSTANCETYPE m1.xlarge 2 1024 10 INSTANCETYPE c1.xlarge 2 2048 10 INSTANCETYPE m2.xlarge 2 2048 10 INSTANCETYPE m3.xlarge 4 2048 15 INSTANCETYPE m2.2xlarge 2 4096 30 INSTANCETYPE m3.2xlarge 4 4096 30 INSTANCETYPE cc1.4xlarge 8 3072 60 INSTANCETYPE m2.4xlarge 8 4096 60 INSTANCETYPE hi1.4xlarge 8 6144 120 INSTANCETYPE cc2.8xlarge 16 6144 120 INSTANCETYPE cg1.4xlarge 16 12288 200 INSTANCETYPE cr1.8xlarge 16 16384 240 INSTANCETYPE hs1.8xlarge 48 119808 24000
Well, if you used Eucalyptus before, I think, the improvement is very much visible
6. Maintenance Mode:
Eucalyptus 3.3.0 also comes with the feature which many cloud administrator might be waiting for such a long time, which is Maintenance Mode.
In other words, migrating a single instance to another Node Controller or evacuating a certain Node Controller are now supported by Eucalyptus.
# evacuate a Node Controller euca-migrate-instances --source 10.111.1.119 # migrate specific instance to another destination euca-migrate-instances -i i-38A74228 --dest 10.111.1.116
For more information check the Eucalyptus 3.3.0 roadmap. Architectural overview for 3.3.x release can be found on github. Here is a list of new stories that are going to take place in the 3.3.0 release.
More AWS Compatibility
Eucalyptus 3.3.x is the most AWS compatible release ever. It has more API compatibility than Eucalyptus ever had. Here is couple of our ongoing work on the different AWS SDKs and open source libraries.
- AWS SDK for Java
- AWS SDK for Ruby
- AWS SDK for PHP
- AWS toolkit for Eclipse
- jcloud on Eucalyptus - This is comparatively newest among all, we are tracking this as a story on jira, EUCA-5671.
Eucalyptus 3.3.0 has few very important improvements on Boot-from-EBS instances,
1. Root block device is /dev/sda and not /dev/sda1
2. Allow multiple EBS block device mappings
3. No more default ephemeral disk at /dev/sdb
4. Metadata service changes
Euca2ools 3.0 is huge in Eucalyptus 3.3.x. It has been completely ported to requestbuilder. Euca2ools 3 is slim and beautiful and it works!
One interesting fact about Euca2ools from the developers,
% git diff –shortstat 2.1.3.. — bin euca2ools generate-manpages.sh
install-manpages.sh setup.py
432 files changed, 14973 insertions(+), 15097 deletions(-)euca2ools 3 adds three entirely new services and tons of new
functionality to the previous version, but it still manages to weigh
in at less code than it had before.
Read more about euca2ools 3, “What’s new in Euca2ools 3″ Part 1 and Part 2.
With all these new features, Eucalyptus 3.3.0 has many bug fixes as well. There are many others documented/undocumented fixes are coming in 3.3.0. Some administrator tool are also on the way to see the light very soon.
If you are interested in trying from source code, you are more that welcome to checkout Eucalyptus from the public github repository.
Some places to give you feedback:
Bug report: eucalyptus.atlassian.net
Questions: engage.eucalyptus.com



