DevStack的安装
环境:
Ubuntu 16.04.2 LTS
ceph 10.2.9
openstack queens
1、环境准备
我使用的操作系统为Ubuntu 16.04的版本,默认的软件包源是国外的,速度相对来说比较慢,所以我们修改文件/etc/apt/sources.list,使用如下命令更改:
sed -i 's/us.archive.ubuntu.com/cn.archive.ubuntu.com/g' /etc/apt/sources.list
sed -i 's/security.ubuntu.com/cn.archive.ubuntu.com/g' /etc/apt/sources.list
更新一下源。
apt-get update
2、下载devstack
安装devstack痛苦的其中一个原因,是OpenStack代码,都需要从github下载,这样由于网络的原因,经常导致各种错误,简直让人崩溃,各种错误,目前国内已经提供了完整的OpenStack的github的mirror:http://git.trystack.cn,这样Devstack成功概率会大大提高。
另外devstack还会下载image,下载的过程也是非常缓慢。trystack也提供大家常用的image下载:http://images.trystack.cn。
目前官方github上面保留着三个稳定的版本,我们这边安装queens版。
mkdir -p /opt/stack/ && cd /opt/stack
apt-get install git
git clone http://git.trystack.cn/openstack-dev/devstack.git -b stable/queens
3、创建stack用户
目前Devstack脚本已经不支持直接使用root身份运行,你需要创建stack用户运行。
cd devstack/tools/
./create-stack-user.sh
修改devstack目录权限,让stack用户可以运行。
cd ../..
chown -R stack:stack /opt/stack
4、配置pip源
OpenStack很多组件需要从pip源下载,默认是国外的源,我们需要设置为国内的源,以便可以快速的进行配置,在root和stack的加目录下面都配置一下。
首先分别在家目录下面都创建.pip的目录,然后在目录下面创建文件pip.conf,内容如下:
su stack
mkdir .pip
cat >> .pip/pip.conf <<EOF
[global]
trusted-host = pypi.douban.com
index-url = http://pypi.douban.com/simple
EOF
5、配置文件
cd devstack
cp samples/local.conf .
对文件local.conf进行简单修改,如下内容:
[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
LOGFILE=$DEST/logs/stack.sh.log
LOGDAYS=2
SWIFT_HASH=cb1db63e-fc54-4a9b-a7b1-311993bb4df8
SWIFT_REPLICAS=1
SWIFT_DATA_DIR=$DEST/data
# use TryStack git mirror
GIT_BASE=http://git.trystack.cn
NOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.git
SPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git
6、安装
中途可能会出现多次错误,大部分都是因为网络的原因,重复运行命令即可。
./stack.sh
验证
经过长时间的等待之后,根据网络状态,大约1个小时的时间,出现下面的界面即可是安装完成。
=========================
DevStack Component Timing
(times are in seconds)
=========================
run_process 14
test_with_retry 2
apt-get-update 15
pip_install 112
osc 127
wait_for_service 14
dbsync 15
apt-get 30
-------------------------
Unaccounted time 347
=========================
Total runtime 676
This is your host IP address: 10.33.1.50
This is your host IPv6 address: ::1
Horizon is now available at http://10.33.1.50/dashboard
Keystone is serving at http://10.33.1.50/identity/
The default users are: admin and demo
The password: secret
WARNING:
Using lib/neutron-legacy is deprecated, and it will be removed in the future
Services are running under systemd unit files.
For more information see:
https://docs.openstack.org/devstack/latest/systemd.html
DevStack Version: queens
Change: 72e80739bcdab307268f87fdd13502175d545369 Role apache-logs-conf: fix redhat matching 2019-04-09 23:46:36 +0200
OS Version: Ubuntu 16.04 xenial
然后我们进行登录查看。


ceph端操作
1.1. 在ceph中创建池供openstack使用
ceph osd pool create openstack-pool 128 128
1.2. ceph中创建相关的账号,并设置权限,openstack user用于访问openstack-pool
ceph auth get-or-create client.openstack mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=openstack-pool'
1.3. 同步ceph配置到openstack节点中(openstack将使用此配置访问ceph集群)
ssh {your-openstack-server} sudo tee /etc/ceph/ceph.conf </etc/ceph/ceph.conf
1.4. 同步keyring文件
将openstack user的keyring拷贝到cinder volume节点,并更改相应的权限.
ceph auth get-or-create client.openstack >> /etc/ceph/ceph.client.openstack.keyring
scp /etc/ceph/ceph.client.openstack.keyring root@{your-openstack-server}:/etc/ceph/
ssh {your-openstack-server} sudo chown cinder:cinder /etc/ceph/ceph.client.openstack.keyring (devstack环境中不需要设置用户组)
openstack端 认证
ceph节点
ceph auth get-key client.openstack >> /etc/ceph/client.openstack.key
scp /etc/ceph/client.openstack.key root@{your-openstack-server}:/etc/ceph/
openstack 节点(这里uuid可以自己生成)
cat > secret.xml <<EOF
<secret ephemeral='no' private='no'>
<uuid> 70cafbfb-3f5e-48c5-8acc-32858cb0814d</uuid>
<usage type='ceph'>
<name>client.openstack secret</name>
</usage>
</secret>
EOF
sudo virsh secret-define --file secret.xml
sudo virsh secret-set-value --secret 70cafbfb-3f5e-48c5-8acc-32858cb0814d --base64 $(cat /etc/ceph/client.openstack.key)
配置 Cinder
2.2 设置cinder.conf(/etc/cinder/cinder.conf)
cat cinder.conf
[DEFAULT]
...
enabled_backends = rbd2
...
[rbd2]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
rados_connect_timeout = -1
rados_connection_interval = 5
rados_connection_retries = 3
rdb_ceph_conf = /etc/ceph/ceph.conf
rbd_cluster_name = ceph
rbd_flatten_volume_from_snapshot = True
rbd_max_clone_depth = 5
rbd_pool = openstack-pool
rbd_user = openstack
rbd_secret_uuid = 70cafbfb-3f5e-48c5-8acc-32858cb0814d
rbd_store_chunk_size = 4
volume_backend_name = rbd2
2.3 重启cinder服务,查看cinder list
[root@ubuntu1604-50~]# systemctl restart devstack@c-vol
[root@ubuntu1604-50~]# cinder-manage service list
DEBUG oslo_db.sqlalchemy.engines [None req-59a66dcb-e29a-455e-847d-61572006ce0e None None] MySQL server mode set to STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION {{(pid=17899) _check_effective_sql_mode /usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/engines.py:290}}
Binary Host Zone Status State Updated At RPC Version Object Version Cluster
cinder-scheduler ubuntu1604-50 nova enabled :-) 2019-10-11 01:56:12 3.10 1.35
cinder-volume ubuntu1604-50@lvmdriver-1 nova enabled :-) 2019-10-11 01:55:29 3.15 1.35
cinder-volume ubuntu1604-50@rbd2 nova enabled :-) 2019-10-11 01:56:13 3.15 1.35
验证
创建卷类型:

创建一个卷,类型选上rbd2

可以看到,这个卷在ceph中。代表ceph rbd 对接cinder 成功


配置 NOVA
queens版
在 queens 版中, Ceph 块设备移到了 [libvirt] 段下。编辑所有计算节点上的 /etc/nova/nova.conf 文件,在 [libvirt] 段下添加:
[libvirt]
images_type = rbd
images_rbd_pool = openstack-pool
images_rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_user = openstack
# uuid前后一致
rbd_secret_uuid = 70cafbfb-3f5e-48c5-8acc-32858cb0814d
disk_cachemodes="network=writeback"
live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"
# 禁用文件注入
inject_password = false
inject_key = false
inject_partition = -2
# 虚拟机临时root磁盘discard功能,”unmap”参数在scsi接口类型磁盘释放后可立即释放空间
hw_disk_discard = unmap
重启nova
systemctl restart devstack@n-cpu
验证
创建RAW镜像
要在ceph中启动虚拟机,glance镜像格式必须为RAW。这里使用cirros镜像
从QCOW转换为RAW格式 :
find / -name cirros-0.3.5-x86_64-disk*
qemu-img convert -f qcow2 -O raw /opt/stack/devstack/files/cirros-0.3.5-x86_64-disk.img cirros.raw
使用RAW镜像创建glance镜像 .
glance image-create --name cirros_raw_image --disk-format=raw --container-format=bare < cirros.raw
You must provide a username via either --os-username or env[OS_USERNAME]
需要OpenStack RC,下载下来。拷贝到服务器

输入密码,创建RAW 镜像
[root@ubuntu1604-50~]# . admin-openrc.sh
Please enter your OpenStack Password for project admin as user admin:
[root@ubuntu1604-50~]# glance image-create --name cirros_raw_image --disk-format=raw --container-format=bare < cirros.raw
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | 4bda4108d1a74dd73a6ae6d0ba369916 |
| container_format | bare |
| created_at | 2019-10-11T02:43:28Z |
| disk_format | raw |
| id | b77a6d3d-7c35-4d1d-8e68-45b230df1aa6 |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros_raw_image |
| owner | 186ce9434c25464da9adf6f39ca43dba |
| protected | False |
| size | 41126400 |
| status | active |
| tags | [] |
| updated_at | 2019-10-11T02:43:29Z |
| virtual_size | None |
| visibility | shared |
+------------------+--------------------------------------+
查看raw镜像

创建可以引导的卷m2

以m2卷创建实例

网友评论