Ceph环境搭建 (Debian发行版为例)
注:一个ceph存储集群需要至少一个Ceph Monitor和至少两个Ceph OSD Daemons
安装前的了解
安装版本
L版本安装:echo deb http://download.ceph.com/debian-luminous/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
普通用户免密码sudo设置
1 | su root |
ssh默认端口号问题 (不是22)
解决方案:编辑~/.ssh/config
文件,内容如下:
1 | Port 32200 |
安装步骤 <在此之前请配置好免密登录和节点时间同步,参考官网Pre-flight>
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
echo deb http://download.ceph.com/debian-{ceph-stable-release}/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list 【版本如:luminous】
sudo apt-get update && sudo apt-get install ceph-deploy
1.注意:debian安装mimic版本时,用ceph-deploy安装不能安装到最新的,只能安装到
Candidate: 10.2.11-2
的,可以通过apt-cache policy ceph-common
查看;而lumious可以安装到12.2.10
。
2.软件不知道怎么安装可以用: apt-file search xxx
接着执行:
mkdir my-cluster
cd my-cluster
ceph-deploy new cld-unknown212867
vim ceph.conf
添加:osd pool default size = 2 ## 放到ceph.conf中修改副本数为2
ceph-deploy install --release luminous cld-unknown212867 cld-unknown212868 cld-unknown212869
ceph-deploy mon create-initial
ceph-deploy admin cld-unknown212867 cld-unknown212868 cld-unknown212869
ceph-deploy mgr create cld-unknown212867 *Required only for luminous+ builds, i.e >= 12.x builds*
1. 以loop来做虚拟盘<考虑到当前节点没有额外盘> —- 失败
接着我们来添加OSDs,我们首先虚拟一个块设备(用dd
命令):
dd if=/dev/zero of=1G.img bs=1M count=1000 # OSD节点上虚拟一个1G的块设备
ceph-deploy osd create --data /home/lihongbo01/dev/1G.img cld-unknown212868 【MON节点上执行的】
经过多次尝试,用loop来做设备失败。 【可能还没有完全支持】
2. 【添加盘后添加OSD成功】 —- 成功
ceph-deploy osd create --data /dev/vdd cld-unknown212868
ceph-deploy osd create --data /dev/vdd cld-unknown212869
创建OSD时最终会调用ceph-volume,这时
--data
已经不能是目录了,而须一个disk
,可参见问题部分查看disk.py
代码来理解。
查看成功
1 | lihongbo01@cld-unknown212867:~/my-cluster$ sudo ceph health |
一定要加sudo查看
中途安装失败删除命令:
1 | ceph-deploy purge {ceph-node} [{ceph-node}] |
注意要加上–release luminous才会安装该版本的,不然就安装默认的了,当前
ceph-deploy
是2.0.1版本,Debian上默认安装Ceph是10.2.11版本的。
以下是以loop虚拟设备来做OSD时遇到的问题即解决方法:
问题
添加OSD不成功
1 | [node4][DEBUG ] stderr: 12: (main()+0x2c58) [0x7f8e8dc18c18] |
【实践失败】
loop设备做块设备
需要修改两处:1
2vim /usr/lib/python2.7/dist-packages/ceph_volume/util/disk.py +332 修改为:return TYPE == 'disk' or 'loop'
vim /usr/lib/python2.7/dist-packages/ceph_volume/util/disk.py +417 True ==> False
ref:https://www.netways.de/blog/2018/11/14/ceph-mimic-using-loop-devices-as-osd/
清理操作
sudo lvs (vgscan)
sudo vgremove ceph-9eee83f3-8b17-4b3f-b53e-62bf4977733b -y
lsblk
华丽的分割线
Ceph对象网关部署 (可部署多个)
使用命令在 Ceph 对象网关节点上新建一个 Ceph对象网关实例:
1 | ceph-deploy rgw create cld-unknown212868 |
需要开放7480端口:iptables -I INPUT 1 -p tcp -m tcp –dport 7480 -j ACCEPT
测试及效果:
1 | curl http://cld-unknown212868:7480 |
即表示安装成功。
创建S3用户
1 | lihongbo01@cld-unknown212867:~/my-cluster$ sudo radosgw-admin user create --uid="lhb" --display-name="First User" |
目前只能使用path-style来访问,hosted-style需要另外配置。
修改了配置文件(如网关端口号)
ceph-deploy --overwrite-conf config push <gateway-node> [<other-nodes>] # 将该配置文件推送到你的 Ceph 对象网关节点
sudo service radosgw restart id=rgw.<short-hostname> # 重启Ceph对象网关
提供泛域名解析能力
Ceph对象存储网关支持两种访问模式:path-style
和host-style
;默认的支持path-style
,即http://cld-unknown212868/bucket
;要想以类似S3的host-style
进行访问,即用http://bucket.cld-unknown212868/obj
来进行访问,需要配置泛域名解析,此处用到dnsmasq
工具。
sudo apt-get install dnsmasq -y
vim /etc/resolv.conf 【改为:nameserver 127.0.0.1】
vim /etc/resolv.dnsmasq.conf 【将原来resolv.conf的内容写在这个文件里面】
接着编辑dnsmqsq配置文件,在/etc/dnsmasq.conf
中加入一下内容:
1 | address=/.cld-unknown212868/10.202.42.147 |
此配置的含义是将
xxx.cld-unknown212868
的路径都转到10.202.42.147这个地址;
然后重启dnsmasq服务:/etc/init.d/dnsmasq restart
效果
1 | lihongbo01@cld-unknown212868:~/workspace/ceph_workspace$ ping bucket.cld-unknown212868 |