配置网络
在安装完基本的 Ubuntu 11.04 Server 系统后升级和更新整个系统,安装完 bridge-utils 包后重启系统:
$ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install bridge-utils $ sudo reboot
配置网桥:
$ sudo vi /etc/network/interfaces
auto eth0 iface eth0 inet static address 10.1.0.44 netmask 255.255.255.0 network 10.1.0.0 broadcast 10.1.0.255 gateway 10.1.0.1 dns_nameservers 8.8.8.8 auto br100 iface br100 inet static bridge_ports eth0 bridge_stp off bridge_maxwait 0 bridge_fd 0 address 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255
重启网络
/etc/init.d/networking restart
安装时钟服务:
1 安装ntp时钟同步服务器
apt-get install -y ntp ntpdate2 同步时间
/etc/init.d/ntp stop ntpdate ntp.api.bz
3 编辑/etc/ntp.conf:替换为如下内容:
restrict 127.0.0.1 restrict 192.168.1.0 mask 255.255.255.0 nomodify server 127.127.1.0 fudge 127.127.1.0 stratum 10 driftfile /var/lib/ntp/drift4重启ntp服务
/etc/init.d/ntp restart
RabbitMQ是用来做调度使用。Memcache是给Dashboard使用。
apt-get install -y rabbitmq-server memcached python-memcache kvm libvirt-bin
# cat /etc/hostname node17 # cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 node17.chenshake.com node17 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters # hostname node17 # hostname -f node17.chenshake.com
这是为Nova-volume服务使用的。不过目前nova-volume并不稳定,大家测试一下就可以。未来的Folsom版本,将会有新的组件来替代Nova-volume。
如果你不测试nova volume,可以不安装
apt-get -y install tgtnova-compute节点,需要安装ISCSI客户端
apt-get install -y open-iscsi open-iscsi-utils
如果你没有单独的分区,那么就不建议你测试,采用文件模拟的方式,基本是不可行。
我安装系统的时候,创建了一个nova-volume的分区,我先umount,再创建一个volume,名字为nova-volumes。nova的默认使用的volume的名字就是叫 nova-volumes. 如果你希望改变,就需要指定在nova.conf 文件里。
# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created # vgcreate nova-volumes /dev/sdb Volume group "nova-volumes" successfully created
#sudo vgs VG #PV #LV #SN Attr VSize VFree nova_volume 1 0 0 wz--n- 20.00g 20.00g
在Openstack组件里,Nova,Keystone, Glance, Horizon, 都需要用到数据库。所以我们需要创建相关的数据库和用户。
应用数据库 | 数据库用户 | 密码 |
mysql | root | password |
nova | nova | password |
glance | glance | password |
keystone | keystone | password |
horizon | horizon | password |
Openstack都是Python写的,所以你需要python-mysqldb,安装过程,会提示你输入mysql的root的密码。
apt-get install -y mysql-server python-mysqldb
编辑/etc/mysql/my.cnf, 允许网络访问mysql
#bind-address = 127.0.0.1 bind-address = 0.0.0.0重启mysql服务
service mysql restart创建相关数据库
mysql -uroot -ppassword CREATE DATABASE nova; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'password'; CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'password'; CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%'IDENTIFIED BY 'password'; CREATE DATABASE horizon; GRANT ALL PRIVILEGES ON horizon.* TO 'horizon'@'%'IDENTIFIED BY 'password'; quit
Keystone是Openstack的核心,所有的组件,都需要通过keystone进行认证和授权。
租户(tenant) | 用户 | 密码 | |
admin | admin | chenshake | |
service | nova | chenshake | |
glance | chenshake | ||
swift | chenshake |
apt-get install -y keystone python-keystone python-mysqldb python-keystoneclient
编辑/etc/keystone/keystone.conf,需要修改
[DEFAULT] #bind_host = 0.0.0.0 public_port = 5000 admin_port = 35357 #admin_token = ADMIN admin_token = chenshake [sql] #connection = sqlite:////var/lib/keystone/keystone.db connection = mysql://keystone:password@10.1.199.17/keystone
或者运行下面命令
sed -i 's/ADMIN/chenshake/g' /etc/keystone/keystone.conf sed -i '/sqlite/s/^/#/' /etc/keystone/keystone.conf sed -i '/sqlite/a\connection = mysql://keystone:password@10.1.199.17/keystone' \ /etc/keystone/keystone.conf
重启服务
service keystone restart
同步keystone数据库
keystone-manage db_sync
keystone的数据库,需要导入数据和endpoint,你可以一步一步用命令行导入,可以参考keystone白皮书
为了方便,你可以直接使用下面2个脚本来进行全部的设置
Keystone Data
wget http://www.chenshake.com/wp-content/uploads/2012/07/keystone_data.sh_.txt mv keystone_data.sh_.txt keystone_data.sh chmod +x keystone_data.sh
对于keystone_data.sh 脚本,默认的登陆dashboard的密码是:chenshake,Token是chenshake。你可以根据你的情况进行调整。
第一行是登陆dashboard的密码。
第三行是上面设置的Keystone的Token
ADMIN_PASSWORD=${ADMIN_PASSWORD:-chenshake} SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD} export SERVICE_TOKEN="chenshake" export SERVICE_ENDPOINT="http://localhost:35357/v2.0" SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service} ENABLED_SERVICES="swift"
./keystone_data.sh
echo $?
Endpoint 导入
wget http://www.chenshake.com/wp-content/uploads/2012/07/endpoints.sh_.txt mv endpoints.sh_.txt endpoints.sh chmod +x endpoints.sh
./endpoints.sh -m 10.1.199.17 -u keystone -D keystone \ -p password -T chenshake -K 10.1.199.17 \ -R RegionOne -E "http://localhost:35357/v2.0" -S 10.1.199.17
参数说明
-m mysql_hostname
-u mysql_username
-D mysql_database
-p mysql_password
-K keystone 服务器IP
-R keystone_region
-E keystone_endpoint_url
-S swift proxy节点IP
-T keystone_token
正常运行,会输出一堆内容。
设置环境变量
export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=chenshake export OS_AUTH_URL=http://localhost:5000/v2.0/
root@node12:~# export | grep OS_ declare -x OS_AUTH_URL="http://localhost:5000/v2.0/" declare -x OS_PASSWORD="chenshake" declare -x OS_TENANT_NAME="admin" declare -x OS_USERNAME="admin"