Chef 12 High Availability and AWS


#1

I am trying set up Chef 12 High Availability as delineated in the Chef
documents.

I am creating 3 instances in ec2.

  1. Primary Backend
  2. Secondary Backend
  3. Primary Frontend

On the primary backend I am adding a second IP to eth0. This will be my VIP
IP. I configure it to allow it to move to the secondary if it needs to.

I am creating four route53 records:
be1.mydomain.com (primary backend)
be2.mydomain.com (secondary backend)
be-vip.mydomain.com (backend vip)
fe1.mydomain.com (primary frontend)

My chef-server.rb looks like this:
topology 'ha’
ha[‘provider’] = 'aws’
ha[‘aws_access_key_id’] = 'xxxxxx’
ha[‘aws_secret_access_key’] = 'xxxxxx’
ha[‘ebs_volume_id’] = 'vol-8ef6ae8d’
ha[‘ebs_device’] = ‘/dev/xvdg’

server ‘be1.mydomain.com’,
:ipaddress => xxx.xxx.xxx.xxx
:role => ‘backend’,
:bootstrap => true

server ‘be2.mydomain.com’,
:ipaddress => xxx.xxx.xxx.xxx,
:role => ‘backend’

backend_vip ‘be-vip.mydomain.com’,
:ipaddress => xxx.xxx.xxx.xxx,
:device => ‘eth0’,
:heartbeat_device => ‘eth0’

server ‘fe1.mydomain.com’,
:ipaddress => xxx.xxx.xxx.xxx,
:role => ‘frontend’

If I paste the HA stuff into /etc/opscode/chef-server.rb on the primary
backend and then run chef-server-ctl reconfigure the process dies with
rabbitmq.

If I leave the HA config out and run chef-server-ctl reconfigure the
process completes but obviously I do not have HA.

I am wondering if I did the backend VIP stuff wrong. I thought about using
an EIP but those assume a public IP up front and it doesn’t seem to be the
correct solution.

What the heck am I doing wrong???