环境准备
主机 | IP1 | IP2 | 功能 |
---|---|---|---|
ceph1 | 192.168.233.212 | 102.168.145.212 | deploy、mon*1 、osd *2 |
ceph2 | 192.168.233.213 | 102.168.145.213 | mon*1 、osd *2 |
ceph3 | 192.168.233.214 | 102.168.145.214 | mon*1 、osd *2 |
IP1:模式为NAT,作为public network。
IP2:模式为仅主机,作为cluster network
DEVICE="ens37"
BOOTPROTO="static"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR="192.168.145.XXX"
NETMASK="255.255.255.0"
NAME="ens37"
搭建部署
基础环境
- 配置yum源
#在全部节点设置epel与ceph的yum源,以ceph1为例
[root@ceph1 ~]# wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
vim /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[ceph-source]
name=ceph-source
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
- 查看yum源
[root@ceph1 ~]# yum repolist
- 设置主机名
# 所有节点设置对应主机名,ceph1为例
hostnamectl set-hostname ceph1
- 设置hosts
#所有节点保持一致的hosts
[root@ceph1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.233.212 ceph1
192.168.233.213 ceph2
192.168.233.214 ceph3
- 设置ntp
#所有节点保持时钟同步,配置ceph1为时钟服务器
[root@ceph1 ~]# yum -y install chrony
[root@ceph1 ~]# egrep -v "^$|^#" /etc/chrony.conf
#所有节点保持时钟同步,以配置ceph2为例
[root@ceph1 ~]# egrep -v "^$|^#" /etc/chrony.conf
server 192.168.233.212 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
- 所有节点服务重启,并查看同步状态
[root@ceph1 ~]# systemctl restart chronyd.service
[root@ceph1 ~]# chronyc sources -v
- 防火墙和selinux
#临时关闭
[root@ceph1 ~]# systemctl stop firewalld
[root@ceph1 ~]# setenforce 0
用户相关
- 创建用户
#所有节点创建用户
[root@ceph1 ~]# useradd -d /home/ceph -m cephde
[root@ceph1 ~]# passwd cephde
- 修改visudo,使cephde用户在sudo列表
[root@ceph1 ~]# visudo #92G 快速跳转到92行
cephde ALL=(ALL) ALL #新增一行
- 用户赋权
[root@ceph1 ~]# su - cephde
[cephde@ceph1 ~]$ echo "cephde ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephde
[cephde@ceph1 ~]$ sudo chmod 0440 /etc/sudoers.d/cephde
- 设置ssh免密登陆
[root@ceph1 ~]# su - cephde
[cephde@ceph1 ~]$ ssh-keygen -t rsa
[cephde@ceph1 ~]$ ssh-copy-id cephde@ceph2 #分发密钥,以ceph2为例
- 设置环境变量
#在主目录下生成~/.ssh/config
[root@ceph1 ~]# cat ~/.ssh/config
# ceph-deploy
Host ceph1
Hostname ceph1
User cephde
Host ceph2
Hostname ceph2
User cephde
Host ceph3
Hostname ceph3
User cephde
部署ceph集群
安装ceph-deploy
#在控制管理节点安装ceph-deploy工具,这里ceph1作为控制节点
[root@ceph1 ~]# yum install ceph-deploy -y
创建ceph集群
- 创建集群
#在创建的cephde用户下操作,在管理节点上生成一个目录用于存放集群相关配置文件
[root@ceph1 ~]# su - cephde
[cephde@ceph1 ~]$ mkdir cephcluster
[cephde@node1 ~]$ cd cephcluster
[cephde@node1 ~]$ ceph-deploy new ceph1 ceph2 ceph3
在使用ceph-deploy创建集群时可能会报错:ImportError: No module named pkg_resources
#缺少python-setuptools安装包
[cephde@node1 ~]$ sudo yum install python-setuptools
- 修改集群配置文件
[cephde@node1 ~]$ cat ceph.conf
[global]
fsid = 267fc76c-915f-41ed-8436-9ef3dde19ca8
mon_initial_members = ceph1, ceph2, ceph3
mon_host = 192.168.233.212,192.168.233.213,192.168.233.214
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public network = 192.168.233.0/24 #前端mon网络
cluster network = 192.168.145.0/24 #后端osd心跳
osd pool default size = 2 #默认副本数为3
mon_allow_pool_delete = true #默认保护机制不允许删除pool
- 安装ceph
#在控制节点ceph集群目录使用ceph-deploy统一安装
[root@ceph1 ~]# ceph-deploy install ceph1 ceph2 ceph3
如果由于网速原因安装失败,可以在各存储节点单独安装ceph和ceph-radosgw
[root@ceph1 ~]# yum install -y ceph ceph-radosgw
#依赖报错,安装依赖包
[root@ceph1 ~]# wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//leveldb-1.12.0-5.sdl7.x86_64.rpmrpm -ivh leveldb-1.12.0-5.sdl7.x86_64.rpm
[root@ceph1 ~]# rpm -ivh leveldb-1.12.0-5.sdl7.x86_64.rpm
#依赖报错,安装依赖包
[root@ceph1 ~]# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
[root@ceph1 ~]# rpm -ivh epel-release-7-11.noarch.rpm
[root@ceph1 ~]# yum -y install python-pecan
- 查看版本
[root@ceph1 ~]# ceph -v
- 初始化ceph_mon
#在控制管理节点初始化monitor
[cephde@ceph1 cephcluster]$ ceph-deploy mon create-initial
#初始化完成之后,会在集群目录下新增多个密钥文件
[cephde@ceph1 cephcluster]$ ls -l
[cephde@ceph1 cephcluster]$ sudo systemctl status ceph-mon@ceph1 #查看状态
- 分发ceph.conf与密钥
#分发ceph配置文件与密钥到其他控制节点与存储节点,分发节点也要包含在内,如果被分发节点已经配置文件,可以使用如下命令:ceph-deploy --overwrite-conf admin xxx
#分发到各节点/etc/ceph目录
[cephde@ceph1 cephcluster]$ ceph-deploy admin ceph1 ceph2 ceph3
- 安装ceph_mgr
# luminos版本必须安装mgr(dashboard)
[cephde@ceph1 cephcluster]$ ceph-deploy mgr create ceph1:ceph1_mgr ceph2:ceph2_mgr ceph3:ceph3_mgr
#查看状态
[cephde@ceph1 cephcluster]$ systemctl status ceph-mgr@ceph1_mgr
[cephde@ceph1 cephcluster]$ sudo netstat -tunlp | grep mgr
- 启动mgr
#可查看mgr默认开启的服务:(sudo) ceph mgr module ls
#默认dashboard服务在可开启列表中,但并未启动,需要手工开启
[cephde@ceph1 cephcluster]$ sudo ceph mgr module enable dashboard
# dashboard服务已开启,默认监听全部地址的tcp7000端口;
# 如果需要设置dashboard的监听地址与端口,如下:
# 设置监听地址:(sudo) ceph config-key put mgr/dashboard/server_addr x.x.x.x
# 设置监听端口:(sudo) ceph config-key put mgr/dashboard/server_port x
[cephde@ceph1 cephcluster]$ sudo netstat -tunlp | grep mgr
- 查看集群状态
# 查看monitor状态
[cephde@ceph1 cephcluster]$ sudo ceph mon stat
# 查看ceph状态:ceph health (detail),ceph -s,ceph -w等;
# 状态显示mgr处于active-standby模式
[cephde@node1 cephcluster]$ sudo ceph -s
# 可在各节点查看认证信息等
[cephde@node1 cephcluster]$ sudo ceph auth list
- 创建osd(存储)
# osd位于存储节点,可查看存储节点磁盘状况
[root@node2 ~]# lsblk
# 实际创建osd时,可通过管理节点使用ceph-deploy创建;
# 本例中有5个osd节点,每个osd节点可运行4个osd进程(在6800~7300端口范围内,每进程监听1个本地端口)
[cephde@ceph1 cephcluster]$ ceph-deploy osd create ceph1 --data /dev/sdb
[cephde@ceph1 cephcluster]$ ceph-deploy osd create ceph1 --data /dev/sdc
[cephde@ceph1 cephcluster]$ ceph-deploy osd create ceph2 --data /dev/sdb
[cephde@ceph1 cephcluster]$ ceph-deploy osd create ceph2 --data /dev/sdc
[cephde@ceph1 cephcluster]$ ceph-deploy osd create ceph3 --data /dev/sdb
[cephde@ceph1 cephcluster]$ ceph-deploy osd create ceph3 --data /dev/sdc
- 查看osd状态
# 在管理节点查看
[cephde@ceph1 cephcluster]$ ceph-deploy osd list ceph1
# 在管理节点查看osd状态等
[cephde@ceph1 cephcluster]$ sudo ceph osd stat
[cephde@ceph1 cephcluster]$ sudo ceph osd tree
# 在管理节点查看容量及使用情况
[cephde@ceph1 cephcluster]$ sudo ceph df
在osd节点查看
[root@ceph2~]# lsblk
# ceph-osd进程,根据启动顺序,每个osd进程有特定的序号
[root@ceph2 ~]# systemctl status ceph-osd@3
# osd进程端口号;
# 或:ps aux | grep osd | grep -v grep
[root@ceph2 ~]# netstat -tunlp | grep osd