@dyj2017
2017-10-23T16:09:36.000000Z
字数 5876
阅读 2776
ceph
ceph环境搭建
本博客的主要内容是在centos7下搭建luminous,配置dashboard,搭建客户端使用rbd,源码安装ceph,最后给出一些较为常用的命令。本博客针对初次接触ceph的人群。
主机系统:centos7 x86_64 server
ceph版本:ceph 12.2.1(luminous)
硬件配置:4台vm,1核1G内存,每台至少挂载1块为osd准备的空闲盘
主机名 ip role
admin 192.168.197.144 admin
node1 192.168.197.142 mon/ mgr / osd
node2 192.168.197.141 osd
node3 192.168.197.143 osd
Centos7默认是不启用有线网卡的,需要手动开启。打开终端:
# cd /etc/sysconfig/network-scripts/
# ls
ls 查看一下ifcfg-eno后面对应的数字是什么,以eno32为例:
# vi ifcfg-eno32
设置 ONBOOT=yes,即开启自动启用网络连接。重启网络:
# service network restart
最后验证能否ping通外网:
# ping www.baidu.com
修改主机名,以便后面切换部署时识别相应节点的主机名
1)修改主机名
# vi /etc/hostname
2)修改127.0.0.1 后的内容为主机名:
# vi /etc/hosts
并添加如下信息:
192.168.197.144 admin
192.168.197.142 node1
192.168.197.141 node2
192.168.197.143 node3
3)验证各个主机之间能否互相ping通主机名
在所有节点上执行如下操作:
1)创建用户名:cephu,设置密码:
# useradd –d /home/ceph –m cephu
# passwd cephu
2)修改visudo文件,否则提示cephu不再sudoer列表中的错误。命令行输入visudo,在root ALL=(ALL) ALL下面添加:
cephu ALL=(ALL) ALL
3)切换至cephu用户,为该用户增加root权限:
$ echo “ceph ALL=(root) NOPPASSWD:ALL” | sudo tee /etc/sudoers.d/ceph
$ sudochmod 0440 /etc/sudoers.d/ceph
1)cephu用户下,生成秘钥:
$ ssh-keygen
2)cephu用户下,把生成的密钥拷贝到各Ceph节点:
$ ssh-copy-id cephu@node1
$ ssh-copy-id cephu@node2
$ ssh-copy-id cephu@node3
3)root用户下,添加~/.ssh/config配置文件,并进行如下设置:
Host node1
Hostname node1
User cephu
Host node2
Hostname node2
User cephu
Host node3
Hostname node3
User cephu
1)添加ceph源:
# cat >/etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
ctrl + d 保存
2)更新源,安装ceph-deploy:
# sudo yum makecache
# sudo yum update
# sudo yum install ceph-deploy -y
# sudo visudo
找到 Defaults requiretty 注释掉
# vi /etc/selinux/config
把 selinux 设为 disabled
# yum install -y ntp ntpdate ntp-doc
# systemctl start ntpd
# systemctl status ntpd
确认打开NTP服务
没有特别说明以下所有操作均是在admin节点,cephu用户下执行
$ mkdir my-cluster //切记不可用sudo创建
$ cd my-cluster
之后,所有ceph-deploy命令操作必须在该目录下执行
$ ceph-deploy new node1
创建成功会有三个文件:ceph.conf, ceph.mon.keyring, and a log file
$ ceph-deploy install --release luminous node1 node2 node3
由于网速慢的问题,安装并不会成功。之所以仍进行这一步,只因执行过了该命令就会自动创建相应文件夹。在进入各个节点手动安装的时候,才能把下载的不成功的包放到正确的目录下,这样,手动安装使用yum命令才会成功。之后进入每个节点执行安装。以node1为例:
先从https://download.ceph.com/rpm-luminous/el7/ x86_64/ 下载所有最有最新版本的rpm包到本地
之后使用secure shell client上传到node1的/var/cache/yum/x86_64/7/Ceph/packages/文件夹下
然后安装ceph:
$ ssh node1
$ sudo yum install –y epel-release ceph ceph-radosgw
必须说的是,虽然所有安装包都在相应的目录中了,但仍可能不成功,这个时候只需要再次重新把安装包放到对应目录后再执行该命令就成功了,原因不清楚,反正这样做就对了。
$ ceph --version
$ sudo firewall-cmd --zone=public --add-service=ceph-mon --permanent //该规则仅在mon节点执行,如果不添加就不能在其他osd上进行一些查询操作
$ sudo firewall-cmd --zone=public --add-service=ceph --permanent
$ sudo firewall-cmd --reload
需要说明的是,该防火墙规则只能在安装成功ceph后才能添加,否则就不识别,添加失败。最后退出node1节点,返回admin节点
$ ceph-deploy mon create-initial
$ ceph-deploy admin node1 node2 node3
$ ceph-deploy mgr create node1 //只有luminous才有,为使用dashboard做准备
$ ceph-deploy osd create node1:/dev/sdb node2:/dev/sdb node3:/dev/sdb
需要说明的是该/dev/sdb是在各个节点上为osd准备的空闲磁盘(无需分区格式化,如果有分区需要指定具体分区),通过如下命令查看:
$ ssh node1 lsblk -f
最后通过如下命令查看集群状态:
$ ssh node1 sudo ceph -s
如果显示health_ok,3个osd up就成功了
把ceph-mgr和ceph-mon安装在同一个主机上,最好只有一个ceph-mgr
$ sudo ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
$ sudo ceph-mgr -i node1
$ sudo ceph status
确认mgr的状态为active
$ sudo ceph mgr module enable dashboard
$ sudo ceph config-key set mgr/dashboard/node1/server_addr 192.168.197.142
ip地址为mgr节点的ip地址
浏览器地址栏输入:192.168.197.142:7000
创建块设备之前需要创建存储池,存储池相关命令需要在mon节点执行
$ sudo ceph osd pool create rbd 128 128
$ sudo rbd pool init rbd
另备一台主机,系统centos7用来作为client。主机名为client,ip:192.168.197.146。修改hosts文件实现和admin节点的主机名互通。
1)升级client内核到4.x:
参考:https://www.tesun.net/centos7sheng-ji-nei-he/
2)为client安装ceph:
参考2.3
3)配置client防火墙:
$ sudo firewall-cmd --zone=public --add-service=ceph --permanent
$ sudo firewall-cmd --reload
4)在admin节点赋予client使用命令免用户名权限:
$ ceph-deploy admin client
5)修改client下该文件的读权限:
$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring
6)修改client下的ceph配置文件:
$ sudo vi /etc/ceph/ceph.conf
在global section下添加:
rbd_default_features = 1
该配置为了解决映射镜像时出错参见:
http://www.cnblogs.com/styshoo/p/6505794.html
$ rbd create foo --size 4096
$ sudo rbd map foo --name client.admin
$ sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo
$ sudo mkdir /mnt/ceph-block-device
$ sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device
$ cd /mnt/ceph-block-device
dd if=/dev/zero of=/mnt/ ceph-block-device /file1 count=100 bs=1M
注意要足够多的内核,足够多的内存,才能make成功。这里内核16内存16G。另外编译目录的大小至少50g,越大越好!如果一开始编译目录没有那么大,就扩展其容量,参见:http://www.cnblogs.com/lighten/p/6825938.html,注意:替换 resize2fs为xfs_growfs
$ sudo yum install -y git
$ git clone --recursive https://github.com/ceph/ceph.git
$ git submodule update --force --init --recursive
$ cd ceph
$ ./install-deps.sh
$ cd ceph
$./do_cmake.sh
$ cd build
$ make -j16
$ sudo make install
说明:斜体表示自行设置的参数
创建副本池:
$ sudo ceph osd pool create pool-name pg_num pgp_num
创建ec池:
$ sudo ceph osd pool create pool-name pg_num pgp_num erasure
$ sudo rados lspools
$ sudo rados df //详细信息
$ sudo ceph osd lspools
$ sudo ceph osd pool ls detail //详细信息
设置副本数:
$ sudo ceph osd pool set pool-name size num
获取副本数:
$ sudo ceph osd pool get pool-name size
http://docs.ceph.com/docs/master/rados/operations/pools/#create-a-pool
说明:斜体表示自行设置的参数
$ sudo rbd create image-name --size 4096
$ sudo rbd ls
$ sudo rbd info image-name
$ sudo rbd rm image-name
http://docs.ceph.com/docs/master/start/quick-start-preflight/#open-required-ports
http://www.cnblogs.com/Je-Cortex/archive/2016/02/01/5175936.html