Ceph安装部署

环境准备

主机 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

猜你喜欢

转载自blog.csdn.net/qq_42747099/article/details/88912268