源自于网络-snowchuai汇总、整理
参考文档:
xxxxxxxxxx# 在全部控制与计算节点设置epel与ceph yum源(base yum源已更新),以controller01节点为例;# epel:http://mirrors.aliyun.com/repo/[root@controller01 ~]# wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo# ceph:http://mirrors.aliyun.com/ceph/# 编辑ceph.repo文件,使用luminous版本[root@controller01 ~]# vim /etc/yum.repos.d/ceph.repo[ceph]name=cephbaseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/enabled=1gpgcheck=1type=rpm-mdgpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc[ceph-noarch]name=cephnoarchbaseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/enabled=1gpgcheck=1type=rpm-mdgpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc[ceph-source]name=ceph-sourcebaseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS/enabled=1gpgcheck=1type=rpm-mdgpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc# 重新加载yum源[root@controller01 ~]# yum clean all[root@controller01 ~]# yum makecache# 查看yum源[root@controller01 ~]# yum repolist
基础环境,如hosts,时间同步ntp,开放端口iptables等相关操作,请见:HA-01集群环境
xxxxxxxxxx[root@controller01 ~]# useradd -d /home/ceph -m cephde[root@controller01 ~]# passwd cephdeNew password: storage_passRetype new password: storage_pass# 修改visudo文件,使cephde用户在sudo列表中;# 在92行” root ALL=(ALL) ALL”下新增一行:” cephde ALL=(ALL) ALL”[root@controller01 ~]# visudo93 cephde ALL=(ALL) ALL
xxxxxxxxxx# 设置cephde用户具备无密码sudo(root)权限;# 切换到cephde用户下操作[root@controller01 ~]# su - cephde[cephde@controller01 ~]$ echo "cephde ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephde[sudo] password for cephde:storage_pass[cephde@controller01 ~]$ sudo chmod 0440 /etc/sudoers.d/cephde
xxxxxxxxxx# ceph-deploy不支持密码输入,需要在管理控制节点生成ssh秘钥,并将公钥分发到各ceph节点;# 在用户cephde下生成秘钥,不能使用sudo或root用户;# 默认在用户目录下生成~/.ssh目录,含生成的秘钥对;# “Enter passphrase”时,回车,口令为空;# 另外3个控制节点均设置为ceph管理节点,应该使3个控制管理节点都可以ssh免密登陆到其他所有控制与存储节点[root@controller01 ~]# su - cephde[cephde@controller01 ~]$ ssh-keygen -t rsaEnter file in which to save the key (/home/ceph/.ssh/id_rsa):Enter passphrase (empty for no passphrase):Enter same passphrase again:

xxxxxxxxxx# 前提是各控制与存储节点已生成相关用户;# 初次连接其他节点时需要确认;# 首次分发公钥需要密码;# 分发成功后,在~/.ssh/下生成known_hosts文件,记录相关登陆信息;# 以controller01节点免密登陆controller02节点为例;另外3个控制节点均设置为ceph管理节点,应该使3各控制管理节点都可以ssh免密登陆到其他所有控制与存储节点[cephde@controller01 ~]$ ssh-copy-id cephde@controller02Are you sure you want to continue connecting (yes/no)? yescephde@controller02's password:

xxxxxxxxxx# 在root账号~目录下,生成~/.ssh/config文件,这样在控制管理节点上执行”ceph-deploy”时可不切换用户或指定”--username {username}”;[root@controller01 ~]# cat ~/.ssh/config# ceph-deployHost controller02Hostname controller02User cephdeHost controller03Hostname controller03User cephdeHost compute01Hostname compute01User cephdeHost compute02Hostname compute02User cephdeHost compute03Hostname compute03User cephde
xxxxxxxxxx# 在规划的全部控制管理节点安装ceph-deploy工具,以controller01节点为例[root@controller01 ~]# yum install ceph-deploy -y
xxxxxxxxxx# 在cephde账户下操作,切忌使用sudo操作;# 在管理节点上生成一个目录用于存放集群相关配置文件;[root@controller01 ~]# su - cephde[cephde@controller01 ~]$ mkdir cephcluster# 后续ceph-deploy相关操作全部在所创建的目录执行;# 将规划中的MON(monitor)节点纳入集群,即创建集群[cephde@controller01 ~]$ cd ~/cephcluster/[cephde@controller01 cephcluster]$ ceph-deploy new controller01 controller02 controller03

xxxxxxxxxx# 生成集群后在集群目录下生成3个文件,其中ceph.conf即是配置文件;# 默认可不修改,为使服务按规划启动,可做适当修改;# 以下红色字体部分是在默认生成的conf文件上新增的配置[cephde@controller01 cephcluster]$ cat ceph.conf[global]fsid = 9b606fef-1cde-4d4c-b269-90079d1d45ddmon_initial_members = controller01, controller02, controller03mon_host = 172.30.200.31,172.30.200.32,172.30.200.33auth_cluster_required = cephxauth_service_required = cephxauth_client_required = cephx# public network:前端mon网络,client访问网络;确保public network与mon_host在相同网段,否则初始化时可能会有错误;# cluster network:后端osd心跳,数据/流复制恢复等网络public network = 172.30.200.0/24cluster network = 10.0.0.0/24# 默认的副本数为3,实验环境变更为2osd pool default size = 2# 默认保护机制不允许删除pool,根据情况设置mon_allow_pool_delete = true
xxxxxxxxxx# 在全部控制管理与存储节点安装ceph;# 理论上在控制节点的ceph集群目录使用ceph-deploy可统一安装,命令:ceph-deploy install controller01 controller02 controller03 compute01 compute02 compute03;# 但由于网速原因大概率会失败,可在各存储节点独立安装ceph与ceph-radosgw,以controller01节点为例[root@controller01 ~]# yum install -y ceph ceph-radosgw# 查看版本[root@controller01 ~]# ceph -v

xxxxxxxxxx# 在控制管理节点初始化monitor[cephde@controller01 cephcluster]$ ceph-deploy mon create-initial# 初始化完成后,在集群目录下新增多个秘钥文件[cephde@controller01 cephcluster]$ ls -l

xxxxxxxxxx# 查看状态[cephde@controller01 cephcluster]$ sudo systemctl status ceph-mon@controller01

xxxxxxxxxx# 分发ceph配置文件与秘钥到其他控制管理节点与存储节点;# 注意分发节点本身也需要包含在内,默认没有秘钥文件,需要分发;# 如果被分发节点已经配置文件(统一变更配置文件场景),可以使用如下命令:ceph-deploy --overwrite-conf admin xxx# 分发的配置文件与秘钥在各节点/etc/ceph/目录[cephde@controller01 cephcluster]$ ceph-deploy admin controller01 controller02 controller03 compute01 compute02 compute03

xxxxxxxxxx# luminous版本必须安装mgr(dashboard)[cephde@controller01 cephcluster]$ ceph-deploy mgr create controller01:controller01_mgr controller02:controller02_mgr controller03:controller03_mgr

xxxxxxxxxx# 查看状态;[cephde@controller01 cephcluster]$ systemctl status ceph-mgr@controller01_mgr

xxxxxxxxxx[cephde@controller01 cephcluster]$ sudo netstat -tunlp | grep mgr

xxxxxxxxxx# 可查看mgr默认开启的服务:(sudo) ceph mgr module ls;# 默认dashboard服务在可开启列表中,但并未启动,需要手工开启[cephde@controller01 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@controller01 cephcluster]$ sudo netstat -tunlp | grep mgr

web登陆:http://172.30.200.31:7000/

xxxxxxxxxx# 查看monitor状态[cephde@controller01 cephcluster]$ sudo ceph mon stat

xxxxxxxxxx# 查看ceph状态:ceph health (detail),ceph -s,ceph -w等;# 状态显示mgr处于active-standby模式[cephde@controller01 cephcluster]$ sudo ceph -s

xxxxxxxxxx# 可在各节点查看认证信息等[cephde@controller01 cephcluster]$ sudo ceph auth list

xxxxxxxxxx# 检查状态:ceph quorum_status --format json-pretty# 查看集群详细配置:ceph daemon mon.{CEPH-NODE} config show | more# 查看mon详细状态:ceph daemon mon.{CEPH-NODE} mon_status# 查看ceph log所在目录:ceph-conf --name mon.{CEPH-NODE} --show-config-value log_fil# 查看mon节点的admin socket:ceph-conf --name mon.ceph01 --show-config-value admin_socket
xxxxxxxxxx# osd位于存储节点,可查看存储节点磁盘状况,以compute01节点为例;# 或在管理节点采用命令:ceph-deploy disk list NODE1 NODE2 … NODEN;# 如果节点磁盘有数据,可通过命令初始化(谨慎):ceph-deploy disk zap {NODE} {DISK},这里{DISK}可以是物理盘符,也可是分区[root@compute01 ~]# lsblk

xxxxxxxxxx# 实际创建osd时,可通过管理节点使用ceph-deploy创建;# 参数"--data"指定数据盘,参数"--journal"指定journal日志盘,日志盘可以是logical volume(vg/lv)或GPT patition,是option操作;# 本例中有3个osd节点,每个osd节点可运行4个osd进程(在6800~7300端口范围内,每进程监听1个本地端口);# 另有命令:ceph-deploy osd prepare {NODE}:{DISK}[:{/PATH/TO/JOURNAL}]; ceph-deploy osd activate {NODE}:{DISK}[:{/PATH/TO/JOURNAL}],其中[:{/PATH/TO/JOURNAL}]是option操作,可创建具有journal日志的osd守护进程(节点)[cephde@controller01 cephcluster]$ ceph-deploy osd create compute01 --data /dev/sdb[cephde@controller01 cephcluster]$ ceph-deploy osd create compute01 --data /dev/sdc[cephde@controller01 cephcluster]$ ceph-deploy osd create compute01 --data /dev/sdd[cephde@controller01 cephcluster]$ ceph-deploy osd create compute01 --data /dev/sde[cephde@controller01 cephcluster]$ ceph-deploy osd create compute02 --data /dev/sdb[cephde@controller01 cephcluster]$ ceph-deploy osd create compute02 --data /dev/sdc[cephde@controller01 cephcluster]$ ceph-deploy osd create compute02 --data /dev/sdd[cephde@controller01 cephcluster]$ ceph-deploy osd create compute02 --data /dev/sde[cephde@controller01 cephcluster]$ ceph-deploy osd create compute03 --data /dev/sdb[cephde@controller01 cephcluster]$ ceph-deploy osd create compute03 --data /dev/sdc[cephde@controller01 cephcluster]$ ceph-deploy osd create compute03 --data /dev/sdd[cephde@controller01 cephcluster]$ ceph-deploy osd create compute03 --data /dev/sde

xxxxxxxxxx# 在管理节点查看[cephde@controller01 cephcluster]$ ceph-deploy osd list compute01

xxxxxxxxxx# 在管理节点查看osd状态等[cephde@controller01 cephcluster]$ sudo ceph osd stat[cephde@controller01 cephcluster]$ sudo ceph osd tree

xxxxxxxxxx# 在管理节点查看容量及使用情况[cephde@controller01 cephcluster]$ sudo ceph df

xxxxxxxxxx# 在osd节点查看[root@compute01 ~]# lsblk

xxxxxxxxxx# ceph-osd进程,根据启动顺序,每个osd进程有特定的序号[root@compute01 ~]# systemctl status ceph-osd@0

xxxxxxxxxx# osd进程端口号;# 或:ps aux | grep osd | grep -v grep[root@compute01 ~]# netstat -tunlp | grep osd

或登陆mgr_dashboard:http://172.30.200.31:7000

