TOC
1. 环境介绍
主机名 | IP | 角色 | 描述 |
---|---|---|---|
ceph-70 | 10.80.75.70 | 控制机 | 管理节点 |
ceph-71 | 10.80.75.71 | mon、mgr、osd | 监控、管理、存储节点 |
ceph-72 | 10.80.75.72 | osd | 存储节点 |
ceph-73 | 10.80.75.73 | osd | 存储节点 |
ceph-client | 10.80.73.94 | client | 挂载ceph存储的客户端 |
注意⚠️:
ceph-71、ceph-72、ceph-73
主机上都挂载了至少1快用于做osd的磁盘,该磁盘无需格式化、分区等操作。只要系统能识别到即可。这里识别到的名称为/dev/sdc
。在3.11步骤需要使用。
2. 环境准备
以下操作无特殊说明5台机器上都要操作,这里只拿ceph-70演示
以下所有ceph-deploy的命令都是在ceph-70上操作的
# 修改主机名
$ hostname ceph-70
$ echo "ceph-70" > /etc/hostname
# 修改hosts解析
$ cat >> /etc/hosts << EOF
10.80.75.70 ceph-70
10.80.75.71 ceph-71
10.80.75.72 ceph-72
10.80.75.73 ceph-73
10.80.73.94 ceph-client
EOF
# 时间同步
$ ntpdate ntp1.aliyun.com
# 创建一个ceph用户
$ useradd user_00
$ passwd user_00
# 安装依赖包
$ yum install -y epel-release python-setuptools yum-plugin-priorities
# 无密码sudo
$ visudo
添加 user_00 ALL=(ALL) NOPASSWD:ALL
# 准备密钥(只在ceph-70上操作)
$ su - user_00
$ ssh-keygen -t rsa
# 复制密钥到其他节点(只在ceph-70上操作)
$ ssh-copy-id user_00@ceph-71
$ ssh-copy-id user_00@ceph-72
$ ssh-copy-id user_00@ceph-73
$ ssh-copy-id user_00@ceph-client
# 配置传递给ceph-deploy的ssh用户名,也可以命令行加--username user_00代替。(只在ceph-70上操作)
$ cat >> ~/.ssh/config << EOF
cat ~/.ssh/config
Host ceph-71
Hostname ceph-71
User user_00
Host ceph-72
Hostname ceph-72
User user_00
Host ceph-72
Hostname ceph-72
User user_00
Host ceph-client
Hostname ceph-client
User user_00
EOF
3. 安装ceph集群
以下操作无特殊说明都是在ceph-70主机上操作
3.1 配置yum源
$ cat > /etc/yum.repos.d/ceph.repo << EOF
[ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=1
priority=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
priority=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
EOF
3.2 防止ceph-deploy安装时覆盖原源
$ cat >> /etc/profile << EOF
export CEPH_DEPLOY_REPO_URL=http://mirrors.aliyun.com/ceph/rpm-luminous/el7
export CEPH_DEPLOY_GPG_URL=http://mirrors.aliyun.com/ceph/keys/release.asc
EOF
$ source /etc/profile
# 除了该方法还可以在ceph-deploy install 时指定 --repo-url参数,如步骤3.7。
3.3 安装ceph-deploy
$ yum update -y && yum install -y ceph-deploy
3.4 创建ceph-deploy工作目录
$ su - user_00
$ mkdir ~/ceph-cluster
$ cd ~/ceph-cluster
注意:⚠️不要使用sudo来运行ceph-deploy命令
# 任何时候出现安装错误,则可以执行以下的命令以清空Ceph的package以及擦除它的数据和配置:
$ ceph-deploy purge ceph-71 ceph-72 ceph-73
$ ceph-deploy purgedata ceph-71 ceph-72 ceph-73
$ ceph-deploy forgetkeys
$ rm -rf ceph.*
3.5 创建一个集群
# 若有多个节点,空格分隔
$ ceph-deploy new ceph-71
> 此时~/ceph-cluster目录下会生成配置文件、密钥文件和日志文件
3.6 修改配置文件
# 根据情况修改
$ vi ~/ceph-cluster/ceph.conf
[global]
fsid = 1260148c-a8bd-4d4e-ba31-bb694573121e
mon_initial_members = ceph-71
mon_host = 10.80.75.71
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd_pool_default_size = 3
osd_pool_default_min_size = 2
public_network = 10.80.75.0/24
3.7 为其他节点安装ceph包
$ ceph-deploy install ceph-71 ceph-72 ceph-73
# 或者
$ ceph-deploy install ceph-71 ceph-72 ceph-73 --repo-url http://mirrors.aliyun.com/ceph/rpm-luminous/el7
3.8 部署ceph-mon并生成keyring
$ ceph-deploy mon create-initial
> 此时ceph-cluster目录下会出现多个组件的keyring文件
3.9 推送配置文件到所有ceph节点
$ ceph-deploy admin ceph-71 ceph-72 ceph-73
3.10 创建ceph-mgr管理节点
# 部署一个mgr,(Luminous版本开始要求需要)
$ ceph-deploy mgr create ceph-71
$ cat >> ~/ceph-cluster/ceph.conf <<EOF
[mgr]
mgr_modules = dashboard
EOF
$ ceph-deploy --overwrite-conf config push ceph-71 ceph-72 ceph-73
# 开启dashboard,默认7000端口 (ceph-71主机上操作)
$ ceph config-key put mgr/dashboard/server_addr 10.80.75.71
$ ceph config-key put mgr/dashboard/server_port 7000
3.11 初始化添加3个osd
$ ceph-deploy osd create ceph-71 --data /dev/sdc
$ ceph-deploy osd create ceph-72 --data /dev/sdc
$ ceph-deploy osd create ceph-73 --data /dev/sdc
3.12 验证集群状态信息
$ ssh ceph-71 sudo ceph -s
cluster:
id: 1260148c-a8bd-4d4e-ba31-bb694573121e
health: HEALTH_OK
services:
mon: 1 daemons, quorum ceph-71
mgr: ceph-71(active)
osd: 3 osds: 3 up, 3 in
4. 扩展ceph节点
4.1 新增节点组件
mds
:在原有基础上新增一个ceph-mds组件,元数据服务。
mon
:在原有基础上新增两个ceph-mon组件,为ceph-mon提供高可用。
mgr
:在原有基础上新增两个ceph-mgr管理组件,为ceph-mgr提供高可用,官方建议只部署2个。
rgw
:在原有基础上增加一个ceph-rgw组件,提供对象存储功能。
最终集群环境组件为:3个mon、1个mds、3个mgr、1个rgw、3个osd
。
4.2 修改配置文件
以下操作无特殊说明都是在ceph-70主机上操作
# 修改mon节点信息
$ vi ~/ceph-cluster/ceph.conf
[global]
fsid = 1260148c-a8bd-4d4e-ba31-bb694573121e
mon_initial_members = ceph-71,ceph-72,ceph-73
mon_host = 10.80.75.71,10.80.75.72,10.80.75.73
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd_pool_default_size = 3
osd_pool_default_min_size = 2
public_network = 10.80.75.0/24
[mgr]
mgr_modules = dashboard
# 推送新配置至所有ceph节点
$ ceph-deploy --overwrite-conf config push ceph-71 ceph-72 ceph-73
4.2 新增一个metadata节点
如果要使用CephFS,就必须至少添加一个metadata server
# 这里将mds放在了ceph-71节点上
$ ceph-deploy mds create ceph-71
4.3 新增两个mon节点
为达到High Availability的效果,官方建议部署3个mon节点
$ ceph-deploy mon add ceph-72
$ ceph-deploy mon add ceph-73
4.4 查看法定ceph节点状态信息
在添加新的monitor之后,ceph会开始同步这些monitor。
$ ssh ceph-71 sudo ceph quorum_status --format json-pretty
{
"election_epoch": 12,
"quorum": [
0,
1,
2
],
"quorum_names": [
"ceph-71",
"ceph-72",
"ceph-73"
],
"quorum_leader_name": "ceph-71",
"monmap": {
"epoch": 3,
"fsid": "1260148c-a8bd-4d4e-ba31-bb694573121e",
"modified": "2020-11-10 18:21:55.151155",
"created": "2020-11-10 17:57:40.425611",
"features": {
"persistent": [
"kraken",
"luminous"
],
"optional": []
},
"mons": [
{
"rank": 0,
"name": "ceph-71",
"addr": "10.80.75.71:6789/0",
"public_addr": "10.80.75.71:6789/0"
},
{
"rank": 1,
"name": "ceph-72",
"addr": "10.80.75.72:6789/0",
"public_addr": "10.80.75.72:6789/0"
},
{
"rank": 2,
"name": "ceph-73",
"addr": "10.80.75.73:6789/0",
"public_addr": "10.80.75.73:6789/0"
}
]
}
}
小提示:当给Ceph安装多个monitor之后,应该确保每个monitor节点的时间同步。
4.5 新增两个mgr节点
Ceph Manager daemon工作在active/standby的模式。添加多manager,可以保证如果一个manager或host宕掉,另一个manager可以无缝接管过来。可以通过ceph -s命令看到active和standby的manager。
$ ceph-deploy mgr create ceph-72 ceph-73
4.6 新增一个rgw节点
要部署Ceph Object Gateway组件,就必须部署一个RGW实例。默认端口7480
$ ceph-deploy rgw create ceph-71
至此ceph集群扩展完成!可以通过ceph -s查看集群。也可以用3.10步骤的管理页面打开。
$ ssh ceph-71 sudo ceph -s
cluster:
id: 1260148c-a8bd-4d4e-ba31-bb694573121e
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph-71,ceph-72,ceph-73
mgr: ceph-71(active), standbys: ceph-72, ceph-73
osd: 3 osds: 3 up, 3 in
rgw: 2 daemons active
data:
pools: 5 pools, 40 pgs
objects: 267 objects, 136MiB
usage: 4.63GiB used, 85.4GiB / 90.0GiB avail
pgs: 40 active+clean
io:
client: 0B/s rd, 0op/s rd, 0op/s wr
5. 客户端使用ceph rbd存储
5.1 给客户端安装ceph
$ ceph-deploy install ceph-client
5.2 推送配置文件到客户端
将Ceph配置文件和ceph.client.admin.keyring拷贝到ceph-client上,并且授予读权限。
$ ceph-deploy admin ceph-client
$ ssh ceph-client sudo chmod +r /etc/ceph/ceph.client.admin.keyring
5.3 创建PG Pool
$ ceph osd pool create mypool 8 8 # 8是该pool的PG的数量,下面在说PG数量原则。
5.4 初始化该PG Pool可用于rbd
$ rbd pool init mypool
5.5 创建一个块设备
# 创建一个rbd卷
$ rbd create foo --pool mypool --size 4096 --image-feature layering -m 10.80.75.71 -k /etc/ceph/ceph.client.admin.keyring
# 查看所创建的rbd卷
$ rbd info foo -p mypool
5.6 映射rbd卷到块设备
以下操作均在ceph-client上执行
# rbd卷映射到系统块设备上, /dev/rbd0格式
$ rbd map mypool/foo --name client.admin -m 10.80.75.71 -k /etc/ceph/ceph.client.admin.keyring
# 格式化/dev/rbd0块设备
$ mkfs.ext4 /dev/rbd0
# 挂载块设备
$ mkdir /mnt/rbdfile
$ mount /dev/rbd0 /mnt/rbdfile
至此客户端挂载块设备rbd完成! 5.6 步骤可以在多台客户端执行,从而挂载同一个rbd,达到共享数据。
注意:mkfs.ext4
格式化只在第一次挂载的时候执行。后续不需要执行,防止数据丢失。
「真诚赞赏,手留余香」
真诚赞赏,手留余香
使用微信扫描二维码完成支付

comments powered by Disqus