任务目标#
- 完成 ceph 集群部署
任务平台#
- 物理设备 --
- 操作系统:openEuler 22.03 LTS SP2
部署指南#
任务一:配置准备#
- 重命名 hostname
# 将10.10.3.117的主机名改为future-ceph-node0
hostnamectl set-hostname future-ceph-node0 && bash
# 将10.10.3.118的主机名改为future-ceph-node1
hostnamectl set-hostname future-ceph-node1 && bash
# 将10.10.3.119的主机名改为future-ceph-node2
hostnamectl set-hostname future-ceph-node2 && bash
# 将10.10.3.120的主机名改为future-ceph-node3
hostnamectl set-hostname future-ceph-node3 && bash
- 安装前的配置修改
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
firewall-cmd --state
# selinux永久关闭
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
cat /etc/selinux/config
# 添加hosts
cat >> /etc/hosts << EOF
10.10.3.117 future-ceph-node0
10.10.3.118 future-ceph-node1
10.10.3.119 future-ceph-node2
10.10.3.120 future-ceph-node3
EOF
#查看
cat /etc/hosts
#同步时间
yum install ntp -y
systemctl start ntpd
systemctl enable ntpd
yum install chrony -y
systemctl start chronyd
systemctl enable chronyd
#修改配置,添加内容
echo "
server 10.10.3.70 iburst
allow 10.10.3.0/24
" >> /etc/chrony.conf
timedatectl set-ntp true
systemctl restart chronyd
timedatectl status
date
添加节点SSH互相通信
ssh-keygen -t rsa
ssh-copy-id 10.10.3.118
ssh-copy-id 10.10.3.119
ssh-copy-id 10.10.3.120
任务二:部署 Ceph 作为分布式存储#
配置下载源
echo "[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/x86_64/
gpgcheck=0
priority=1
[ceph-noarch]
name=cephnoarch
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/
gpgcheck=0
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS/
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
" >/etc/yum.repos.d/ceph.repo
下载 python2
- 安装zlib库,不然安装 pip 时会报错(还要重新编译 python)
yum -y install zlib*
- 安装 GCC 包,如果没有安装 GCC,请使用以下命令进行安装
yum -y install gcc openssl-devel bzip2-devel
- 下载 Python-2.7.18
cd /usr/src
yum -y install wget
wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz
tar xzf Python-2.7.18.tgz
- 在编译之前还需要在安装源文件中修改 Modules/Setup.dist 文件,将注释去掉
#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
- 编译 Python-2.7.18(
make altinstall
用于防止替换默认的 python 二进制文件 /usr/bin/python)
cd /usr/src/Python-2.7.18
./configure --enable-optimizations
yum install -y make
make altinstall
不要覆盖或链接原始的 Python 二进制文件,这可能会损坏系统
- 设置环境变量
vi /etc/profile
export PYTHON_HOME=/usr/local/
PATH=$PATH:$PYTHON_HOME/bin
source /etc/profile
- 下载安装 pip 的脚本
curl "https://bootstrap.pypa.io/pip/2.7/get-pip.py" -o "get-pip.py"
- 运行下载安装脚本
python2.7 get-pip.py
下载 ceph
#future-ceph-node0下载
pip2 install ceph-deploy
yum install -y ceph ceph-radosgw
#其他节点下载
yum install -y ceph ceph-radosgw
#检查安装包是否完整
rpm -qa |egrep -i "ceph|rados|rbd"
部署 ceph 集群#
管理节点#
部署 Monitor
- 创建配置文件目录,并创建配置文件
mkdir /etc/ceph/
touch /etc/ceph/ceph.conf
- 为集群生成一个 FSDI:
uuidgen
38ac0084-40b7-4c93-b561-a16d6a6478c5
- 集群创建一个钥匙串,为 Monitor 服务创建一个密钥:
ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
- 创建一个管理员钥匙串,生成一个 client.admin 用户,并将此用户添加到钥匙串中:
ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
- 创建 bootstrap-osd 钥匙串,将 client.bootstrap-osd 用户添加到此钥匙串中:
ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd'
- 将生成的 key 加入 ceph.mon.keyring.
ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
- 使用主机名和 IP 地址以及 FSID 生成 monitor map:
monmaptool --create --add future-ceph-node0 10.10.3.117 --fsid 79fd2206-39ca-4ec4-9cd2-96e065c6361e /tmp/monmap
- 创建 mon 的目录,使用
集群名称-主机名
的形式:
mkdir /var/lib/ceph/mon/ceph-future-ceph-node0
- 填入第一个 mon 守护进程的信息:
ceph-mon --mkfs -i future-ceph-node0 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
- 配置 /etc/ceph/ceph.conf 文件:
cat /etc/ceph/ceph.conf
################################################
[global]
fsid = 79fd2206-39ca-4ec4-9cd2-96e065c6361e # 生成的FSID
mon initial members =future-ceph-node0
mon host = 10.10.3.117
public network = 10.10.3.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1
################################################
- 由于我们使用使用 root 操作的,需要设置权限为 ceph(也可以修改 systemd 的启动文件,将 ceph 用户改为 root),并启动 Monitor
chown -R ceph:ceph /var/lib/ceph
systemctl start [email protected]
systemctl enable [email protected]
- 确认服务已经正常启动:
ceph -s
yum install -y net-tools
netstat -lntp|grep ceph-mon
部署 Manager
当我们配置好 ceph-mon 服务之后,就需要配置 ceph-mgr 服务。
- 生成一个认证密钥 (ceph-mgr 为自定义的名称):
#10.10.3.117
ceph auth get-or-create mgr.ceph-mgr mon 'allow profile mgr' osd 'allow *' mds 'allow *'
[mgr.ceph-mgr]
key = AQBMNTZl5adxEhAAk6Jk/CKNWUyNb2DoKXUPvQ==
#10.10.3.118
ceph auth get-or-create mgr.ceph-mgr1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
[mgr.ceph-mgr1]
key = AQDbRTZlgjXWBBAAGew4Xta+t9vgIWPCWC8EVg==
- 创建存放此密钥的文件的目录
#10.10.3.117
sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-ceph-mgr
#将产生的密钥文件存入此目录下,并命名为keyring
vi /var/lib/ceph/mgr/ceph-ceph-mgr/keyring
[mgr.ceph-mgr]
key = AQBMNTZl5adxEhAAk6Jk/CKNWUyNb2DoKXUPvQ==
#10.10.3.118
sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-ceph-mgr1
#将产生的密钥文件存入此目录下,并命名为keyring
vi /var/lib/ceph/mgr/ceph-ceph-mgr1/keyring
[mgr.ceph-mgr1]
key = AQDbRTZlgjXWBBAAGew4Xta+t9vgIWPCWC8EVg==
- 启动 ceph-mgr 服务
ceph-mgr -i ceph-mgr
ceph-mgr -i ceph-mgr1
systemctl enable ceph-mgr@future-ceph-node0
systemctl enable ceph-mgr@future-ceph-node1
#检查服务是否启动,查看ceph状态
ceph -s
#查看当前mgr中可用的模块
ceph mgr module ls
创建 OSD
ceph-volume lvm create --data /dev/sdb
#查看当前的lvm逻辑卷
ceph-volume lvm list
#查看ceph状态
ceph -s
安装配置 Ceph-dashboard
- 开启 dashboard 功能
ceph mgr module enable dashboard
- 创建证书
ceph dashboard create-self-signed-cert
- 配置 web 登录的用户名和密码
#创建/etc/ceph/dashboard.key,并将密码写入
echo "密码" >/etc/ceph/dashboard.key
ceph dashboard ac-user-create k8s administrator -i /etc/ceph/dashboard.key
- 修改 dashboard 默认端口 (可选)
配置端口,默认端口是 8443,修改为 18443,修改后需重启 mgr,修改端口才生效。
ceph config set mgr mgr/dashboard/server_port 18443
systemctl restart ceph-mgr.target
- 查看发布服务地址并登录
ceph mgr services
{
"dashboard": "https://future-ceph-node0:8443/"
}
node 节点#
扩展 Monitor
- 修改 master 节点上的配置
vi /etc/ceph/ceph.conf
[global]
fsid = 79fd2206-39ca-4ec4-9cd2-96e065c6361e # 生成的FSID
mon initial members =future-ceph-node0,future-ceph-node1,future-ceph-node2,future-ceph-node3 # 主机名
mon host = 10.10.3.117,10.10.3.118,10.10.3.119,10.10.3.120 # 对应的IP
public network = 10.10.3.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1
[mon]
mon allow pool delete = true
[mds.future-ceph-node0]
host = future-ceph-node0
- 将配置和密钥文件分发到其它的节点上(master 节点)
#生成公钥,复制到node节点主机上
ssh-keygen -t rsa
ssh-copy-id 10.10.3.118
ssh-copy-id 10.10.3.119
ssh-copy-id 10.10.3.120
#复制认证密钥
scp /etc/ceph/* 10.10.3.118:/etc/ceph/
scp /etc/ceph/* 10.10.3.119:/etc/ceph/
scp /etc/ceph/* 10.10.3.120:/etc/ceph/
- 在 node 节点创建 ceph 相关目录,并添加权限:
mkdir -p /var/lib/ceph/{bootstrap-mds,bootstrap-mgr,bootstrap-osd,bootstrap-rbd,bootstrap-rgw,mds,mgr,mon,osd}
chown -R ceph:ceph /var/lib/ceph
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-future-ceph-node1
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-future-ceph-node2
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-future-ceph-node3
- 修改 node 节点的配置文件,以 node1 为例(其他节点相似)
[global]
fsid = 79fd2206-39ca-4ec4-9cd2-96e065c6361e # 生成的FSID
mon initial members =future-ceph-node0,future-ceph-node1,future-ceph-node2,future-ceph-node3 # 主机名
mon host = 10.10.3.117,10.10.3.118,10.10.3.119,10.10.3.120 # 对应的IP
public network = 10.10.3.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1
[mon]
mon allow pool delete = true
[mon.future-ceph-node1]
mon_addr = 10.10.3.118:6789
host = future-ceph-node1
- 获取集群中的密钥和 map, 以 node1 为例(其他节点相似)
ceph auth get mon. -o /tmp/monkeyring
ceph mon getmap -o /tmp/monmap
- 使用已有的密钥和 map 添加一个新的 Monitor, 指定主机名,以 node1 为例(其他节点相似)
sudo -u ceph ceph-mon --mkfs -i future-ceph-node1 --monmap /tmp/monmap --keyring /tmp/monkeyring
- 启动服务,以 node1 为例(其他节点相似)
systemctl start ceph-mon@future-ceph-node1
systemctl enable ceph-mon@future-ceph-node1
#查看mon状态
ceph -s
ceph mon stat
添加 OSD
从已经存在的 osd 的 master 节点上拷贝初始化的密钥文件
scp -p /var/lib/ceph/bootstrap-osd/ceph.keyring 10.10.3.118:/var/lib/ceph/bootstrap-osd/
scp -p /var/lib/ceph/bootstrap-osd/ceph.keyring 10.10.3.119:/var/lib/ceph/bootstrap-osd/
scp -p /var/lib/ceph/bootstrap-osd/ceph.keyring 10.10.3.120:/var/lib/ceph/bootstrap-osd/
在 node 节点添加 osd
ceph-volume lvm create --data /dev/sdb
systemctl restart ceph-osd@future-ceph-node1
systemctl enable ceph-osd@future-ceph-node1
#查看状态
ceph -s
添加 Mds#
#创建目录
sudo -u ceph mkdir -p /var/lib/ceph/mds/ceph-future-ceph-node0
#创建密钥
ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-future-ceph-node0/keyring --gen-key -n mds.future-ceph-node0
#导入密钥,并设置caps
ceph auth add mds.future-ceph-node0 osd "allow rwx" mds "allow" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-future-ceph-node0/keyring
#手动启动服务
ceph-mds --cluster ceph -i future-ceph-node0 -m future-ceph-node0:6789
chown -R ceph:ceph /var/lib/ceph/mds/
systemctl start ceph-mds@future-ceph-node0
systemctl enable ceph-mds@future-ceph-node0
#检查服务是否启动
ps -ef|grep ceph-mds
#检查ceph 集群状态
ceph -s
创建 CephFS#
创建 pools
#存储数据
ceph osd pool create cephfs_data 64
#存储元数据
ceph osd pool create cephfs_metadata 64
#启用cephfs文件系统
ceph fs new cephfs cephfs_metadata cephfs_data
#查看文件系统状态
ceph fs ls
ceph mds stat
- 挂载 cephfs
内核驱动挂载
#安装依赖
yum install -y ceph-common
#创建挂载点
mkdir /data
#获取存储密钥(管理节点)
cat /etc/ceph/ceph.client.admin.keyring
#将117中的/data 挂载到其他主机的/data
mount -t ceph 10.10.3.117:6789:/ /data -o name=admin,secret=AQBLfS9l612IGhAAOF1iJqT6+rHJPCxqQegqCA==
#卸载
umount /data
用户控件挂载
yum install ceph-fuse -y
#挂载到其他主机
ceph-fuse -m 10.10.3.117:6789 /data
#查看挂载配置
df -h |grep code
#卸载
fusermount -u /mnt/cephfs
创建 rbd 池#
#创建rbd池
ceph osd pool create rbd-k8s 64 64
#启用
ceph osd pool application enable rbd-k8s rbd
#初始化
rbd pool init rbd-k8s
#查看
ceph osd lspools
#查看映像
rbd ls rbd-k8s
#查看映像信息
rbd info --pool rbd-k8s --image mars-c09bb992-963e-43dd-8e5c-e3a1d723b1c8
#映射镜像
rbd map --pool rbd-k8s --image mars-c09bb992-963e-43dd-8e5c-e3a1d723b1c8
#格式化
mkfs.ext4 /dev/rbd0
#挂载到本地
mount /dev/rbd0 /data/code
#查看
lsblk
#取消挂载
umount /dev/rbd0
#取消映射
rbd unmap /dev/rbd0