目录
一、存储的介绍
单机存储设备
单机存储的问题
商业存储
分布式存储
二、分布式存储
什么是分布式存储
分布式存储的类型
三、ceph简介
四、ceph的优点
五、ceph的架构
六、ceph的核心组件
七、OSD存储后端
八、Ceph 数据的存储过程
九、Ceph 版本发行生命周期
十、Ceph 集群部署
十一、基于 ceph-deploy 部署 Ceph 集群
一、存储的介绍
单机存储设备
单机存储的问题
商业存储
分布式存储
二、分布式存储
什么是分布式存储
分布式存储的类型
三、ceph简介
四、ceph的优点
五、ceph的架构
六、ceph的核心组件
七、OSD存储后端
八、Ceph 数据的存储过程
九、Ceph 版本发行生命周期
十、Ceph 集群部署
十一、基于 ceph-deploy 部署 Ceph 集群
//Ceph 环境规划 主机名 Public网络 Cluster网络 角色 admin 192.168.80.10 admin(管理节点负责集群整体部署)、client node01 192.168.80.11 192.168.100.11 mon、mgr、osd(/dev/sdb、/dev/sdc、/dev/sdd) node02 192.168.80.12 192.168.100.12 mon、mgr、osd(/dev/sdb、/dev/sdc、/dev/sdd) node03 192.168.80.13 192.168.100.13 mon、osd(/dev/sdb、/dev/sdc、/dev/sdd) client 192.168.80.14 client //环境准备 可选步骤:创建 Ceph 的管理用户 useradd cephadm passwd cephadm visudo cephadm ALL=(root) NOPASSWD:ALL 1、关闭 selinux 与防火墙 systemctl disable --now firewalld setenforce 0 sed -i 's/enforcing/disabled/' /etc/selinux/config 2、根据规划设置主机名 hostnamectl set-hostname admin hostnamectl set-hostname node01 hostnamectl set-hostname node02 hostnamectl set-hostname node03 hostnamectl set-hostname client 3、配置 hosts 解析 cat >> /etc/hosts << EOF 192.168.80.10 admin 192.168.80.11 node01 192.168.80.12 node02 192.168.80.13 node03 192.168.80.14 client EOF 4、安装常用软件和依赖包 yum -y install epel-release yum -y install yum-plugin-priorities yum-utils ntpdate python-setuptools python-pip gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel zip unzip ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssh openssl-devel nss_ldap openldap openldap-devel openldap-clients openldap-servers libxslt-devel libevent-devel ntp libtool-ltdl bison libtool vim-enhanced python wget lsof iptraf strace lrzsz kernel-devel kernel-headers pam-devel tcl tk cmake ncurses-devel bison setuptool popt-devel net-snmp screen perl-devel pcre-devel net-snmp screen tcpdump rsync sysstat man iptables sudo libconfig git bind-utils tmux elinks numactl iftop bwm-ng net-tools expect snappy leveldb gdisk python-argparse gperftools-libs conntrack ipset jq libseccomp socat chrony sshpass 5、在 admin 管理节点配置 ssh 免密登录所有节点 ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa sshpass -p '123' ssh-copy-id -o StrictHostKeyChecking=no root@client sshpass -p '123123' ssh-copy-id -o StrictHostKeyChecking=no root@node01 sshpass -p '123' ssh-copy-id -o StrictHostKeyChecking=no root@node02 sshpass -p '123' ssh-copy-id -o StrictHostKeyChecking=no root@node03 6、配置时间同步 systemctl enable --now chronyd timedatectl set-ntp true #开启 NTP timedatectl set-timezone Asia/Shanghai #设置时区 chronyc -a makestep #强制同步下系统时钟 timedatectl status #查看时间同步状态 chronyc sources -v #查看 ntp 源服务器信息 timedatectl set-local-rtc 0 #将当前的UTC时间写入硬件时钟 #重启依赖于系统时间的服务 systemctl restart rsyslog systemctl restart crond #关闭无关服务 systemctl disable --now postfix 7、配置 Ceph yum源 wget https://download.ceph.com/rpm-nautilus/el7/noarch/ceph-release-1-1.el7.noarch.rpm --no-check-certificate rpm -ivh ceph-release-1-1.el7.noarch.rpm --force 8、执行完上面所有的操作之后重启所有主机(可选) sync reboot //部署 Ceph 集群 1、为所有节点都创建一个 Ceph 工作目录,后续的工作都在该目录下进行 mkdir -p /etc/ceph 2、安装 ceph-deploy 部署工具 cd /etc/ceph yum install -y ceph-deploy ceph-deploy --version 3、在管理节点为其它节点安装 Ceph 软件包 #ceph-deploy 2.0.1 默认部署的是 mimic 版的 Ceph,若想安装其他版本的 Ceph,可以用 --release 手动指定版本 cd /etc/ceph ceph-deploy install --release nautilus node0{1..3} admin #ceph-deploy install 本质就是在执行下面的命令: yum clean all yum -y install epel-release yum -y install yum-plugin-priorities yum -y install ceph-release ceph ceph-radosgw #也可采用手动安装 Ceph 包方式,在其它节点上执行下面的命令将 Ceph 的安装包都部署上: sed -i 's#download.ceph.com#mirrors.tuna.tsinghua.edu.cn/ceph#' /etc/yum.repos.d/ceph.repo yum install -y ceph-mon ceph-radosgw ceph-mds ceph-mgr ceph-osd ceph-common ceph 4、生成初始配置 #在管理节点运行下述命令,告诉 ceph-deploy 哪些是 mon 监控节点 cd /etc/ceph ceph-deploy new --public-network 192.168.20.0/24 --cluster-network 192.168.100.0/24 node01 node02 node03 #命令执行成功后会在 /etc/ceph 下生成配置文件 ls /etc/ceph ceph.conf #ceph的配置文件 ceph-deploy-ceph.log #monitor的日志 ceph.mon.keyring #monitor的密钥环文件 5、在管理节点初始化 mon 节点 cd /etc/ceph ceph-deploy mon create node01 node02 node03 #创建 mon 节点,由于 monitor 使用 Paxos 算法,其高可用集群节点数量要求为大于等于 3 的奇数台 ceph-deploy --overwrite-conf mon create-initial #配置初始化 mon 节点,并向所有节点同步配置 # --overwrite-conf 参数用于表示强制覆盖配置文件 ceph-deploy gatherkeys node01 #可选操作,向 node01 节点收集所有密钥 #命令执行成功后会在 /etc/ceph 下生成配置文件 ls /etc/ceph ceph.bootstrap-mds.keyring #引导启动 mds 的密钥文件 ceph.bootstrap-mgr.keyring #引导启动 mgr 的密钥文件 ceph.bootstrap-osd.keyring #引导启动 osd 的密钥文件 ceph.bootstrap-rgw.keyring #引导启动 rgw 的密钥文件 ceph.client.admin.keyring #ceph客户端和管理端通信的认证密钥,拥有ceph集群的所有权限 ceph.conf ceph-deploy-ceph.log ceph.mon.keyring #在 mon 节点上查看自动开启的 mon 进程 ps aux | grep ceph root 1823 0.0 0.2 189264 9216 ? Ss 19:46 0:00 /usr/bin/python2.7 /usr/bin/ceph-crash ceph 3228 0.0 0.8 501244 33420 ? Ssl 21:08 0:00 /usr/bin/ceph-mon -f --cluster ceph --id node03 --setuser ceph --setgroupceph root 3578 0.0 0.0 112824 988 pts/1 R+ 21:24 0:00 grep --color=auto ceph #在管理节点查看 Ceph 集群状态 cd /etc/ceph ceph -s cluster: id: 7e9848bb-909c-43fa-b36c-5805ffbbeb39 health: HEALTH_WARN mons are allowing insecure global_id reclaim services: mon: 3 daemons, quorum node01,node02,node03 mgr: no daemons active osd: 0 osds: 0 up, 0 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs: #查看 mon 集群选举的情况 ceph quorum_status --format json-pretty | grep leader "quorum_leader_name": "node01", #扩容 mon 节点 ceph-deploy mon add <节点名称> 6、部署能够管理 Ceph 集群的节点(可选) #可实现在各个节点执行 ceph 命令管理集群 cd /etc/ceph ceph-deploy --overwrite-conf config push node01 node02 node03 #向所有 mon 节点同步配置,确保所有 mon 节点上的 ceph.conf 内容必须一致 ceph-deploy admin node01 node02 node03 #本质就是把 ceph.client.admin.keyring 集群认证文件拷贝到各个节点 #在 mon 节点上查看 ls /etc/ceph ceph.client.admin.keyring ceph.conf rbdmap tmpr8tzyc cd /etc/ceph ceph -s 7、部署 osd 存储节点 #主机添加完硬盘后不要分区,直接使用 lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 60G 0 disk ├─sda1 8:1 0 500M 0 part /boot ├─sda2 8:2 0 4G 0 part [SWAP] └─sda3 8:3 0 55.5G 0 part / sdb 8:16 0 20G 0 disk sdc 8:32 0 20G 0 disk sdd 8:48 0 20G 0 disk #如果是利旧的硬盘,则需要先擦净(删除分区表)磁盘(可选,无数据的新硬盘可不做) cd /etc/ceph ceph-deploy disk zap node01 /dev/sdb ceph-deploy disk zap node02 /dev/sdb ceph-deploy disk zap node03 /dev/sdb #添加 osd 节点 ceph-deploy --overwrite-conf osd create node01 --data /dev/sdb ceph-deploy --overwrite-conf osd create node02 --data /dev/sdb ceph-deploy --overwrite-conf osd create node03 --data /dev/sdb ceph-deploy --overwrite-conf osd create node0{1..3} --data /dev/sd{b,c,d} #查看 ceph 集群状态 ceph -s cluster: id: 7e9848bb-909c-43fa-b36c-5805ffbbeb39 health: HEALTH_WARN no avtive mgr services: mon: 3 daemons, quorum node01,node02,node03 (age 119m) mgr: no daemons active osd: 3 osds: 3 up (since 35s), 3 in (since 35s) data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 3.0 GiB used, 57 GiB / 60 GiB avail pgs: ceph osd stat ceph osd tree rados df ssh root@node01 systemctl status ceph-osd@0 ssh root@node02 systemctl status ceph-osd@1 ssh root@node03 systemctl status ceph-osd@2 ceph osd status #查看 osd 状态,需部署 mgr 后才能执行 +----+--------+-------+-------+--------+---------+--------+---------+-----------+ | id | host | used | avail | wr ops | wr data | rd ops | rd data | state | +----+--------+-------+-------+--------+---------+--------+---------+-----------+ | 0 | node01 | 1025M | 18.9G | 0 | 0 | 0 | 0 | exists,up | | 1 | node02 | 1025M | 18.9G | 0 | 0 | 0 | 0 | exists,up | | 2 | node03 | 1025M | 18.9G | 0 | 0 | 0 | 0 | exists,up | +----+--------+-------+-------+--------+---------+--------+---------+-----------+ ceph osd df #查看 osd 容量,需部署 mgr 后才能执行 ID CLASS WEIGHT REWEIGHT SIZE RAW USE DATA OMAP META AVAIL %USE VAR PGS STATUS 0 hdd 0.01949 1.00000 20 GiB 1.0 GiB 1.8 MiB 0 B 1 GiB 19 GiB 5.01 1.00 0 up 1 hdd 0.01949 1.00000 20 GiB 1.0 GiB 1.8 MiB 0 B 1 GiB 19 GiB 5.01 1.00 0 up 2 hdd 0.01949 1.00000 20 GiB 1.0 GiB 1.8 MiB 0 B 1 GiB 19 GiB 5.01 1.00 0 up TOTAL 60 GiB 3.0 GiB 5.2 MiB 0 B 3 GiB 57 GiB 5.01 MIN/MAX VAR: 1.00/1.00 STDDEV: 0 #扩容 osd 节点 cd /etc/ceph ceph-deploy --overwrite-conf osd create node01 --data /dev/sdc ceph-deploy --overwrite-conf osd create node02 --data /dev/sdc ceph-deploy --overwrite-conf osd create node03 --data /dev/sdc ceph-deploy --overwrite-conf osd create node01 --data /dev/sdd ceph-deploy --overwrite-conf osd create node02 --data /dev/sdd ceph-deploy --overwrite-conf osd create node03 --data /dev/sdd 添加 OSD 中会涉及到 PG 的迁移,由于此时集群并没有数据,因此 health 的状态很快就变成 OK,如果在生产环境中添加节点则会涉及到大量的数据的迁移。 8、部署 mgr 节点 #ceph-mgr守护进程以Active/Standby模式运行,可确保在Active节点或其ceph-mgr守护进程故障时,其中的一个Standby实例可以在不中断服务的情况下接管其任务。根据官方的架构原则,mgr至少要有两个节点来进行工作。 cd /etc/ceph ceph-deploy mgr create node01 node02 ceph -s cluster: id: 7e9848bb-909c-43fa-b36c-5805ffbbeb39 health: HEALTH_WARN mons are allowing insecure global_id reclaim services: mon: 3 daemons, quorum node01,node02,node03 mgr: node01(active, since 10s), standbys: node02 osd: 0 osds: 0 up, 0 in #解决 HEALTH_WARN 问题:mons are allowing insecure global_id reclaim问题: 禁用不安全模式:ceph config set mon auth_allow_insecure_global_id_reclaim false #扩容 mgr 节点 ceph-deploy mgr create <节点名称> 9、开启监控模块(安装在node01--mgr节点中) #在 ceph-mgr Active节点执行命令开启 ceph -s | grep mgr yum install -y ceph-mgr-dashboard cd /etc/ceph ceph mgr module ls | grep dashboard #开启 dashboard 模块 ceph mgr module enable dashboard --force #禁用 dashboard 的 ssl 功能 ceph config set mgr mgr/dashboard/ssl false #配置 dashboard 监听的地址和端口 ceph config set mgr mgr/dashboard/server_addr 192.168.20.7 ceph config set mgr mgr/dashboard/server_port 8000 #重启 dashboard ceph mgr module disable dashboard ceph mgr module enable dashboard --force #确认访问 dashboard 的 url ceph mgr services #设置 dashboard 账户以及密码 echo "12345678" > dashboard_passwd.txt ceph dashboard set-login-credentials admin -i dashboard_passwd.txt 或 ceph dashboard ac-user-create admin administrator -i dashboard_passwd.txt 浏览器访问:http://192.168.80.11:8000 ,账号密码为 admin/12345678
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/6979.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~