ceph分布式存储搭建——筑梦之路

centos 7 搭建ceph集群——筑梦之路_筑梦之路的博客-CSDN博客

这篇是之前写的,今天再次来搭建一遍,并将过程记录,温故而知新。

如需用于生产,建议磁盘要求吞吐 >=150MB/s,IOPS >= 5000,网络双口万兆Bond堆叠、内存128G

主机名

角色

IP

node01

ceph-deploy、mon、mgr、osd

192.168.31.221

node02

mon、mgr、osd

192.168.31.222

node03

mon、mgr、osd

192.168.31.223

操作系统:centos7

搭建准备

#换源

wget http://mirrors.aliyun.com/repo/epel-7.repo -O /etc/yum.repos.d/epel-7.repo

wget http://mirrors.aliyun.com/repo/Centos-7.repo -O /etc/yum.repos.d/CentOS7-Base-ali.repo

sed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS7-Base-ali.repo

#新增yum源

cat >> /etc/yum.repos.d/ceph.repo << EOF
[noarch]
name=ceph-noarch
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
enable=1
gpgcheck=0

[ceph]
name=ceph
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
enable=1
gpgcheck=0
EOF


# 时间同步

#安装 chrony
yum -y install chrony

#设置系统的时区
timedatectl set-timezone Asia/Shanghai

#设置系统时钟同步,输出以下内容代表同步正常
systemctl enable chronyd --now

timedatectl status

      Local time: 二 2023-02-27 23:28:58 CST
  Universal time: 二 2023-02-27 15:28:58 UTC
        RTC time: 二 2023-02-27 15:28:59
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a


#将当前的 UTC 时间写入硬件时钟,并重启依赖于系统时间的服务 [物理服务器需要]
timedatectl set-local-rtc 0
systemctl restart rsyslog && systemctl restart crond


--------------------------------------------------------------
#配置hosts解析

使用 ceph-deploy 部署集群时,需要通过主机名来查找主机 IP 地址,所以要在本地 hosts 文件中配置地址解析

cat >> /etc/hosts << EOF
192.168.31.221 node01
192.168.31.222 node02
192.168.31.223 node03
EOF

-----------------------------------------------------------
#关闭防火墙 selinux

systemctl disable firewalld.service --now

setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

----------------------------------------------------------
#节点之间的免密认证


#生成密钥
ssh-keygen -t rsa -f ~/.ssh/id_rsa -N ''

#ssh互发,将各节点的主机信息(host key)写入control_node的~/.ssh/known_hosts文件
for host in 192.168.31.{221..223}  node{01..03}; do ssh-keyscan $host >>~/.ssh/known_hosts 2>/dev/null; done

#将公钥分发给各个机器
yum -y install sshpass
for host in node{01..03}; do sshpass -p'123456' ssh-copy-id root@$host &>/dev/null; done


 集群搭建

# 安装部署工具

yum -y install python-setuptools ceph-deploy ceph

# 创建工作目录

mkdir -p /opt/ops-ceph-cluster

# 初始化节点

在 ceph-admin 节点上进入 /opt/ops-ceph-cluster 目录下,执行 ceph-deploy 命令初始化集群设置,初始化要求指定节点作为 mon,命令如下:

–public-network 代表 ceph 集群对外提供调用的网络,–cluster-network 代表用于集群内部通信的网络。一般情况下 ceph 集群中需要有两个网络,这样可以保证 ceph 集群的安全性。由于此次搭建的环境中只有一个网络,所以此处两个配置项填写同一个网段的地址。

上面的命令执行完成后会将 ceph-node1 节点配置为 mon,并且会在 /opt/ops-ceph-cluster 目录下生成集群的配置文件、key 文件(用于身份验证)、日志文件等:

ceph-deploy new --public-network 192.168.31.0/24 --cluster-network 192.168.31.0/24 node01

cat ceph.conf  
[global]
fsid = 0733d796-2798-4c78-b270-d829ab88f887
public_network = 192.168.31.0/24
cluster_network = 192.168.31.0/24
mon_initial_members = node01
mon_host = 192.168.31.221
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

# 在各个节点安装组件

yum -y install ceph ceph-mon ceph-mgr ceph-mds ceph-radosgw

-----------------------------------------------------
# 初始化mon

在初始化集群的过程中已经指定了 mon 的节点,现在需要对 mon 进行初始化,在 ceph-admin 节点的 /opt/ops-ceph-cluster 目录下执行如下命令进行初始化:

ceph-deploy mon create-initial

接下来将 admin用户的 key 文件拷贝给各个 osd 节点,如果为了在 ceph-admin 节点中使用 ceph 命令查看集群状态,那么也需要将 key 文件拷贝给 ceph-admin 节点(ceph-admin节点需要安装 ceph 包)

ceph-deploy admin node01 node02 node03

拷贝完成后执行 ceph -s 命令可以查看到当前集群的状态

------------------------------------------------------

# 安装 mgr 进程

配置 ceph-node1 节点作为 mgr,在 ceph-admin 节点的 /opt/ops-ceph-cluster 目录下执行如下命令:

ceph-deploy mgr create node01

# 部署 OSD 节点

当前环境中,每个 OSD 节点都有两块磁盘 sdb 和 sdc

接下来将每个 OSD 节点中的 sdb 磁盘加入到 ceph 集群中,命令如下:


for host in 1 2 3
do 
ceph-deploy disk zap node0${host} /dev/sdb
ceph-deploy osd create node0${host} --data /dev/sdb
ceph-deploy disk zap node0${host} /dev/sdc
ceph-deploy osd create node0${host} --data /dev/sdc
done

ceph-deploy disk zap 命令用于将目标磁盘的分区表和内容擦除,实际上它是调用 /bin/dd if=/dev/zero of=/dev/sdb bs=1M count=10 conv=fsync 命令来销毁 GPT 和 MBR 。如果目标磁盘是未被分区的,可以不使用该命令

此时查看 ceph 集群的状态,可以看到有6个 OSD 已经被加入到集群中。

 扩展 mon 和 mgr 节点

mon 和 mgr 是 ceph 集群中非常重要的组件,其中 mon 作为整个集群的控制中心,里面存放着集群的信息,所以需要确保 mon 和 mgr 处于高可用的状态,为了保证选举正常,节点数要为奇数

ceph-deploy mon add node02
ceph-deploy mon add node03

集群信息中显示当前的 mon 节点已经为 3 个,使用如下命令查看 mon 节点的选举状态:

ceph quorum_status --format json-pretty

{
    "election_epoch": 60,
    "quorum": [
        0,
        1,
        2
    ],
    "quorum_names": [
        "node01",
        "node02",
        "node03"
    ],
    "quorum_leader_name": "node01",
    "quorum_age": 26873,
    "monmap": {
        "epoch": 3,
        "fsid": "0733d796-2798-4c78-b270-d829ab88f887",
        "modified": "2023-02-21 10:59:46.767964",
        "created": "2023-02-21 10:46:42.790704",
        "min_mon_release": 14,
        "min_mon_release_name": "nautilus",
        "features": {
            "persistent": [
                "kraken",
                "luminous",
                "mimic",
                "osdmap-prune",
                "nautilus"
            ],
            "optional": []
        },
        "mons": [
            {
                "rank": 0,
                "name": "node01",
                "public_addrs": {
                    "addrvec": [
                        {
                            "type": "v2",
                            "addr": "192.168.31.221:3300",
                            "nonce": 0
                        },
                        {
                            "type": "v1",
                            "addr": "192.168.31.221:6789",
                            "nonce": 0
                        }
                    ]
                },
                "addr": "192.168.31.221:6789/0",
                "public_addr": "192.168.31.221:6789/0"
            },
            {
                "rank": 1,
                "name": "node02",
                "public_addrs": {
                    "addrvec": [
                        {
                            "type": "v2",
                            "addr": "192.168.31.222:3300",
                            "nonce": 0
                        },
                        {
                            "type": "v1",
                            "addr": "192.168.31.222:6789",
                            "nonce": 0
                        }
                    ]
                },
                "addr": "192.168.31.222:6789/0",
                "public_addr": "192.168.31.222:6789/0"
            },
            {
                "rank": 2,
                "name": "node03",
                "public_addrs": {
                    "addrvec": [
                        {
                            "type": "v2",
                            "addr": "192.168.31.223:3300",
                            "nonce": 0
                        },
                        {
                            "type": "v1",
                            "addr": "192.168.31.223:6789",
                            "nonce": 0
                        }
                    ]
                },

                "addr": "192.168.31.223:6789/0",
                "public_addr": "192.168.31.223:6789/0"
            }
        ]
    }
}


#可以看到当前已经可以正常选举,leader 为 node01 节点上的 mon。也可以使用 ceph mon stat 命令查看 mon 的信息:

ceph mon stat

e3: 3 mons at {node01=[v2:192.168.31.221:3300/0,v1:192.168.31.221:6789/0],node02=[v2:192.168.31.222:3300/0,v1:192.168.31.222:6789/0],node03=[v2:192.168.31.223:3300/0,v1:192.168.31.223:6789/0]}, election epoch 60, leader 0 node01, quorum 0,1,2 node01,node02,node03


使用 ceph mon dump 命令可以查看详细的信息

#扩容mgr

ceph-deploy mgr create node02  node03

# 查看集群信息

ceph -s 


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值