我这里用三台机器来部署,你也可以横向扩展计算节点,下面是网络情况:
control node: eth0(172.16.0.51), eth1(192.168.8.51)
network node : eth0(172.16.0.52), eth1(10.10.10.52), eth2(192.168.8.52)
compute node : eth0(172.16.0.53), eth1(10.10.10.53)
管理网络: 172.16.0.0/16
业务网络: 10.10.10.0/24
外部网络: 192.168.8.0/24
下面是引用 mirantis 的一张图:
这里我的三个节点的网卡都连在了一个交换机上。因为我没有做 Grizzly 的本地 apt 源,计算节点还需要去公网 apt-get 包,所以我会在计算节点上临时设置一个虚拟网卡让它来装包。
文档更新:
2013.04.01 在计算节点上安装了 nova-compute 和 nova-conductor,而 nova-conductor 只需在控制节点安装就行了。同时发现网络节点在重启机器后,eth2 网卡没有激活,需要手工 up, 添加命令到 rc.local 中。
目录
1 控制节点
1.1 网络设置
1.2 添加源
1.3 MySQL & RabbitMQ
1.4 NTP
1.5 Keystone
1.6 Glance
1.7 Cinder
1.8 Quantum
1.9 Nova
1.10 Horizon
2 网络节点
2.1 网络设置
2.2 添加源
2.3 OpenVSwitch
2.4 Quantum
3 计算节点
3.1 网络设置
3.2 添加源
3.3 OpenVSwitch
3.4 Quantum
3.5 Nova
4 开始创建 vm
控制节点 网络设置 cat /etc/network/interfaces auto eth0 iface eth0 inet static address 172.16.0.51 netmask 255.255.0.0 auto eth1 iface eth1 inet static address 192.168.8.51 netmask 255.255.255.0 gateway 192.168.8.1 dns-nameservers 8.8.8.8 添加源添加 Grizzly 源,并升级系统
cat > /etc/apt/sources.list.d/grizzly.list << _GEEK_ deb Ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/grizzly main deb precise-proposed/grizzly main _GEEK_ apt-get update apt-get upgrade apt-get install ubuntu-cloud-keyring MySQL & RabbitMQ安装 MySQL:
apt-get install mysql-server Python-mysqldb使用sed编辑 /etc/mysql/my.cnf 文件的更改绑定地址(0.0.0.0)从本地主机(127.0.0.1)
禁止 mysql 做域名解析,防止 连接 mysql 出现错误和远程连接 mysql 慢的现象。
然后重新启动mysql服务.
安装 RabbitMQ:
apt-get install rabbitmq-server NTP安装 NTP 服务
apt-get install ntp配置NTP服务器计算节点控制器节点之间的同步:
sed -i 's/server ntp.ubuntu.com/server ntp.ubuntu.com\nserver 127.127.1.0\nfudge 127.127.1.0 stratum 10/g' /etc/ntp.conf service ntp restart开启路由转发
vim /etc/sysctl.conf net.ipv4.ip_forward=1 Keystone安装 Keystone
apt-get install keystone在 mysql 里创建 keystone 数据库并授权:
mysql -uroot -p create database keystone; grant all on keystone.* to 'keystone'@'%' identified by 'keystone'; quit;修改 /etc/keystone/keystone.conf 配置文件:
admin_token = debug = True verbose = True [sql] connection = mysql://keystone:keystone@172.16.0.51/keystone #必须写到 [sql] 下面 [signing] token_format = UUID启动 keystone 然后同步数据库
/etc/init.d/keystone restart keystone-manage db_sync用脚本导入数据:
用脚本来创建 user、role、tenant、service、endpoint,下载脚本:
wget修改脚本内容:
ADMIN_PASSWORD=${ADMIN_PASSWORD:-password} #租户 admin 的密码 SERVICE_PASSWORD=${SERVICE_PASSWORD:-password} #nova,glance,cinder,quantum,swift的密码 export SERVICE_TOKEN="www.longgeek.com" # token export SERVICE_ENDPOINT="http://172.16.0.51:35357/v2.0" SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service} #租户 service,包含了nova,glance,ciner,quantum,swift等服务 KEYSTONE_REGION=RegionOne KEYSTONE_IP="172.16.0.51" #KEYSTONE_WLAN_IP="172.16.0.51" SWIFT_IP="172.16.0.51" #SWIFT_WLAN_IP="172.16.0.51" COMPUTE_IP=$KEYSTONE_IP EC2_IP=$KEYSTONE_IP GLANCE_IP=$KEYSTONE_IP VOLUME_IP=$KEYSTONE_IP QUANTUM_IP=$KEYSTONE_IP执行脚本:
sh keystone.sh设置环境变量:
这里变量对于 keystone.sh 里的设置:
# cat > /root/export.sh << _GEEK_ export OS_TENANT_NAME=admin #这里如果设置为 service 其它服务会无法验证. export OS_USERNAME=admin export OS_PASSWORD=password export OS_AUTH_URL=http://172.16.0.51:5000/v2.0/ export OS_REGION_NAME=RegionOne export SERVICE_TOKEN=www.longgeek.com export SERVICE_ENDPOINT=http://172.16.0.51:35357/v2.0/ _GEEK_ # echo 'source /root/export.sh' >> /root/.bashrc # source /root/export.sh验证 keystone 的安装,做一个简单测试:
apt-get install curl openssl curl :35357/v2.0/endpoints -H 'x-auth-token: ' | python -mjson.tool