3.7 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			3.7 KiB
		
	
	
	
	
	
	
	
Getting Started with Nova
GOTTA HAVE A nova.pth file added or it WONT WORK (will write setup.py file soon)
Create a file named nova.pth in your python libraries directory (usually /usr/local/lib/python2.6/dist-packages) with a single line that points to the directory where you checked out the source (that contains the nova/ directory).
DEPENDENCIES
Related servers we rely on
- RabbitMQ: messaging queue, used for all communication between components
 - OpenLDAP: users, groups (maybe cut)
 - ReDIS: Remote Dictionary Store (for fast, shared state data)
 - nginx: HTTP server to handle serving large files (because Tornado can't)
 
Python libraries we don't vendor
- M2Crypto: python library interface for openssl
 - curl
 
Vendored python libaries (don't require any installation)
- Tornado: scalable non blocking web server for api requests
 - Twisted: just for the twisted.internet.defer package
 - boto: python api for aws api
 - IPy: library for managing ip addresses
 
Recommended
- euca2ools: python implementation of aws ec2-tools and ami tools
 - build tornado to use C module for evented section
 
Installation
# system libraries and tools
apt-get install -y aoetools vlan
modprobe aoe
# python libraries
apt-get install -y python-setuptools python-dev python-pycurl python-m2crypto
# ON THE CLOUD CONTROLLER
apt-get install -y rabbitmq-server dnsmasq nginx
# build redis from 2.0.0-rc1 source
# setup ldap (slap.sh as root will remove ldap and reinstall it)
NOVA_PATH/nova/auth/slap.sh
/etc/init.d/rabbitmq-server start
# ON VOLUME NODE:
apt-get install -y vblade-persist
# ON THE COMPUTE NODE:
apt-get install -y python-libvirt
apt-get install -y kpartx kvm libvirt-bin
# optional packages
apt-get install -y euca2ools
Configuration
ON CLOUD CONTROLLER
- Add yourself to the libvirtd group, log out, and log back in
 
* fix hardcoded ec2 metadata/userdata uri ($IP is the IP of the cloud), and masqurade all traffic from launched instances :
iptables -t nat -A PREROUTING -s 0.0.0.0/0 -d 169.254.169.254/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination $IP:8773
iptables --table nat --append POSTROUTING --out-interface $PUBLICIFACE -j MASQUERADE
- Configure NginX proxy (/etc/nginx/sites-enabled/default)
 
server {
  listen 3333 default;
  server-name localhost;
  client_max_body_size 10m;
  access_log /var/log/nginx/localhost.access.log;
  location ~ /_images/.+ {
    root NOVA_PATH/images;
    rewrite ^/_images/(.*)\$ /\$1 break;
  }
  location / {
    proxy_pass http://localhost:3334/;
  }
}
ON VOLUME NODE
- create a filesystem (you can use an actual disk if you have one spare, default is /dev/sdb)
 
# This creates a 1GB file to create volumes out of
dd if=/dev/zero of=MY_FILE_PATH bs=100M count=10
losetup --show -f MY_FILE_PATH
echo "--storage_dev=/dev/loop0" >> NOVA_PATH/bin/nova.conf
Running
Launch servers
- rabbitmq
 - redis
 - slapd
 - nginx
 
Launch nova components
- nova-api
 - nova-compute
 - nova-objectstore
 - nova-volume