设为首页 收藏本站
查看: 1213|回复: 0

[经验分享] Ceph 开源存储安装

[复制链接]
发表于 2019-2-2 07:28:07 | 显示全部楼层 |阅读模式
  测试架构信息:
  Ceph-Admin172.17.0.50admin
  Ceph-Mon172.17.0.40mon
  Ceph-OSD01172.17.0.41osd01
  Ceph-OSD02172.17.0.42osd02
  CEph-OSD03172.17.0.43osd03
  Ceph-OSD04172.17.0.44osd04
  Ceph-OSD05172.17.0.45osd05
  Ceph-MDS172.17.0.49msd
  

  

  一、系统初始配置
  安装系统centos 7.3 最小化安装
  

  yum 源
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo  

  

  配置网络:
echo "DNS1=172.16.1.2" >> /etc/sysconfig/network-scripts/ifcfg-ens192
/etc/init.d/network restart  

  

  配置host文件:
echo "172.17.0.50 admin" >> /etc/hosts
echo "172.17.0.40 mon" >> /etc/hosts
echo "172.17.0.41 osd01" >> /etc/hosts
echo "172.17.0.42 osd02" >> /etc/hosts
echo "172.17.0.43 osd03" >> /etc/hosts
echo "172.17.0.44 osd04" >> /etc/hosts
echo "172.17.0.45 osd05" >> /etc/hosts
echo "172.17.0.49 msd" >> /etc/hosts
echo "172.17.0.60 ceph-client" >> /etc/hosts  更改电脑名,需重启:
hostnamectl set-hostname servername  

  

  配置adminSSH无密码登陆各节点:
ssh-keygen
ssh-copy-id root@mon
ssh-copy-id root@osd01
ssh-copy-id root@osd02
ssh-copy-id root@osd03
ssh-copy-id root@osd04
ssh-copy-id root@osd05
ssh-copy-id root@ceph-client  

  

  添加deploy源:
  vim /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-{ceph-release}/{distro}/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-kraken/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.163.com/ceph/rpm-kraken/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
yum update -y
yum install ceph-deploy -y  

  

  同步时间:
  启用可选软件库:
yum -y install epel-release
yum install yum-plugin-priorities -y
yum install ntp ntpdate ntp-doc -y
yum install sysstat -y
yum install net-tools -y
yum install wget -y  

  配置防火墙:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6789:7100 -j ACCEPT  

  在各 Ceph 节点创建新用户:
ssh root@mon
sudo useradd -d /home/cephuser -m cephuser
sudo passwd cephuser
ssh root@osd01
sudo useradd -d /home/cephuser -m cephuser
sudo passwd cephuser
ssh root@osd02
sudo useradd -d /home/cephuser -m cephuser
sudo passwd cephuser
ssh root@osd03
sudo useradd -d /home/cephuser -m cephuser
sudo passwd cephuser
ssh root@osd04
sudo useradd -d /home/cephuser -m cephuser
sudo passwd cephuser
ssh root@osd05
sudo useradd -d /home/cephuser -m cephuser
sudo passwd cephuser  

  确保各 Ceph 节点上新创建的用户都有 sudo 权限。
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
chmod 0440 /etc/sudoers.d/cephuser  

  允许无密码 SSH 登录
ssh-copy-id cephuser@mon
ssh-copy-id cephuser@osd01
ssh-copy-id cephuser@osd02
ssh-copy-id cephuser@osd03
ssh-copy-id cephuser@osd04
ssh-copy-id cephuser@osd05
ssh-copy-id cephuser@msd  

  修改 ceph-deploy 管理节点上的 ~/.ssh/config 文件
vi ~/.ssh/config
Host mon
   Hostname mon
   User cephuser
Host osd01
   Hostname osd01
   User cephuser
Host osd02
   Hostname osd02
   User cephuser
Host osd03
   Hostname osd03
   User cephuser
Host osd04
   Hostname osd04
   User cephuser
Host osd05
   Hostname osd05
   User cephuser  

  开放所需端口
firewall-cmd --zone=public --add-port=6789/tcp --permanent
firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent  

  不需要控制终端: 注释Defaults requiretty
  

  Defaults requiretty修改为 #Defaults requiretty
  

  

  关闭SELINUX
setenforce 0
vi /etc/selinux/config
SELINUX=disabled  

  

  二、存储集群
  

  创建一个 Ceph 存储集群
mkdir my-cluster
cd my-cluster
ceph-deploy new mon  

  

  把 Ceph 配置文件里的默认副本数从 3 改成 2 ,这样只有两个 OSD 也可以达到 active + clean 状态。把下面这行加入 [global] 段:
vi ./ceph.conf
osd pool default size = 2  

  如果你有多个网卡,可以把 public network 写入 Ceph 配置文件的 [global] 段下
public network = {ip-address}/{netmask}
cluster network = {cluster-network/netmask}  

  安装ceph OSD
ceph-deploy install mon osd01 osd02 osd03  

  配置初始 monitor(s)、并收集所有密钥:
ceph-deploy mon create-initial  

  

  如果在某些地方碰到麻烦,想从头再来,可以用下列命令清除配置:
ceph-deploy purge osd02
ceph-deploy purgedata {ceph-node} [{ceph-node}]
ceph-deploy forgetkeys   !!!!!!!!  

  添加两个 OSD:
ssh osd01
rm -rf /var/local/osd01
sudo mkdir /var/local/osd01
exit
ssh osd02
rm -rf /var/local/osd02
sudo mkdir /var/local/osd02
exit  

  然后与管理节点执行ceph-deploy 准备OSD
ceph-deploy osd prepare osd01:/dev/sdb osd02:/dev/sdb  

  激活osd:
ceph-deploy osd activate osd01:/dev/sdb osd02:/dev/sdb  

  用 ceph-deploy 把配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点,这样你每次执行 Ceph 命令行时就无需指定 monitor 地址和 ceph.client.admin.keyring 了。
ceph-deploy admin admin mon osd01 osd02  

  确保你对 ceph.client.admin.keyring 有正确的操作权限
chmod +r /etc/ceph/ceph.client.admin.keyring
ceph health  查看OSD tree
ceph osd tree  

  

  设置ceph集群自启动
  在各节点需要执行如下命令:
systemctl enable ceph-mon.target
systemctl enable ceph-osd.target
systemctl enable ceph.targetssh mon "systemctl enable ceph-mon.target;systemctl enable ceph-osd.target;systemctl enable ceph.target"  

  CEPH操作命令:
ceph health
ceph -w  打印ceph信息
ceph df集群使用情况
ceph status集群状态
ceph -s
ceph osd tree
ceph osd stat
ceph osd dump
ceph quorum_statusmon的数量状态
ceph mds stat元数据状态
ceph mds dump状态信息
systemctl restart ceph-osd.target 重启osd 服务  

  

  三、扩展集群
  

  添加OSD
ceph-deploy osd prepare osd03:/dev/sdb
ceph-deploy osd activate osd03:/dev/sdb
ceph -w  

  添加元数据服务器
ceph-deploy install mds
ceph-deploy mds create mds
ceph-deploy admin mds  

  添加 MONITORS
vi ceph.conf
public network = 172.17.0.0/23
ceph-deploy mon add osd01 osd02 osd03
ceph-deploy --overwrite-conf mon add osd03
ceph quorum_status --format json-pretty查看mon法定人数  

  

  

  添加 RGW 例程
ceph-deploy rgw create node1  

  RGW 例程默认会监听 7480 端口,可以更改该节点 ceph.conf 内与 RGW 相关的配置,如下:
[client]
rgw frontends = civetweb port=80  

  

  

  

  四、管理、维护
  ceph 日志
/var/log/ceph
iostat -x
df -h
ceph osd stat
ceph health 、 ceph -s 、或 ceph -w
systemctl restart ceph-osd.target 重启osd 服务  

  最大线程数
sysctl -w kernel.pid_max=4194303
配置 kernel.pid_max 写入配置文件 /etc/sysctl.conf
kernel.pid_max = 4194303  

  命令获取归置组列表
  ceph pg dump
  要根据指定归置组号查看哪些 OSD 位于 Acting Set 或 Up Set 里,执行
  ceph pg map {pg-num}
  其结果会告诉你 osdmap 版本( eNNN )、归置组号( {pg-num} )、 Up Set 内的 OSD ( up[] )、和 Acting Set 内的 OSD ( acting[] )。
  osdmap eNNN pg {pg-num} -> up [0,1,2] acting [0,1,2]
  

  修改单个节点的配置文件ceph.conf等如下
ceph-deploy --overwrite-conf config push mon osd01 osd02 osd03 osd04  

  

  添加心跳地址
cluster network = 172.17.0.0/23  

  

  

  五、使用
  

  创建存储池:
ceph osd pool create {pool-name} pg_num
ceph osd pool create poolceph01 128  确定 pg_num 取值是强制性的,因为不能自动计算。下面是几个常用的值:
  

  少于 5 个 OSD 时可把 pg_num 设置为 128
  OSD 数量在 5 到 10 个时,可把 pg_num 设置为 512
  OSD 数量在 10 到 50 个时,可把 pg_num 设置为 4096
  OSD 数量大于 50 时,你得理解权衡方法、以及如何自己计算 pg_num 取值
ceph osd lspools列出存储池
ceph-mds -i mds -d  

  

  存入/检出对象数据
ceph osd map {poolname} {object-name}  

  在管理节点上,通过 ceph-deploy 把 Ceph 安装到 ceph-client 节点。
ceph-deploy install ceph-client  

  在管理节点上,用 ceph-deploy 把 Ceph 配置文件和 ceph.client.admin.keyring 拷贝到 ceph-client 。
ceph-deploy admin ceph-client  

  

  

  创建 CEPH 文件系统
  

  关于存储池的管理请参考 存储池 。例如,要用默认设置为文件系统创建两个存储池,你可以用下列命令:
$ ceph osd pool create cephfs_data
$ ceph osd pool create cephfs_metadata   创建好存储池后,你就可以用 fs new 命令创建文件系统了:
$ ceph fs new   
例如:
$ ceph fs new cephfs cephfs_metadata cephfs_data
$ ceph fs ls  name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
  文件系统创建完毕后, MDS 服务器就能达到 active 状态了,比如在一个单 MDS 系统中:
$ ceph mds stat
e5: 1/1/1 up {0=a=up:active}  

  用内核驱动挂载 CEPH 文件系统
  

  要挂载 Ceph 文件系统,如果你知道监视器 IP 地址可以用 mount 命令、或者用 mount.ceph 工具来自动解析监视器 IP 地址。例如:
sudo mkdir /mnt/mycephfs
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs  要挂载启用了 cephx 认证的 Ceph 文件系统,你必须指定用户名、密钥。
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==  前述用法会把密码遗留在 Bash 历史里,更安全的方法是从文件读密码。例如:
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret  关于 cephx 参见认证。
  

  要卸载 Ceph 文件系统,可以用 umount 命令,例如:
sudo umount /mnt/mycephfs  ---
  要把 Ceph 文件系统挂载为用户空间文件系统,可以用 ceph-fuse 命令,例如:
sudo mkdir /home/usernname/cephfs
sudo ceph-fuse -m 192.168.0.1:6789 /home/username/cephfs  

  

  创建块设备:
ceph-deploy install ceph-client
ceph-deploy admin ceph-client  

  

  配置块设备
  

  在 ceph-client 节点上创建一个块设备 image 。
rbd create foo --size 4096 [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]
rbd create foo --size 4096 -m mon -k /etc/ceph/ceph.client.admin.keyring  

  在 ceph-client 节点上,把 image 映射为块设备。
sudo rbd map foo --name client.admin [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]
rbd map foo --name client.admin -m mon -k /etc/ceph/ceph.client.admin.keyring  

  在 ceph-client 节点上,创建文件系统后就可以使用块设备了。
sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo  此命令可能耗时较长。
  

  在 ceph-client 节点上挂载此文件系统。
sudo mkdir /mnt/ceph-block-device
sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device
cd /mnt/ceph-block-device  

  查看块信息
rbd ls  

  #新建rbd 块:
rbd create test001 --size 100G --image-format 2 --image-feature  layering
rbd ls
rbd map test001
mkfs.ext4 -f /dev/rdb0
mount /dev/rbd0 /mnt/data  

  

  dd测速:
dd if=/dev/zero of=/mnt/mycephfs/zero bs=8k count=200000 conv=fdatasync  

  

  同步配置文件
ceph-deploy --overwrite-conf admin osd01  

  

  

  

  六、高级应用
  

  缓存设置
  冷热分层

  

  学习中
  

  

  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-670631-1-1.html 上篇帖子: docker ceph 存储的了解 下篇帖子: ceph集群osd故障修复实例演示
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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