学习是一个逐步发现自己无知的过程!

Ceph集群安装

环境准备

机器名 IP
cephnode01 10.211.55.170
cephnode02 10.211.55.171
cephnode03 10.211.55.172

关闭NetworkManager

  1. systemctl disable NetworkManager && systemctl stop NetworkManager

添加主机名与IP对应关系:

  1. cat >> /etc/hosts << EOF
  2. 10.211.55.170 cephnode01
  3. 10.211.55.171 cephnode02
  4. 10.211.55.172 cephnode03
  5. EOF

同步网络时间和修改时区

  1. systemctl restart chronyd.service && systemctl enable chronyd.service
  2. cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

设置文件描述符

  1. echo "ulimit -SHn 102400" >> /etc/rc.local
  2. cat >> /etc/security/limits.conf << EOF
  3. * soft nofile 65535
  4. * hard nofile 65535
  5. EOF

内核参数优化:

  1. cat >> /etc/sysctl.conf << EOF
  2. kernel.pid_max = 4194303
  3. vm.swappiness = 0
  4. EOF
  5. sysctl -p

免密登陆只在cephnode01上配置免密登录到cephnode02cephnode03:

  1. ssh-keygen -t rsa
  2. ssh-copy-id root@cephnode02
  3. ssh-copy-id root@cephnode03

以下操作容易出错,这里创建一个快照,方便恢复。

read_ahead,通过数据预读并且记载到随机访问内存方式提高磁盘读操作

  1. echo "8192" > /sys/block/sdb/queue/read_ahead_kb

I/O Scheduler:
SSD硬盘使用noop
SATA/SAS硬盘使用deadline

  1. echo "deadline" >/sys/block/sdb/queue/scheduler # sata硬盘用这个命令
  2. echo "noop" >/sys/block/sdb/queue/scheduler # ssd硬盘用这个命令

安装Ceph集群

1、编辑内网yum源,将yum源同步到其它节点并提前做好yum makecache

  1. cat >> /etc/yum.repos.d/ceph.repo << EOF
  2. [Ceph]
  3. name=Ceph packages for $basearch
  4. baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/$basearch
  5. gpgcheck=0
  6. priority=1
  7. [Ceph-noarch]
  8. name=Ceph noarch packages
  9. baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch
  10. gpgcheck=0
  11. priority=1
  12. [ceph-source]
  13. name=Ceph source packages
  14. baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS
  15. gpgcheck=0
  16. priority=1
  17. EOF

2、安装ceph-deploy,在node01执行(确认ceph-deploy版本是否为2.0.1,)

  1. yum install -y ceph-deploy

3、创建一个my-cluster目录,所有命令在此目录下进行,在node01执行(文件位置和名字可以随意)

  1. mkdir /my-cluster
  2. cd /my-cluster

4、创建一个Ceph集群,在node01执行

  1. ceph-deploy new cephnode01 cephnode02 cephnode03

5、安装Ceph软件(每个节点执行)

  1. yum -y install epel-release
  2. yum install -y ceph

6、生成monitor检测集群所使用的的秘钥

  1. ceph-deploy mon create-initial

7、安装Ceph CLI,方便执行一些管理命令

  1. ceph-deploy admin cephnode01 cephnode02 cephnode03

8、配置mgr,用于管理集群

  1. ceph-deploy mgr create cephnode01 cephnode02 cephnode03

9、部署rgw
以后要新加rgw时只需要找一台机器安装ceph-radosgw,然后再执行ceph-deploy rgw create <nodename>添加到集群即可。

  1. yum install -y ceph-radosgw
  2. ceph-deploy rgw create cephnode01

10、部署MDS(CephFS)

  1. ceph-deploy mds create cephnode01 cephnode02 cephnode03

11、添加osd

  1. ceph-deploy osd create --data /dev/sdb cephnode01
  2. ceph-deploy osd create --data /dev/sdb cephnode02
  3. ceph-deploy osd create --data /dev/sdb cephnode03

以后新加硬盘,只需要执行以上命令,注意磁盘块文件路径和机器名

常用命令:

  1. ceph -s # 查看集群状态
  2. ceph osd df # 查看osd容量

盘添加完后,数据平衡完状态中会显示HEALTH_OK,默认是三副本,所以最少要三个节点

查看集群状态

  1. [root@cephnode01 my-cluster]# ceph -s
  2. cluster:
  3. id: ce846d05-1d18-4be6-a4a8-d976e63f4b87
  4. health: HEALTH_OK
  5. services:
  6. mon: 3 daemons, quorum cephnode01,cephnode02,cephnode03 (age 22m)
  7. mgr: cephnode01(active, since 5s), standbys: cephnode03, cephnode02
  8. mds: 3 up:standby
  9. osd: 3 osds: 3 up (since 6m), 3 in (since 6m)
  10. rgw: 1 daemon active (cephnode01)
  11. task status:
  12. data:
  13. pools: 4 pools, 128 pgs
  14. objects: 187 objects, 1.2 KiB
  15. usage: 3.0 GiB used, 147 GiB / 150 GiB avail
  16. pgs: 128 active+clean
  17. [root@cephnode01 my-cluster]#

集群时间必须同步,否则会出现以下错误

ceph.conf配置文件详细参数

  1. [global]#全局设置
  2. fsid = xxxxxxxxxxxxxxx #集群标识ID
  3. mon host = 10.0.1.1,10.0.1.2,10.0.1.3 #monitor IP 地址
  4. auth cluster required = cephx #集群认证
  5. auth service required = cephx #服务认证
  6. auth client required = cephx #客户端认证
  7. osd pool default size = 3 #最小副本数 默认是3
  8. osd pool default min size = 1 #PG 处于 degraded 状态不影响其 IO 能力,min_size是一个PG能接受IO的最小副本数
  9. public network = 10.0.1.0/24 #公共网络(monitorIP段)
  10. cluster network = 10.0.2.0/24 #集群网络
  11. max open files = 131072 #默认0#如果设置了该选项,Ceph会设置系统的max open fds
  12. mon initial members = node1, node2, node3 #初始monitor (由创建monitor命令而定)
  13. ##############################################################
  14. [mon]
  15. mon data = /var/lib/ceph/mon/ceph-$id
  16. mon clock drift allowed = 1 #默认值0.05#monitor间的clock drift
  17. mon osd min down reporters = 13 #默认值1#向monitor报告down的最小OSD数
  18. mon osd down out interval = 600 #默认值300 #标记一个OSD状态为down和out之前ceph等待的秒数
  19. ##############################################################
  20. [osd]
  21. osd data = /var/lib/ceph/osd/ceph-$id
  22. osd mkfs type = xfs #格式化系统类型
  23. osd max write size = 512 #默认值90 #OSD一次可写入的最大值(MB)
  24. osd client message size cap = 2147483648 #默认值100 #客户端允许在内存中的最大数据(bytes)
  25. osd deep scrub stride = 131072 #默认值524288 #在Deep Scrub时候允许读取的字节数(bytes)
  26. osd op threads = 16 #默认值2 #并发文件系统操作数
  27. osd disk threads = 4 #默认值1 #OSD密集型操作例如恢复和Scrubbing时的线程
  28. osd map cache size = 1024 #默认值500 #保留OSD Map的缓存(MB)
  29. osd map cache bl size = 128 #默认值50 #OSD进程在内存中的OSD Map缓存(MB)
  30. osd mount options xfs = "rw,noexec,nodev,noatime,nodiratime,nobarrier" #默认值rw,noatime,inode64 #Ceph OSD xfs Mount选项
  31. osd recovery op priority = 2 #默认值10 #恢复操作优先级,取值1-63,值越高占用资源越高
  32. osd recovery max active = 10 #默认值15 #同一时间内活跃的恢复请求数
  33. osd max backfills = 4 #默认值10 #一个OSD允许的最大backfills数
  34. osd min pg log entries = 30000 #默认值3000 #修建PGLog是保留的最大PGLog数
  35. osd max pg log entries = 100000 #默认值10000 #修建PGLog是保留的最大PGLog数
  36. osd mon heartbeat interval = 40 #默认值30 #OSD ping一个monitor的时间间隔(默认30s)
  37. ms dispatch throttle bytes = 1048576000 #默认值 104857600 #等待派遣的最大消息数
  38. objecter inflight ops = 819200 #默认值1024 #客户端流控,允许的最大未发送io请求数,超过阀值会堵塞应用io,为0表示不受限
  39. osd op log threshold = 50 #默认值5 #一次显示多少操作的log
  40. osd crush chooseleaf type = 0 #默认值为1 #CRUSH规则用到chooseleaf时的bucket的类型
  41. ##############################################################
  42. [client]
  43. rbd cache = true #默认值 true #RBD缓存
  44. rbd cache size = 335544320 #默认值33554432 #RBD缓存大小(bytes)
  45. rbd cache max dirty = 134217728 #默认值25165824 #缓存为write-back时允许的最大dirty字节数(bytes),如果为0,使用write-through
  46. rbd cache max dirty age = 30 #默认值1 #在被刷新到存储盘前dirty数据存在缓存的时间(seconds)
  47. rbd cache writethrough until flush = false #默认值true #该选项是为了兼容linux-2.6.32之前的virtio驱动,避免因为不发送flush请求,数据不回写
  48. #设置该参数后,librbd会以writethrough的方式执行io,直到收到第一个flush请求,才切换为writeback方式。
  49. rbd cache max dirty object = 2 #默认值0 #最大的Object对象数,默认为0,表示通过rbd cache size计算得到,librbd默认以4MB为单位对磁盘Image进行逻辑切分
  50. #每个chunk对象抽象为一个Object;librbd中以Object为单位来管理缓存,增大该值可以提升性能
  51. rbd cache target dirty = 235544320 #默认值16777216 #开始执行回写过程的脏数据大小,不能超过 rbd_cache_max_dirty
赞(0)
未经允许不得转载:劉大帥 » Ceph集群安装

你的评论可能会一针见血! 抢沙发

登录

找回密码

注册