在 centos上安装ceph与openstack集成

来源:互联网 发布:js div display none 编辑:程序博客网 时间:2024/06/05 02:43
操作系统:centos7.3或者centos7.2
网络拓扑
ceph:
192.168.5.7     node0(管理节点、osd)
192.168.5.12    node1(monitor、osd)
192.168.5.6     node2(monitor、osd)
192.168.5.11    node3(monitor、osd)
openstack:
192.168.5.240   computer1
192.168.5.241   controller
主机名:
192.168.5.7     node0
192.168.5.12    node1
192.168.5.6     node2
192.168.5.11    node3
192.168.5.240   computer1
192.168.5.241   controller

一、前期准备
1. 权限准备(node0-3)
adduser -d /home/ceph -m ceph
passwd ceph
echo "ceph ALL=(root)     NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
chmod 0440 /etc/sudoers.d/ceph
2 修改/etc/hosts(node0-3)
内容如下:
192.168.5.7     node0
192.168.5.12    node1
192.168.5.6     node2
192.168.5.11    node3
192.168.5.240   computer1
192.168.5.241   controller
3.   requiretty准备(node0-3)
visudo修改suoders文件
Defaults requiretty修改为 #Defaults requiretty, 表示不需要控制终端。
增加行 Defaults visiblepw
4.管理节点无密码远程访问权限
用ceph登录后,执行如下的命令
第一步:在管理节点主机上执行命令:
ssh-keygen
说明:(为了简单点命令执行时直接确定即可)
第二步:将第一步的key复制至其他节点
ssh-copy-id ceph@node0
ssh-copy-id ceph@node1
ssh-copy-id ceph@node2
ssh-copy-id ceph@node3
同时修改~/.ssh/config文件增加如下内容:
Host node0
Hostname node0
User ceph
Host node1
Hostname node1
User ceph
Host node2
Hostname node2
User ceph
Host node3
Hostname node3
User ceph
使用如下命令
#sudo chmod 644  /home/ceph/.ssh/config
#ls -l /home/ceph/.ssh/config
-rw-r--r-- 1 ceph ceph 144 Jul 28 22:04 /home/ceph/.ssh/config
5 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
6 禁用selinux
当前禁用
setenforce 0
永久禁用
cat /etc/selinux/config
SELINUX=disabled
二、 源准备和管理节点安装ceph-deploy工具
每个节点进行如下操作:
1. 增加 yum配置文件ceph.repo
sudo vim /etc/yum.repos.d/ceph.repo
添加以下内容:
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
priority=1
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS
gpgcheck=0
priority=1
2.下载阿里云的base源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3. 下载阿里云的epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
4. 更新软件源并安装ceph-deploy,时间同步软件
sudo yum update
sudo yum install ntp ntpupdate ntp-doc
5 关闭其他节点的防火墙和禁用selinux
6 在管理节点上安装ceph-deploy
sudo yum install ceph-deploy
三、创建Ceph集群
ceph@node0~]$ mkdir cluster
[ceph@node0cluster]$cd cluster
[ceph@node0 cluster]$ pwd
/home/ceph/cluster
1.如何清空ceph数据
先清空之前所有的ceph数据,如果是新装不用执行此步骤,如果是重新部署的话也执行下面的命令:
ceph-deploy purgedata {ceph-node} [{ceph-node}]
ceph-deploy forgetkeys
使用命令语法如下:
ceph-deploy purgedata admin_node node1 node2 node3
ceph-deploy forgetkeys
2. 创建集群设置Monitor节点
在admin节点上用ceph-deploy创建集群,new后面跟的是monitor节点的hostname,如果有多个monitor,则它们的hostname以为间隔,多个mon节点可以实现互备。
ceph-deploy new node1 node2 node3
[ceph@node0 cluster]$ls
ceph.conf ceph.log ceph.mon.keyring
查看ceph的配置文件,Node1-3节点都变为了监控节点
[ceph@node0 cluster]$ cat ceph.conf
[global]
fsid = 74462f02-bee8-4584-b499-e928c6cb7db2
mon_initial_members = node1, node2, node3
mon_host = 192.168.5.12,192.168.5.6,192.168.5.11
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd_pool_default_size = 2
mon clock drift allowed = 2
mon clock drift warn backoff = 31
public network = 192.168.5.0/2
3.  修改副本数目
修改默认的副本数为2,即ceph.conf,使osd_pool_default_size的值为2。如果没有该行,则添加。
4.  网络不唯一的处理
如果IP不唯一,即除ceph集群使用的网络外,还有其他的网络IP。
比如:
eno16777736: 192.168.175.100
eno50332184: 192.168.92.110
virbr0: 192.168.122.1
那么就需要在ceph.conf配置文档[global]部分增加参数public network参数:
public_network = {ip-address}/{netmask}
如:
public_network = 192.168.92.0/6789
5 时间不同步的处理
测试环境中,时间要求不是很严格,修改ceph.conf,加入
mon clock drift allowed = 2
mon clock drift warn backoff = 31
如果是正式环境,时间需要严格同步
四、 安装CEPH
管理节点节点用ceph-deploy工具向各个节点安装ceph:
ceph-deploy install {ceph-node}[{ceph-node} ...]
或者本地
ceph-deploy install {ceph-node}[{ceph-node} ...] --local-mirror=/opt/ceph-repo --no-adjust-repos --release=jewel
如:
ceph-deploy install node0 node1 node2 node3
如果安装不成功原因是网络比较慢,达到5分钟超时
解决方案:
1.可以在每个节点上先行安装sudo yum -y install ceph
2.数量比较多的话多执行几次此命令
3.最佳方案是搭建本地源
五、初始化monitor节点
[ceph@node0 cluster]$ceph-deploy mon create-initial
查看文件,生成了5个key
[ceph@node0 cluster]$ ls -l
total 324
-rw------- 1 ceph ceph    113 Aug  1 03:05 ceph.bootstrap-mds.keyring
-rw------- 1 ceph ceph    113 Aug  1 03:05 ceph.bootstrap-osd.keyring
-rw------- 1 ceph ceph    113 Aug  1 03:05 ceph.bootstrap-rgw.keyring
-rw------- 1 ceph ceph    129 Aug  1 03:05 ceph.client.admin.keyring
-rw-rw-r-- 1 ceph ceph    260 Jul 29 03:14 ceph.conf
-rw-rw-r-- 1 ceph ceph 304511 Aug  1 14:32 ceph-deploy-ceph.log
-rw------- 1 ceph ceph     73 Jul 28 23:57 ceph.mon.keyring
六、 OSD管理
每个ceph node节点挂载了第二个型硬盘
sudo parted -s /dev/vdb mklabel gpt mkpart primary xfs 0% 100%
sudo mkfs.xfs /dev/vdb -f
sudo blkid -o value -s TYPE /dev/vdb
1 初始化OSD
ceph-deploy osd prepare {ceph-node}:/path/to/directory
例如:
ceph-deploy osd prepare node1:/dev/vdb
ceph-deploy osd prepare node2:/dev/vdb
ceph-deploy osd prepare node3:/dev/vdb
ceph-deploy osd prepare node0:/dev/vdb
2 激活OSD
ceph-deploy osd activate {ceph-node}:/path/to/directory
示例:
ceph-deploy osd activate node1:/dev/vdb1
ceph-deploy osd activate node2:/dev/vdb1
ceph-deploy osd activate node3:/dev/vdb1
ceph-deploy osd activate node0:/dev/vdb1
3  查看OSD tree
ceph osd tree
4 检查ceph状态和相关命令
sudo ceph health
sudo ceph -s
rbd -p vms ls
ceph df
ceph auth list
七  在controller节点或者computer节点上安装ceph client
1. 准备工作(见node节点)
2  安装(在ceph管理节点上执行)
ceph-deploy install --cli --no-adjust-repos controller
ceph-deploy config push controller
八、 创建pool(如果没有特殊说明在ceph管理节点上执行)
1. 给虚拟机的ephemeral disks创建一个ceph pool。
 $ ceph osd pool create vms 64
2. 设置Ceph客户端认证
 ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images'
 或
 ceph auth caps client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images'
3. 为client.cinder添加密钥文件来访问节点并改变属主
#ceph auth get-or-create client.cinder | ssh controller sudo tee /etc/ceph/ceph.client.cinder.keyring
#ceph auth get-key client.cinder | ssh controller  tee /etc/ceph/client.cinder.key 
#ssh controller sudo chown nova:nova /etc/ceph/ceph.client.cinder.keyring
 
 九 创建临时密钥副本
 
 运行nova-compute的节点nova-compute进程需要密钥文件。它们也存储client.cinder用户的密钥在libvirt。libvirt进程在Cinder中绑定块设备时需要用到它来访问集群。
在nova-compute节点创建一个临时的密钥副本:
#uuidgen
7e2aa02b-7ebf-42c0-912d-96600d322a3b (随机产生的)
# vi /etc/ceph/cluster/ceph.xml
内容如下:
<secret ephemeral="no" private="no">   
<uuid>7e2aa02b-7ebf-42c0-912d-96600d322a3b</uuid>   
<usage type="ceph">   
<name>client.cinder secret</name>   
</usage>   
</secret>
sudo virsh secret-define --file ceph.xml
sudo virsh secret-set-value --secret 7e2aa02b-7ebf-42c0-912d-96600d322a3b --base64 $(cat client.cinder.key)
十 和 openstack 集成
1. 和nova集成
#vi /etc/nova/nova.conf
在[libvirt]下面加入
[libvirt]
images_rbd_pool=vms
images_type=rbd
rbd_secret_uuid=7e2aa02b-7ebf-42c0-912d-96600d322a3b
rbd_user=cinder
images_rbd_ceph_conf = /etc/ceph/ceph.conf
#下面这个配置没有做实验,可以去掉
libvirt_live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST"
禁用文件注入。当启动一个实例的时候,nova通常会尝试打开rootfs。这时,nova注入一些数据,如密码、ssh 密钥,配置文件等到文件系统中。然而,这最好依靠元数据服务和cloud-init来完成。
在每个计算节点,编辑 /etc/nova/nova.conf 在 [libvirt] 标签添加:
libvirt_inject_password = false
libvirt_inject_key = false
libvirt_inject_partition = -2
命令
#systemctl restart openstack-nova-compute
2. 和glance集成 (已测试)
编辑 /etc/glance/glance-api.conf并添加如下内容:
[glance_store]
default_store = rbd 
stores = rbd
rbd_store_pool = vms
rbd_store_user = cinder
rbd_store_ceph_conf = /etc/ceph/ceph.conf
rbd_store_chunk_size = 8
如果要启动镜像的写时复制功能,添加下面的 [DEFAULT] 部分:
show_image_direct_url = True
重启服务
systemctl restart openstack-glance-api
3. 和cinder集成 (没有测试)
在openstack节点和storage节点编辑 /etc/cinder/cinder.conf配置文件并添加如下内容:
volume_driver = cinder.volume.drivers.rbd.RBDDriver
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
glance_api_version = 2
如果使用cephx验证,需要配置user和uuid:
rbd_user = cinder
rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337
原创粉丝点击