安装ceph流程

安装ceph流程

预检

一、部署服务器安装

1、新加软件包源

用 Ceph 的最新主稳定版名字替换 {ceph-stable-release} (如 firefly ),用你的Linux发行版名字替换 {distro} (如 el6 为 CentOS 6 、 el7 为 CentOS 7 、 rhel6 为 Red Hat 6.5 、 rhel7 为 Red Hat 7 、 fc19 是 Fedora 19 、 fc20 是 Fedora 20 )

# vim /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
2、安装ceph-deploy
# yum install ceph-deploy

二、节点服务器安装

1、安装NTP服务
# yum install ntp ntpdate ntp-doc
# vim /etc/ntp.conf
server ntp服务器地址 iburst
# systemctl restart ntp
# systemctl enable ntp
2、创建CEPH用户

ceph-deploy 工具必须以普通用户登录 Ceph 节点,且此用户拥有无密码使用 sudo 的权限

并且用户名不能叫ceph,部署服务器到节点的普通用户需要免密登陆

# useradd {username}

允许无密码 SSH 登录

# ssh-keygen

把公钥拷贝到各 Ceph 节点

# ssh-copy-id {username}@node1
# ssh-copy-id {username}@node2
# ssh-copy-id {username}@node3

部署服务器和节点修改/etc/hosts 使服务器可以解析hostname

ping 短主机名( hostname -s )的方式确认网络联通性

192.168.xxx.111  node1
192.168.xxx.222  node2
192.168.xxx.333  node3
3、关闭防火墙

关闭部署服务器和节点的防火墙

# systemctl stop firewalld
# systemctl stop iptables
# systemctl disable firewalld
# systemctl disable iptables
4、关闭selinux

在 CentOS 和 RHEL 上, SELinux 默认为 Enforcing 开启状态

# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled
# getenforce
5、优先级/首选项
# yum install yum-plugin-priorities

CEPH存储集群

一、创建集群

1、创建指定目录

ceph-deploy 会把文件输出到当前目录,所以请确保在此目录下以普通用户执行 ceph-deploy

# mkdir -p /tools/my-cluster
# cd /tools/my-cluster
2、创建集群
# ceph-deploy new node1 node2 node3
3、安装CEPH
# ceph-deploy install admin-node node1 node2 node3
4、配置初始monitor
# ceph-deploy mon create-initial
5、确认文件

完成上述操作后,当前目录里应该会出现这些密钥环:

  • {cluster-name}.client.admin.keyring
  • {cluster-name}.bootstrap-osd.keyring
  • {cluster-name}.bootstrap-mds.keyring
  • {cluster-name}.bootstrap-rgw.keyring

二、添加osd

1、列出node 可用磁盘
# ceph-deploy disk list node1
# ceph-deploy disk list node2
# ceph-deploy disk list node3
2、杀死、擦除、销毁-----设备的分区表和内容

执行前确定磁盘名称正确

# ceph-deploy disk zap node1 /dev/sdb
# ceph-deploy disk zap node2 /dev/sdb
# ceph-deploy disk zap node3 /dev/sdb
3、初始化osd磁盘
# ceph-deploy osd create node1 --data /dev/sdb
# ceph-deploy osd create node2 --data /dev/sdb
# ceph-deploy osd create node3 --data /dev/sdb
4、复制配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点
# ceph-deploy admin admin-node node1 node2 node3
5、检查集群健康状态

用root执行

# ceph health
# ceph -s

等 peering 完成后,集群应该达到 active + clean 状态

三、启用cephfs

1、启用mds服务

至少需要一个元数据服务器才能使用 CephFS

# ceph-deploy mds create node1
2、创建pool

CephFS 需要两个 Pools,cephfs_data 和 cephfs_metadata,分别存储文件数据和文件元数据。

# ceph osd pool create cephfs_data 128 128
# ceph osd pool create cephfs_metadata 64 64

一般 metadata pool 可以从相对较少的 PGs 启动, 之后可以根据需要增加 PGs,存储着 CephFS 文件的元数据

3、创建CephFS

metadata,data按照顺序。

# ceph fs new cephfs cephfs_metadata cephfs_data
4、查看CephFS
# ceph fs ls

四、挂载CephFS

挂载cephfs有两种方式,kernel driver和fuse

1、kernel driver挂载
1)关闭认证情况
# sudo mkdir /mnt/wyl
# sudo mount -t ceph 192.168.xxx.111:/ /mnt/wyl

设置开机自动挂载/etc/fstab

# 192.168.xxx.111:/     /mnt/wyl    ceph   noatime,_netdev    0       2
2)启用认证情况
# cat ceph.client.admin.keyring
[client.admin]
	key = AQBSdU5bT27AKxAAvKoWQdGpSuNRCHjC4B8DVA==
# mount -t ceph 192.168.xxx.111:/ /mnt/wyl  -o name=admin,secret=AQBSdU5bT27AKxAAvKoWQdGpSuNRCHjC4B8DVA==
3) 查看认证方式

auth的值为none为禁用,cephx为启用

# cat /etc/ceph/ceph.conf 
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
2、fuse挂载
1)安装挂载工具
# yum -y install ceph-fuse ceph
2)将存储节点的admin秘钥拷贝到本地
# ssh root@node1 "ceph-authtool -p /etc/ceph/ceph.client.admin.keyring" > admin.key
3)赋予权限
# chmod 600 admin.key
4)执行挂载
# mount -t ceph node1:/ /mnt -o name=admin,secretfile=admin.key 
# df -hT
5)设置开机自动挂载/etc/fstab
id=admin,conf=/etc/ceph/ceph.conf  /mnt fuse.ceph defaults 0 0

常见问题

一、admin_socket: exception getting command descriptions: [Errno 2] No such file or directory问题解决

解决方法

1、检查防火墙有没有关闭

# iptables -F
# getenforce
# setenforce 0

2、删除之前版本ceph残留的文件

# rm -rf /etc/ceph/*
# rm -rf /var/lib/ceph/*/*
# rm -rf /var/log/ceph/*
# rm -rf /var/run/ceph/*

二、命令mount -t ceph xxx 或者 mount.ceph xxx挂载cephfs时,提示"mount error 22 = Invalid argument"。

解决方法

1、查看密钥,可知用户名admin的密钥如下:

# sudo cat ./ceph.client.admin.keyring
[client.admin]
        key = AQDYoQFd0Xr+CRAAIwRmwD7yWim2Nzq44wRwqw==

2、直接指定密钥挂载

# sudo mount.ceph node1:6789:/ ~/client_cephfs_mnt/ -o name=admin,secret=AQDYoQFd0Xr+CRAAIwRmwD7yWim2Nzq44wRwqw==

三、无法删除image报rbd: error: image still has watchers

解决方法

1、查看当前image上的watcher

# rbd status foo
watcher=192.168.xxx.111:0/1135656048 client.4172 cookie=1

2、把该watcher加入黑名单:

# ceph osd blacklist add 192.168.xxx.111:0/1135656048 
blacklisting 192.168.xxx.111:0/1135656048 until 2017-10-18 12:04:19.103313 (3600 sec)

3、删除该image:

# rbd rm foo
Removing image: 100% complete...done.

4、查询黑名单列表

# ceph osd blacklist ls
listed 1 entries
192.168.xxx.111:0/1135656048 2017-10-18 12:04:19.103313

5、从黑名单移出一个客户端:

# ceph osd blacklist rm 192.168.xxx.111:0/1135656048 
un-blacklisting 192.168.xxx.111:0/1135656048

6、清空黑名单:

# ceph osd blacklist clear
 removed all blacklist entries

四、Ceph client无法连接至集群问题解决

解决方法

1、确定节点mon已启

覆盖配置执行ceph-deploy mon create-initial

# ceph-deploy --overwrite-conf mon create-initial

五、mon 挂掉后的快速恢复

解决方法

1、移除该mon

# ceph mon remove node1

2、清理该mon的文件

# rm -rf /var/lib/ceph/mon/*

https://blog.csdn.net/kong62/article/details/76998969

六、Error EPERM: pool deletion is disabled; you must first set the mon_allow_pool_delete config option to true before you can destroy a pool

其实执行代码:
ceph osd pool delete ecpool ecpool –yes-i-really-really-mean-it
就可以完成删除,但是此时有时候会报错:

这是由于没有配置mon节点的 mon_allow_pool_delete 字段所致,解决办法就是到mon节点进行相应的设置。

解决方案

1、打开mon节点的配置文件

# vi /etc/ceph/ceph.conf

2、在配置文件中添加如下内容

mon_allow_pool_delete = true

3、重启所有节点ceph-mon,osd服务:

# systemctl restart ceph-mon.target

4、执行删除pool命令

# ceph osd pool delete ecpool ecpool –yes-i-really-really-mean-it

yum install ceph-deploy.noarch -y
mkdir ceph-cluster
cd ceph-cluster/

ceph-deploy new k8s-ceph-0001 k8s-ceph-0002 k8s-ceph-0003
ceph-deploy mon create-initial
ceph-deploy admin k8s-ceph-0001 k8s-ceph-0002 k8s-ceph-0003
ceph-deploy mgr create k8s-ceph-0001 k8s-ceph-0002 k8s-ceph-0003

配置

一、ceph.conf文件配置

[global]
 
fsid = 1235bE62-8ae1-difg-893a-892a675757c6
 
mon_initial_members = ceph-node01,ceph-node02,ceph-node03
 
mon_host = 192.168.170.11,192.168.170.12,192.168.170.13
 
auth_cluster_required = cephx
 
auth_service_required = cephx
 
auth_client_required = cephx
 
public_network = 192.168.170.0/22 #管理网络
 
cluster_network = 192.168.180.0/22 #集群网络
 
mon_pg_warn_max_per_osd = 1000 #每个osd上pg数量警告值,这个可以根据具体规划来设定
 
osd_pool_default_size = 3 #默认副本数为3
 
osd_pool_default_min_size = 2 #最小副本数为2,也就是只能坏一个
 
mon_osd_full_ratio = .85 #存储使用率达到85%将不再提供数据存储
 
mon_osd_nearfull_ratio = .70 #存储使用率达到70%集群将会warn状态
 
osd_deep_scrub_randomize_ratio = 0.01 #随机深度清洗概率,值越大,随机深度清洗概率越高,太高会影响业务
 
[osd]
 
osd_max_write_size = 1024 #默认90M,一次写操作最小值
 
osd_recovery_op_priority = 1 #默认为10, 1-63 osd修复操作的优先级, 。值越小,优先级越低
 
osd_recovery_max_active = 1 #限定每个osd上同时有多少个pg可以同时进行recover
 
osd_recovery_max_single_start = 1 # 和osd_recovery_max_active一起使用,要理解其含义。假设我们配置osd_recovery_max_single_start为1,osd_recovery_max_active为3,那么,这意味着OSD在某个时刻会为一个PG启动一个恢复操作,而且最多可以有三个恢复操作同时处于活动状态。
 
osd_recovery_max_chunk = 1048576 #默认为8388608, 设置恢复数据块的大小,以防网络阻塞
 
osd_recovery_threads = 1 #恢复数据所需的线程数
 
osd_max_backfills = 1 #集群故障后,最大backfill数为1,太大会影响业务
 
osd_scrub_begin_hour = 22 #清洗开始时间为晚上22点
 
osd_scrub_end_hour = 7 #清洗结束时间为早上7点
 
osd_recovery_sleep = 0 #默认为0,recovery的时间间隔,会影响recovery时常,如果recovery导致业务不正常,可以调大该值,增加时间间隔
 
osd_crush_update_on_start = false # 新加的osd会up/in,但并不会更新crushmap,prepare+active期间不会导致数据迁移

概念

一、pg_num和pgp_num概念

pg_num:存储池的目录个数
pgp_num:pg可用的osd排列组合数量

1、仅增大pg_num

因为pgp_num没变,pg的osd组合仍只能从当前pgp_num种组合里面挑选,导致新增的pg和旧pg会有重复的osd组合,该现象称之为分裂;此时pg和osd的映射没有变

2、继续增大pgp_num,使其等于pg_num

旧pg没有变化,但新增pg的osd组合发生变化,即开始重新分布

常用命令

一、查看mon节点上所有启动的ceph服务

# systemctl list-units --type=service|grep ceph

二、打印存储池列表

# ceph osd lspools
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值