重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2855|回复: 1
打印 上一主题 下一主题

[安装] 分布式存储 ceph 10.2.9 安装实践

[复制链接]
跳转到指定楼层
楼主
发表于 2017-9-20 17:12:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想找一个共享存储的代替用于安装oracle rac,看到redhat 官方在大力推荐ceph,宣传如何如何厉害,要不试一下:

1.环境说明
  ceph-mon1    用于监控及管理服务器             192.168.0.170
  ceph-osd1    osd1                             192.168.0.171  20g /dev/sdb
  ceph-osd2    osd2                             192.168.0.172  30g /dev/sdb
  ceph-osd3    osd3                             192.168.0.173  40g /dev/sdb
  ceph-oracle  客户端,用于测试存储的使用        192.168.0.175

2.本次安装使用的操作系统
  看ceph宣传的,今后不支持rhel7以前的版本,因此,找了一个才发布的操作系统来安装.

  操作系统 centos 7.4
  4个机器都安装好 centos 7.4,
  由于是虚拟机,因此,只需要安装一个,其他全部拷贝.
  并修改每台机器的名字,并作ip解析。

3.启用yum
  在各节点上安装启用软件仓库,启用可选软件库

# yum install -y yum-utils && yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ &&  yum install --nogpgcheck -y epel-release &&  rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 &&  rm /etc/yum.repos.d/dl.fedoraproject.org*
#  yum install yum-plugin-priorities

4.对系统作一些配置
  关闭 SELINUX
  # sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  # setenforce 0
  
  打开Ceph需要的端口
  # firewall-cmd --zone=public --add-port=6789/tcp --permanent
  # firewall-cmd --zone=public --add-port=6800-7100/tcp --permanent
  # firewall-cmd --reload
  
  也可直接关闭
  # systemctl stop firewalld.service
  # systemctl disable firewalld.service
  安装 EPEL 软件源:
  # rpm -Uvh https://dl.Fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm

  # yum -y update
  # yum -y upgrade
  
  安装 ntp 同步时间
  # yum -y install ntp ntpdate ntp-doc
  # ntpdate 0.us.pool.ntp.org
  
  # hwclock --systohc
  # systemctl enable ntpd.service
  # systemctl start ntpd.service

5.配置对等性
  在 ceph-adm(这里是ceph-mon1) 上运行 ssh-keygen 生成 ssh key 文件,注意 passphrase 是空,把 ssh key 拷贝到每一个 Ceph 节点上:
  # mkdir ~/.ssh
  # ssh-keygen -t rsa
  Generatingpublic/private rsa key pair.
  Enter file in which to save the key (/root/.ssh/id_rsa):
  Enter passphrase (empty forno passphrase):
  Enter same passphrase again:
  
  # ssh-copy-id root@ceph-osd1
  # ssh-copy-id root@ceph-osd2
  # ssh-copy-id root@ceph-osd3
  # ssh-copy-id root@ceph-oracle

  确实不在需要密码
  
  # ssh root@ceph-osd1
  # ssh root@ceph-osd2
  # ssh root@ceph-osd3
  # ssh root@ceph-oracle
  
6.配置每个节点的ceph yum源
  在个节点上创建ceph 源(本人这里选择的jewel,这里推荐使用网易或阿里的ceph源)
  在 /etc/yum.repos.d/目录下创建 ceph.cepo然后写入以下内容

  [Ceph]
   name=Ceph packages for $basearch
   baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/$basearch
   enabled=1
   gpgcheck=0
   type=rpm-md
   gpgkey=https://mirrors.163.com/ceph/keys/release.asc
   priority=1
  [Ceph-noarch]
  name=Ceph noarch packages
  baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/noarch
  enabled=1
  gpgcheck=0
  type=rpm-md
  gpgkey=https://mirrors.163.com/ceph/keys/release.asc
  priority=1
  [ceph-source]
  name=Ceph source packages
  baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/SRPMS
  enabled=1
  gpgcheck=0
  type=rpm-md
  gpgkey=https://mirrors.163.com/ceph/keys/release.asc
  priority=1

7.在管理节点上进行安装准备(这里ceph-mon1代理了管理和监控职能,因此在ceph-mon1上执行)
  //新文件夹ceph-cluster
  # cd ~
  # mkdir ceph-cluster
  # cd ceph-cluster
  //安装ceph-deploy
  # yum update &&  yum install ceph-deploy

  //若安装ceph后遇到麻烦可以使用以下命令进行清除包和配置
  #ceph-deploy purge node1 node2 node3
  #ceph-deploy purgedata node1 node2 node3
  #ceph-deploy forgetkeys

8.初始化集群
  初始化集群,告诉 ceph-deploy 哪些节点是监控节点,(我们这里只有一个监控节点,官方推荐有3个)
  命令成功执行后会在 ceps-cluster 目录下生成 ceph.conf, ceph.log, ceph.mon.keyring 等相关文件:
  # ceph-deploy new ceph-mon1

9.在每个 Ceph 节点上都安装 Ceph:
  # ceph-deploy install ceph-mon1 ceph-osd1 ceph-osd2 ceph-osd3 ceph-oracle

10.初始化监控节点:
  # ceph-deploy mon create-initial

11.初始化 Ceph 硬盘,然后创建 osd 存储节点
  查看一下 Ceph 存储节点的硬盘情况:
  # ceph-deploy disk list ceph-osd1
  # ceph-deploy disk list ceph-osd2
  # ceph-deploy disk list ceph-osd3

  擦出盘所有数据,注意,这里是磁盘,不是分区
  # ceph-deploy disk zap ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
   
  格式化盘 ,注意,这里是磁盘,不是分区
  # ceph-deploy osd prepare  ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb        
  
  激活盘 ,注意,这里是分区,不是磁盘
  #ceph-deploy osd activate  ceph-osd1:/dev/sdb1 ceph-osd2:/dev/sdb1 ceph-osd3:/dev/sdb1   

12. 最后,我们把生成的配置文件从 ceph-adm 同步部署到其他几个节点,使得每个节点的 ceph 配置一致:
  # ceph-deploy --overwrite-conf admin ceph-osd1 ceph-osd2 ceph-osd3

13.验证ceph集群
  ceph health

  [root@ceph-mon1 ~]# ceph health
HEALTH_OK


  获取详细信息
  ceph -s

[root@ceph-mon1 ceph-cluster]# ceph -s
    cluster efd3abff-a83f-4ba8-805f-f6c6a6c0231c
     health HEALTH_OK
     monmap e1: 1 mons at {ceph-mon1=192.168.0.170:6789/0}
            election epoch 8, quorum 0 ceph-mon1
     osdmap e112: 3 osds: 3 up, 3 in
            flags sortbitwise,require_jewel_osds
      pgmap v13601: 248 pgs, 2 pools, 2695 MB data, 705 objects
            5458 MB used, 71298 MB / 76756 MB avail
                 248 active+clean
  client io 35220 B/s rd, 24163 B/s wr, 13 op/s rd, 15 op/s wr

至此,ceph集群搭建成功。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

沙发
 楼主| 发表于 2017-9-20 17:16:22 | 只看该作者
一些常用命令:

rados lspools 查看池子

  ceph -s 或 ceph status 查看集群状态

  ceph -w 观察集群健康状态

  ceph quorum_status --format json-pretty 检查ceph monitor仲裁状态

  ceph df 检查集群使用情况

  ceph mon stat 检查monitor状态

  ceph osd stat 检查osd状态

  ceph pg stat 检查pg配置组状态

  ceph pg dump 列出PG

  ceph osd lspools 列出存储池

  ceph osd tree 检查osd的crush map

  ceph auth list 列出集群的认证密钥

  ceph 获取每个osd上pg的数量

  ceph pg dump | awk '  

/^pg_stat/ { col=1; while($col!="up") {col++}; col++ }  

/^[0-9a-f]+\.[0-9a-f]+/ { match($0,/^[0-9a-f]+/); pool=substr($0, RSTART, RLENGTH); poollist[pool]=0;  

up=$col; i=0; RSTART=0; RLENGTH=0; delete osds; while(match(up,/[0-9]+/)>0) { osds[++i]=substr(up,RSTART,RLENGTH); up = substr(up, RSTART+RLENGTH) }  

for(i in osds) {array[osds,pool]++; osdlist[osds];}  

}  

END {  

printf("\n");  

printf("pool :\t"); for (i in poollist) printf("%s\t",i); printf("| SUM \n");  

for (i in poollist) printf("--------"); printf("----------------\n");  

for (i in osdlist) { printf("osd.%i\t", i); sum=0;  

for (j in poollist) { printf("%i\t", array[i,j]); sum+=array[i,j]; poollist[j]+=array[i,j] }; printf("| %i\n",sum) }  

for (i in poollist) printf("--------"); printf("----------------\n");  

printf("SUM :\t"); for (i in poollist) printf("%s\t",poollist); printf("|\n");  

}'

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-4-20 16:34 , Processed in 0.109315 second(s), 19 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表