下面就是主要的搭建过程:
第一步:准备系统
1.首先先把你的系统升级到最新版,所有的软件包包括内核都升级一下,免得后面安装软件包的时候出现
什么不依赖的情况
sudo apt-get update
sudo apt-get upgrade
还有就是下面所有的操作最好都切换到 root 用户,
sudo passwd
sudo -
2.设置网络
我的虚拟机的 ip 是 222.24.24.174,大家最好按照我的设置做,等搭建成功之后在做修改
sudo vim /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 222.24.24.174
netmask 255.255.255.0
broadcast 222.24.24.255
gateway 222.24.24.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 202.117.128.2
auto eth1
iface eth1 inet static
address 192.168.22.1
network 192.168.22.0
netmask 255.255.255.0
broadcast 192.168.22.255
3.重启下网络,让修改生效
/etc/init.d/networking restart
4.安装 bridge
apt-get install bridge-utils
重启网络或者重启一下机器都可以
/etc/init.d/networking restart
5.设置 NTP
apt-get install ntp
编辑 /etc/ntp.conf 在末尾添加下面 3 行
server ntp.ubuntu.com iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 10
重启服务
sudo /etc/init.d/ntp restart
6.设置 Iscsi 用作网络存储的
apt-get install tgt
重启服务
service tgt start
安装 iscsi 客户端
apt-get install open-iscsi open-iscsi-utils
8:安装 rabbitmq
消息队列
apt-get install rabbitmq-server memcached python-memcache
apt-get install kvm libvirt-bin
第二步:安装 mysql,创建相关数据库
Openstack 的组件:nova,keystone,glance,都需要数据库。不过目前官方建议 keystone,采用
sqlite 存储,而不用 mysql 存放。所以我们只需要创建 nova 和 glance 两个数据库就可以
1:安装 mysql
过程中,会提示你输入 root 密码。
apt-get install -y mysql-server python-mysqldb
让 mysql 支持外部访问
sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf
重启服务
service mysql restart
2:安装 phpmyadmin (可选)
为了方便,可以把 phpmyadmin 装上,可以比较方便管理数据库
apt-get install phpmyadmin
安装的时候,第一个提示是让你输入 root 的密码。
3:创建数据库
nova 数据库, 管理员:novadbadmin,密码是:dieD9Mie
glance 数据库,管理员:glancedbadmin,密码是:ohC3teiv
如果你修改密码,后面很多配置都需要相应更改。
mysql -uroot -p
CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'dieD9Mie';
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'ohC3teiv';
quit
三:安装和配置 keystone
Openstack 的各个组件,keystone 是最难配置。搞定 keystone,后面应该就没啥麻烦。
1:安装 keystone
apt-get install keystone python-keystone python-keystoneclient
2:配置 keystone
需要修改 /etc/keystone/keystone.conf 两个地方
默认定义的 token 就是 ADMIN,我使用 hastexo 作为 token
[DEFAULT]
bind_host = 0.0.0.0
public_port = 5000
admin_port = 35357
#admin_token = ADMIN
admin_token =hastexo
另外一个地方是
[catalog]
#driver = keystone.catalog.backends.sql.Catalog
driver = keystone.catalog.backends.templated.TemplatedCatalog
template_file = /etc/keystone/default_catalog.templates
重启服务
service keystone restart
3: 导入数据
这个是通过修改 devstack 的 keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,
那直接运行这个脚本就可以。
http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt
下载脚本
wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt
mv keystone_data.sh_.txt keystone_data.sh
让脚本可运行
chmod +x keystone_data.sh
运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方
第一个是登录 dashboard 的 admin 的密码
第二个就是 keystone 的 token
#ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}
#export SERVICE_TOKEN="hastexo"
export SERVICE_TOKEN="Centrin"
export SERVICE_ENDPOINT="http://localhost:35357/v2.0"
SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}
然后运行这个脚本
./keystone_data.sh
顺利运行,会什么都没有输出
root@openstack:~# echo $?
0
root@openstack:~# keystone --tenant=admin --username=admin --password=hastexo
--auth_url=http://127.0.0.1:5000/v2.0 user-list
+----------------------------------+---------+--------------------+--------+
| id | enabled | email | name |
+----------------------------------+---------+--------------------+--------+
| a8fa3a4e842946f18f40f1132754e262 | True | admin@hastexo.com | admin |
| b86ba4884b7c405e98529f94dc6f44f4 | True | demo@hastexo.com | demo |
| e36322db7bdb46c0877cf6753bd23ebf | True | nova@hastexo.com | nova |
| fcddaebccdfa47e2aa0cfed3ab516de8 | True | glance@hastexo.com | glance |
+----------------------------------+---------+--------------------+--------+
看到这些,就说明 keystone 安装正常。
接下来就是添加环境变量
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=hastexo
export OS_AUTH_URL="http://localhost:5000/v2.0/"
然后运行
root@openstack:~# keystone user-list
+----------------------------------+---------+--------------------+--------+
| id | enabled | email | name |
+----------------------------------+---------+--------------------+--------+
| a8fa3a4e842946f18f40f1132754e262 | True | admin@hastexo.com | admin |
| b86ba4884b7c405e98529f94dc6f44f4 | True | demo@hastexo.com | demo |
| e36322db7bdb46c0877cf6753bd23ebf | True | nova@hastexo.com | nova |
| fcddaebccdfa47e2aa0cfed3ab516de8 | True | glance@hastexo.com | glance |
+----------------------------------+---------+--------------------+--------+
四:安装和配置 glance
1:安装软件
apt-get install glance glance-api glance-client glance-common glance-registry
python-glance
2:配置/etc/glance/glance-api-paste.ini
修改文件最后 3 行,这些设置都是 keystone 导入数据的时候设置的。
admin_tenant_name = %SERVICE_TENANT_NAME%
admin_user = %SERVICE_USER%
admin_password = %SERVICE_PASSWORD%
改成
admin_tenant_name =admin
admin_user =admin
admin_password =hastexo
3:设置 /etc/glance/glance-registry-paste.ini
也是修改文件最后 3 行,和上面是一样的。
admin_tenant_name = %SERVICE_TENANT_NAME%
admin_user = %SERVICE_USER%
admin_password = %SERVICE_PASSWORD%
改成
admin_tenant_name =admin
admin_user =admin
admin_password =hastexo
4:配置/etc/glance/glance-registry.conf
修改
#sql_connection = sqlite:////var/lib/glance/glance.sqlite
sql_connection = mysql://glancedbadmin:ohC3teiv@222.24.24.174/glance
在末尾添加两行
[paste_deploy]
flavor = keystone
5:配置/etc/glance/glance-api.conf
在末尾添加两行
[paste_deploy]
flavor = keystone
6:同步数据库
目前 glance 需要手工同步数据库。你装一个 phpmyadmin,先确认 glance 数据库没任何内容。
glance-manage version_control 0
glance-manage db_sync
成功之后会输出:
/usr/lib/python2.7/dist-packages/glance/registry/db/migrate_repo/versions/00
3_add_disk_format.py:47:
SADeprecationWarning: useexisting is deprecated. Use extend_existing.
useexisting=True)
重启服务
service glance-api restart && service glance-registry restart
7:验证 glance 服务是否正常
下面的步骤照做就可以,具体原理可以看英文
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=hastexo
export OS_AUTH_URL="http://localhost:5000/v2.0/"
运行
glance index
没有任何的输出。表示正常。