目录
部署Ceph集群的方法
Ceph生产环境推荐
部署Ceph实验(基于ceph-deploy)
一、准备工作
二、环境准备
1.关闭selinux与防火墙
2.修改主机名并且配置hosts解析映射
3.admin管理节点配置ssh免密登录node节点
4.安装常用软件和依赖包
5.配置时间同步
6.配置Ceph yum源
7.执行完上面所有的操作之后重启所有主机(可选)
三、部署Ceph集群
1.创建一个Ceph工作目录
2.安装ceph-deploy部署工具
3.手动安装Ceph软件包
4.配置集群网络
5.生成初始配置
6.初始化mon节点
7.使其它节点可以管理Ceph群集
8.部署osd存储节点
9.部署mgr节点
10.解决HEALTH_WARN问题
四、部署监控
1.安装ceph-mgr-dashboard
2.配置监控模块
3.设置账户以及密码
4.验证
部署Ceph集群的方法
ceph-deploy
- 一个集群自动化部署工具,使用较久,成熟稳定,被很多自动化工具所集成,可用于生产部署
cephadm
- 从 Octopus 和较新的版本版本后使用 cephadm 来部署 ceph 集群,使用容器和 systemd 安装和管理 Ceph 集群。目前不建议用于生产环境
二进制
- 手动部署,一步步部署 Ceph 集群,支持较多定制化和了解部署细节,安装难度较大
Ceph生产环境推荐
- 存储集群全采用万兆网络
- 集群网络(cluster-network,用于集群内部通讯)与公共网络(public-network,用于外部访问Ceph集群)分离
- mon、mds 与 osd 分离部署在不同主机上(测试环境中可以让一台主机节点运行多个组件)
- OSD 使用 SATA 亦可
- 根据容量规划集群
- 至强E5 2620 V3或以上 CPU,64GB或更高内存
- 集群主机分散部署,避免机柜的电源或者网络故障
部署Ceph实验(基于ceph-deploy)
一、准备工作
主机名 | Public网络 | Cluster网络 | 角色 |
admin | 20.0.0.10 | admin(管理节点负责集群整体部署)、client | |
node01 | 20.0.0.20 | 20.0.10.20 | mon、mgr、osd(/dev/sdb、/dev/sdc、/dev/sdd) |
node02 | 20.0.0.30 | 20.0.10.30 | mon、mgr、osd(/dev/sdb、/dev/sdc、/dev/sdd) |
node03 | 20.0.0.40 | 20.0.10.40 | mon、osd(/dev/sdb、/dev/sdc、/dev/sdd) |
client | 20.0.0.50 | client |
5台虚拟机
- admin:20.0.0.10
- node01:20.0.0.20
- node02:20.0.0.30
- node03:20.0.0.40
- client:20.0.0.50
二、环境准备
1.关闭selinux与防火墙
5台虚拟机相同操作
systemctl disable --now firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
mount /dev/sr0/ /mnt
2.修改主机名并且配置hosts解析映射
20.0.0.10(admin)
hostnamectl set-hostname admin
bash
20.0.0.20(node01)
hostnamectl set-hostname node01
bash
20.0.0.30(node02)
hostnamectl set-hostname node02
bash
20.0.0.40(node03)
hostnamectl set-hostname node03
bash
20.0.0.50(client)
hostnamectl set-hostname client
bash
配置host解析(5台虚拟机相同操作)
cat >> /etc/hosts << EOF
20.0.0.10 admin
20.0.0.20 node01
20.0.0.30 node02
20.0.0.40 node03
20.0.0.50 client
EOF
3.admin管理节点配置ssh免密登录node节点
20.0.0.10(admin)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
sshpass -p 'jlh123' ssh-copy-id -o StrictHostKeyChecking=no root@admin
sshpass -p 'jlh123' ssh-copy-id -o StrictHostKeyChecking=no root@node01
sshpass -p 'jlh123' ssh-copy-id -o StrictHostKeyChecking=no root@node02
sshpass -p 'jlh123' ssh-copy-id -o StrictHostKeyChecking=no root@node03
4.安装常用软件和依赖包
5台虚拟机相同操作
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
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.配置时间同步
5台虚拟机相同操作
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
6.配置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
7.执行完上面所有的操作之后重启所有主机(可选)
sync #确保数据写入磁盘
reboot
三、部署Ceph集群
1.创建一个Ceph工作目录
4台节点虚拟机都创建一个 Ceph 工作目录,后续的工作都在该目录下进行
mkdir -p /etc/ceph
2.安装ceph-deploy部署工具
20.0.0.10(admin)
cd /etc/ceph
yum install -y ceph-deploy
ceph-deploy --version
3.手动安装Ceph软件包
4台节点虚拟机
#若阿里云在线源安装较慢,可使用命令切换为清华大学在线源
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.配置集群网络
3台node虚拟机添加一个新网卡
3台node虚拟机配置新网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36
systemctl restart network
ifconfig #查看设置是否成功
5.生成初始配置
20.0.0.10(admin)
cd /etc/ceph
ceph-deploy new --public-network 20.0.0.0/24 --cluster-network 20.0.10.0/24 node01 node02 node03
6.初始化mon节点
20.0.0.10(admin)
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
——————————————————————————————————————————————————————————————————————————————————————-
#在 node 三个节点上查看自动开启的 mon 进程
ps aux | grep ceph
#在管理节点查看 Ceph 集群状态
cd /etc/ceph
ceph -s
#查看 mon 集群选举的情况
ceph quorum_status --format json-pretty | grep leader
#扩容 mon 节点
ceph-deploy mon add <节点名称>
7.使其它节点可以管理Ceph群集
20.0.0.10(admin)
cd /etc/ceph
ceph-deploy admin node01 node02 node03
#本质就是把 ceph.client.admin.keyring 集群管理认证文件拷贝到各个节点
ceph -s #所有节点都可查看集群状态
8.部署osd存储节点
3台node虚拟机各添加三个硬盘
查看3台node虚拟机新硬盘
#主机添加完硬盘后不要分区,直接使用
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan #在线刷新新硬盘
lsblk #查看新硬盘
20.0.0.10(admin)
- 添加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 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
ceph -s #查看ceph集群状态
9.部署mgr节点
20.0.0.10(admin)
cd /etc/ceph
ceph-deploy mgr create node01 node02
————————————————————————————————————————————————————————————————————————————————————
#ceph-mgr守护进程以Active/Standby模式运行,可确保在Active节点或其ceph-mgr守护进程故障时,其中的一个Standby实例可以在不中断服务的情况下接管其任务。根据官方的架构原则,mgr至少要有两个节点来进行工作。
————————————————————————————————————————————————————————————————————————————————————
ceph -s #查看集群
ceph osd status #查看 osd 状态,需部署 mgr 后才能执行
ceph osd df #查看 osd 容量,需部署 mgr 后才能执行
10.解决HEALTH_WARN问题
ceph config set mon auth_allow_insecure_global_id_reclaim false #禁用不安全模式
ceph -s #查看ceph集群信息
四、部署监控
1.安装ceph-mgr-dashboard
在Active节点上设置:20.0.0.20(node01)
yum install -y ceph-mgr-dashboard
ceph mgr module ls | grep dashboard
2.配置监控模块
在Active节点上设置:20.0.0.20(node01)
开启 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 0.0.0.0
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
3.设置账户以及密码
在Active节点上设置:20.0.0.20(node01)
echo "12345678" > dashboard_passwd.txt
ceph dashboard set-login-credentials admin -i dashboard_passwd.txt
4.验证
浏览器访问:http://20.0.0.20:8000 ,账号密码为 admin/12345678