柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!
全部博文(1669)
分类: 云计算
2014-02-17 11:32:04
操作系统我用的是ubuntu 12.04,每台机子都配了ntp。
openstack安装是个很麻烦的工作,本文档是我自己安装的记录。在此感谢下liangbo.me的博主,他的安装文档给了我很大的帮助,我就是基于他的文档来的。博客地址:。
我使用了6台电脑来安装openstack,分配如下:
keystone |
Host:keystone ip:192.168.0.106 |
mysql, keystone |
Swift |
Host:swift1 ip:192.168.0.110 |
Proxy-server, account-server, container-server, object-server |
Host:swift2 ip:192.168.0.111 |
account-server, container-server, object-server |
|
Glance |
Host:glance ip:192.168.0.112 |
Glance-api, glance-registry |
Compute |
Host:compute1 ip: 192.168.0.114 |
rabbitmq-server bridge-utils compute-control相关组件 |
Host:compute2 ip: 192.168.0.109 |
Nova-compute |
|
dashboard |
Host:compute1 ip: 192.168.0.114 |
openstack-dashboard |
keystone是openstack中用于身份验证的项目,任何服务请求需要经过它的验证获得服务的endpoint。具体作用请看相关官方文档。这里我使用的是mysql来存储keystone的数据。
keystone |
Host:keystone ip:192.168.0.106 |
mysql, keystone |
1、安装
1)安装数据库
sudo apt-get install mysql-server mysql-client python-mysqldb
进/etc/mysql/my.cnf里,将bind-address=127.0.0.1改成 0.0.0.0。这样远程主机就可以连接上这个mysql。
重启mysql服务。sudo service mysql restart
2)安装keystone
? 安装软件
sudo apt-get install keystone
创建keystone数据库,并创建用户以及分配权限。
create database keystone;
grant all on keystone.* to 'keystone'@'%' identified by 'keystonepwd';
? 配置keystone
配置keystone,修改/etc/keystone/keystone.conf文件:
[sql]
#connection = sqlite:////var/lib/keystone/keystone.db
connection = mysql://keystone:keystonepwd@192.168.0.106/keystone
这里注意一下该文件里的这部份信息,记住admin_token参数,以后会用的上,这个参数是用来访问keystone服务的。默认是ADMIN,也可以改成别的。
[DEFAULT]
public_port = 5000
admin_port = 35357
admin_token = ADMIN
compute_port = 8774
verbose = True
debug = True
log_config =/etc/keystone/logging.conf
重启keystone服务
sudo service keystone restart
同步数据库,
sudo keystone-manage db_sync
然后去数据库里看,
mysql>show tables;
+------------------------+
|Tables_in_keystone |
+------------------------+
|ec2_credential |
|endpoint |
|metadata |
|migrate_version |
|role |
|service |
|tenant |
|token |
|user |
|user_tenant_membership |
+------------------------+
2、使用keystone
导入环境变量,当然也可以在每次执行keystone命令时加上这方面的参数,keystone 命令格式参见它的help
export SERVICE_TOKEN=ADMIN
export SERVICE_ENDPOINT=
添加tenant:
keystone tenant-create --name adminTenant --description "Admin Tenant"--enabled true
keystone tenant-list
+----------------------------------+-------------+---------+
| id | name | enabled |
+----------------------------------+-------------+---------+
|72a95ab302cc42d59e6f414769dcfec7 | adminTenant | True |
+----------------------------------+-------------+---------+
添加user:
keystone user-create --tenant_id 72a95ab302cc42d59e6f414769dcfec7 --name admin --passopenstack --enabled true
keystone user-list
+----------------------------------+---------+-------+-------+
| id | enabled | email | name |
+----------------------------------+---------+-------+-------+
|4fd5ba059a6945c0a43ff63b0140b0a9 | True | None | admin |
+----------------------------------+---------+-------+-------+
添加role
keystone role-create --name admin
keystone role-list
+----------------------------------+-----------+
| id | name |
+----------------------------------+-----------+
|675b96a12d834021b519ef50502a5e5e | admin |
+----------------------------------+-----------+
将这三者关联
keystone user-role-add --user 4fd5ba059a6945c0a43ff63b0140b0a9 --tenant_id72a95ab302cc42d59e6f414769dcfec7 --role 675b96a12d834021b519ef50502a5e5e
这样就ok了。测试一下,用curl工具测试。
sudo apt-get install curl
我们先输入一个错误的密码试试
curl-d '{"auth": {"tenantName": "adminTenant","passwordCredentials":{"username": "admin","password": "wrong"}}}' -H"Content-type: application/json" /tokens| python -mjson.tool
返回结果
{
"error":{
"code":401,
"message":"Invalid user / password",
"title":"Not Authorized"
}
}
如果用户名/密码都正确的话
curl -d'{"auth": {"tenantName": "adminTenant","passwordCredentials":{"username": "admin","password": "openstack"}}}' -H "Content-type:application/json" /tokens | python-mjson.tool
就会返回很多信息,如token、user等,内容太多了,这里我就不贴了。
glance是openstack的镜像服务项目。
Glance |
Host:glance ip:192.168.0.112 |
glance-api, glance-registry |
1、安装
sudo apt-get install keystone //glance需要使用keystone.middleware.auth_token组件。
sudo apt-get install python-mysqldb //glance需要MySQLdb模块
sudo apt-get install glance
查看进程,可以看到glance-api和glance-registry 2个进程。
创建glance数据库,我们的数据库还试用
create database glance;
grant all on glance.* to 'glance'@'%' identified by 'glancepwd';
修改/etc/glance/glance-registry.conf文件。
sql_connection= mysql://glance:glancepwd@192.168.0.106/glance
#在文件末尾加上如下:
[paste_deploy]
flavor = keystone
修改/etc/glance/glance-api.conf文件。
#在文件末尾加上如下:
[paste_deploy]
flavor = keystone
修改/etc/glance/glance-api-paste.ini和/etc/glance/glance-registry-paste.ini
#在文件末尾加上如下这段, ip是keystone服务器地址, 并且设置正确 tenantName user和password
[filter:authtoken]
paste.filter_factory = keystone.middleware.auth_token:filter_factory
service_protocol = http
service_host=192.168.0.106
service_port = 5000
auth_host=192.168.0.106
auth_port = 35357
auth_protocol = http
auth_uri=
admin_tenant_name=adminTenant
admin_user=admin
admin_password=openstack
admin_token=ADMIN
sudo glance-manage version_control 0//enable version_control
sudo glance-managedb_sync
Mysql会有4个表。
sudo service glance-api restart
sudo service glance-registry restart
2、使用glance
1) 导入环境变量
export OS_USERNAME=admin
export OS_TENANT_NAME=adminTenant
export OS_PASSWORD=openstack
export OS_AUTH_URL=v2.0
export OS_REGION_NAME=RegionOne2) 要使用glance,需要先告诉keystone找到glance服务。注册glance服务
keystone service-create --name=Glance --type=image --description=”GlanceImage Service”
会得到glance的serviceid是 ,这个id在指定endpoint时需要
指定其endpoint
keystone endpoint-create --service_id = glance-service-id --region RegionOne --publicurl --adminurl http:// 192.168.0.112:9292/v1 --internalurl http:// 192.168.0.112:9292/v1
3)上传镜像
首先先从网上下载一个镜像
wget -c
然后上传
glance add name=cirros-0.3.0-x86_64 disk_format=qcow2 container_format=bare < cirros-0.3.0-x86_64-disk.img
成功后就能通过glance index查看到刚才上传得镜像文件。
$ glance index
ID Name Disk Format Container Format Size
------------------------------------ ------------------------------ -------------------- --------------------
f4addd24-4e8a-46bb-b15d-fae2591f1a35 cirros-0.3.0-x86_64 qcow2 bare 9761280
swift是openstack的存储项目。这里我用了2台机子
Swift |
Host:swift1 ip:192.168.0.110 |
Proxy-server, account-server, container-server, object-server |
Host:swift2 ip:192.168.0.111 |
account-server, container-server, object-server |
sudo apt-get install –y keystone // 如果要和keystone做集成,swift需要使用到keystone里提供的swift_auth和auth_token的功能,不过只需在有proxy-server的服务器上装就可以了。
sudo apt-get install –y swift swift-proxy memcached swift-account swift-container swift-object
sudo groupadd swift
sudo useradd -g swift swift //为每台机器都创建swift用户
在/etc/swift下面创建一个swift.conf文件,每个节点都应该一样。内容如下:
openssl version //确定有没有openssl,如果出现版本就说明装了
配置memcached。Swift自己是没有cache机制的,所以会用到memcached,一个高性能的分布式内存对象缓存系统。proxy server需要用到memcache来作为token的临时存储, 所以需要安装和配置一下memcached。
sudo sed -i 's/127.0.0.1/0.0.0.0/g' /etc/memcached.conf
sudo service memcached restart
在/etc/swift/下创建proxy-server.conf文件配置swift的proxy-server
配置映射信息(Ring)。ring决定数据在集群中的位置。帐号数据库、容器数据库和单个对象的环都有独立的环管理,这段配置一定要在/etc/swift/目录下完成。
创建account、container、object的ring信息
创建好后,会在/etc/swift下出现account.builder、contaier.builder和object.builder三个builder文件,同时还会有个backups目录,该目录下也会有三个相应的builder文件。
为存储节点添加物理映射信息
生成最终的Ring
当创建好了Ring文件, 可以通过下面的命令来验证刚才添加的内容是否正确。
我们的存储节点在/dev/sdb/上,先对这块盘进行分区并格式化为xfs格式, 然后挂载在/srv/node/sdb1这个目录上。Swift的设计是可以使用最普通的文件系统,只要支持扩展属性就可以。一些文件系统,像ext3默认的xattrs属性是关闭着的,Openstack项目组推荐xfs。
sudo apt-get install xfsprogs //安装xfs文件系统
sudo fdisk /dev/sdb //#然后一次选择 n, p, 1, 默认, 默认, w
sudo mkfs.xfs -i size=1024 /dev/sdb1
sudo –s //切换到root
echo "/dev/sdb1 /srv/node/sdb1 xfsnoatime,nodiratime,nobarrier,logbufs=8 0 0" >> /etc/fstab
exit
sudo mkdir -p /srv/node/sdb1
sudo mount /srv/node/sdb1
sudo chown -R swift:swift /srv/node
在/etc下创建rsyncd.conf文件
sudo sed -i 's/RSYNC_ENABLE=false/RSYNC_ENABLE=true/g'/etc/default/rsync //设置rsync开机启动
sudo service rsync start //启动rsync
配置account-server.conf
sudo vi /etc/swift/account-server.conf
配置/etc/swift/object-server.conf
2、第二个存储节点配置(swift2)
存储节点无需安装proxy-server和memcached。
sudo apt-get install –y openssh-server
sudo apt-get install –y swift-accountswift-container swift-object
sudo groupadd swift
sudo useradd -g swift swift //为每台机器都创建swift用户
在/etc/swift下面创建一个swift.conf文件,每个节点都应该一样。内容如下:
将存储磁盘格式成xfs格式
sudo apt-get install xfsprogs //安装xfs文件系统
sudo fdisk /dev/sdb //#然后一次选择 n, p, 1, 默认, 默认, w
sudo mkfs.xfs -i size=1024 /dev/sdb1
sudo –s //切换到root
echo "/dev/sdb1 /srv/node/sdb1 xfsnoatime,nodiratime,nobarrier,logbufs=8 0 0" >> /etc/fstab
exit
sudo mkdir -p /srv/node/sdb1
sudo mount /srv/node/sdb1
sudo chown -R swift:swift /srv/node
然后将第一个存储节点的/etc/swift目录下的swift.conf、account-server.conf、container-server.conf、object-server.conf、account.ring.gz、container.ring.gz、object.ring.gz这些文件都copy到该节点的/etc/swift目录下, 如果文件夹不存在, 可以创建一下 mkdir /etc/swift。
创建/etc/rsyncd.conf文件。将adress的值改成该存储节点的ip。
sudo service rsync start //启动rsync
启动swift2节点的服务
启动swift1节点服务:
sudo swift-init all start
启动后,用ps命令可以看到所有服务的进程。3、使用swift
1)注册swift服务到keystone上
? 创建一个object-store服务
keystone service-create --name=Swift --type=object-store --description="Swift Object Store Service"
得到swift服务的id。
? 创建服务的endpoint
(IP地址是proxy-server所在服务器地址)
keystone endpoint-create --service_id =
2)使用swift
? swift -V 2 -A -UadminTenant:admin -K openstack stat //在swift主控点使用该命令,看一下文件的统计结果
openstack的dashboard在语言设置栏里有多种语言可选,虽然有简体中文选项,但是它的汉化基本没有完成。openstack的dashboard采用的是django架构。
django 国际化的本质就是开发者对需要翻译的字符串进行标记,并对字符串进行相应的翻译。具体操作是:
1、创建locale目录,
2、然后django-admin.py makemessages -l zh_CN,生成locale/zh_CN/LC_MESSAGES/django.po 文件。在这个po文件里对英文进行翻译。
不过对于openstack的dashboard,它已经有po文件了,我们只需直接编辑po文件就行了。
我是用apt-get方式安装的,直接编辑/usr/share/pyshared/horizon/locale/zh_CN/LC_MESSAGES/django.po文件。
po文件内容如上,msgid是源文件中出现的翻译字符串。msgstr 是相应语言的翻译结果。注意语句前后都有引号。 刚创建时 msgstr 是空字符串,需要翻译人员翻译。
翻译好后,编译po文件,
在po文件的目录下会生成一个同名的mo文件。然后在 /usr/lib/python2.7/dist-packages/horizon/locale/zh_CN/LC_MESSAGES下创建mo文件的软链接:
horizon是openstack项目组做的dashboard管理界面,用户通过这个界面可以很方便的对openstack功能进行操作,比如说建虚拟机、上传文件等等。horizon采用的是django的web架构。
1、安装
1)安装web服务
这里主要配置的,一个是将SWIFT_ENALBED置为true,一个是配置有关keystone的信息。
3、使用
1)注册keystone服务
创建keystone服务
2)访问
在浏览器输入dashboard的ip访问。
根据之前的设置,用户名就是user的名字admin,密码是openstack。登录后界面: