ceph集群搭建

ceph集群搭建

预检

搭建前先来了解官方给出的一些名字

ceph osds:ceph OSD 守护进程的功能是存储数据,出来数据的复制,恢复,回填,再均衡,并通过检查其他osd守护进程的心态来想ceph monitors 提供一些监控信息。当ceph存储集群设定为2个副本是,至少需要2个OSD守护进程,集群才能达到 active+clean状态,ceph默认有三个副本,但你可以退调整副本数。

monitor:ceph monitor 维护着展示集群状态的各种图标,包括监视视图,OSD图,归置图(PG),和crsh图。ceph保存着发生在monitor,osd 和pg 上的每一次状态变更的历史信息,称为epoch。

MDSs: Ceph 元数据服务器( MDS )为 Ceph 文件系统存储元数据(也就是说,Ceph 块设备和 Ceph 对象存储不使用MDS )。元数据服务器使得 POSIX 文件系统的用户们,可以在不对 Ceph 存储集群造成负担的前提下,执行诸如 lsfind 等基本命令。

Ceph 把客户端数据保存为存储池内的对象。通过使用 CRUSH 算法, Ceph 可以计算出哪个归置组(PG)应该持有指定的对象(Object),然后进一步计算出哪个 OSD 守护进程持有该归置组。 CRUSH 算法使得 Ceph 存储集群能够动态地伸缩、再均衡和修复。

节点规划
主机名称ip描述role
admin-node172.21.51.5管理节点ceph-deploy
node1172.21.51.6ceph 监控节点mon.node1
node2172.21.51.7osd节点osd.0
noed3172.21.51.8osd节点osd.1

img

以下操作没有注明的则是所有节点都需操作

修改主机名
hostnamectl set-hostname admin-node
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
bash
配置hosts解析
cat >>/etc/hosts<<EOF
172.21.51.5 admin-node
172.21.51.6 node1
172.21.51.7 node2
172.21.51.8 node3
EOF
安装NPT

以免时钟漂移导致故障

yum install ntp ntpdate ntp-doc -y

同步时间
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
sudo ntpdate -u ntp.aliyun.com && date
安装ssh
yum install openssh-server -y
创建部署ceph的用户,并且配置sudo权限
useradd -d /home/dave -m dave
passwd dave         # 123456

echo "dave ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/dave
sudo chmod 0440 /etc/sudoers.d/dave
配置免密登陆(管理节点)

因为 ceph-deploy 不支持输入密码,你必须在管理节点上生成 SSH 密钥并把其公钥分发到各 Ceph 节点。 ceph-deploy 会尝试给初始 monitors 生成 SSH 密钥对,不要用 sudoroot 用户。提示 “Enter passphrase” 时,直接回车,口令即为空

# 切换用户,如不特别说明,后续的操作均在该用户下进行 
su - dave

ssh-keygen   # 直接回车,管理节点上 
ssh-copy-id dave@node1
ssh-copy-id dave@node2
ssh-copy-id dave@node3

# 检查
# admin下多了如下三个文件:
 [dave@admin-node ~]$  ls /home/dave/.ssh/
id_rsa  id_rsa.pub  known_hosts

# 其他多了如下一个文件
[dave@node1 ~]$  ls /home/dave/.ssh/
authorized_keys

# 修改~/.ssh/config 文件
# 修改 ~/.ssh/config 文件(没有则新增),这样 ceph-deploy 就能用你所建的用户名登录 Ceph 节点了。
$ sudo vi ~/.ssh/config

Host admin-node
   Hostname admin-node
   User dave
Host node1
   Hostname node1
   User dave
Host node2
   Hostname node2
   User dave
Host node3
   Hostname node3
   User dave
   
测试
[dave@admin-node ~]$ ssh dave@node1
Last login: Sun Jun 20 01:26:47 2021
[dave@node1 ~]$ exit
logout
Connection to node1 closed.
[dave@admin-node ~]$ ssh dave@node2
Last login: Sun Jun 20 01:26:31 2021
[dave@node2 ~]$ exit
logout
Connection to node2 closed.
[dave@admin-node ~]$ ssh dave@node3
Last login: Sun Jun 20 01:22:47 2021
[dave@node3 ~]$ exit
logout
Connection to node3 closed.
引导时联网(ceph节点)

Ceph 的各 OSD 进程通过网络互联并向 Monitors 上报自己的状态。如果网络默认为 off ,那么 Ceph 集群在启动时就不能上线,直到你打开网络。

$ cat /etc/sysconfig/network-scripts/ifcfg-ens33 
//确保ONBOOT 设置成了 yes 
开放所需端口(ceph节点)

Ceph Monitors 之间默认使用 6789 端口通信, OSD 之间默认用 6800:7300 这个范围内的端口通信。Ceph OSD 能利用多个网络连接进行与客户端、monitors、其他 OSD 间的复制和心跳的通信。

sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent
// 或者关闭防火墙
$ sudo systemctl stop firewalld
$ sudo systemctl disable firewalld

这里是学习使用,直接关闭所有节点的防火墙即可,加sudo 
sudo systemctl stop firewalld && sudo systemctl disable firewalld
sudo iptables -F
sudo sed   -i  's/SELINUX=enforcing/SELINUX=disabled/g'  /etc/sysconfig/selinux
sudo setenforce 0
sudo getenforce
安装高级包管理工具(管理节点)
sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*
把软件包源加入软件仓库(管理节点)
 sudo vi /etc/yum.repos.d/ceph.repo
 
 把如下内容粘帖进去,保存到 /etc/yum.repos.d/ceph.repo 文件中。
 
 [Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS/
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
更新软件并安装ceph-deploy (管理节点)
sudo yum update && sudo yum install ceph-deploy -y
sudo yum install yum-plugin-priorities -y

耐心等待,时间稍长

搭建集群

在 管理节点 下执行如下步骤:

安装准备,创建文件夹

在管理节点上创建一个目录,用于保存 ceph-deploy 生成的配置文件和密钥对

$ cd ~
$ mkdir ceph-cluster
$ cd ceph-cluster

注:若安装ceph后遇到麻烦可以使用以下命令进行清除包和配置:

# 删除安装包
$ ceph-deploy purge admin-node node1 node2 node3

# 清除配置
$ ceph-deploy purgedata admin-node node1 node2 node3
$ ceph-deploy forgetkeys
创建集群和监控节点
 创建集群并初始化监控节点:
 ceph-deploy new {initial-monitor-node(s)} # 安装mnonitor的node上执行
这里node1是monitor节点,所以执行:
ceph-deploy new node1

完成后,ceph-clster 下多了3个文件:ceph.conf、ceph-deploy-ceph.log 和 ceph.mon.keyring
[dave@admin-node ceph-cluster]$ ls
ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring
修改配置文件
修改前:
cat ceph.conf
[global]
fsid = eace5df1-e8dc-483f-876e-4faca399724a
mon_initial_members = node1
mon_host = 172.21.51.6
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx


把 Ceph 配置文件里的默认副本数从 3 改成 2 ,这样只有两个 OSD 也可以达到 active + clean 状态。把 osd pool default size = 2 加入 [global] 段:

执行如下:
$ sed -i '$a\osd pool default size = 2' ceph.conf

修改后如下:
[global]
fsid = eace5df1-e8dc-483f-876e-4faca399724a
mon_initial_members = node1
mon_host = 172.21.51.6
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd pool default size = 2


如果有多个网卡,
可以把 public network 写入 Ceph 配置文件的 [global] 段:

public network = {ip-address}/{netmask}
安装ceph
在所有节点上安装ceph:
ceph-deploy install admin-node node1 node2 node3
配置初始 monitor(s)、并收集所有密钥
 ceph-deploy mon create-initial

完成上述操作后,当前目录里应该会出现这些密钥环:

{cluster-name}.client.admin.keyring
{cluster-name}.bootstrap-osd.keyring
{cluster-name}.bootstrap-mds.keyring
{cluster-name}.bootstrap-rgw.keyring
添加2个OSD
1. 登录到 Ceph 节点、并给 OSD 守护进程创建一个目录,并添加权限。

 ssh node2
 sudo mkdir /var/local/osd0
 sudo chmod 777 /var/local/osd0/
 exit

 ssh node3
 sudo mkdir /var/local/osd1
 sudo chmod 777 /var/local/osd1/
 exit

2. 然后,从管理节点执行 ceph-deploy 来准备 OSD 。
ceph-deploy osd prepare node2:/var/local/osd0 node3:/var/local/osd1

3. 最后,激活 OSD 
ceph-deploy osd activate node2:/var/local/osd0 node3:/var/local/osd1
把配置文件和admin秘钥拷贝到管理节点和ceph节点
ceph-deploy admin admin-node node1 node2 node3
确保你对 ceph.client.admin.keyring 有正确的操作权限
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
检查集群的健康状况和OSD节点状况
[dave@admin-node ceph-cluster]$ ceph health
HEALTH_OK

[dave@admin-node ceph-cluster]$ ceph -s
    cluster eace5df1-e8dc-483f-876e-4faca399724a
     health HEALTH_OK
     monmap e1: 1 mons at {node1=172.21.51.6:6789/0}
            election epoch 3, quorum 0 node1
     osdmap e10: 2 osds: 2 up, 2 in
            flags sortbitwise,require_jewel_osds
      pgmap v23: 64 pgs, 1 pools, 0 bytes data, 0 objects
            14861 MB used, 143 GB / 157 GB avail
                  64 active+clean

[dave@admin-node ceph-cluster]$ ceph osd df
ID WEIGHT  REWEIGHT SIZE   USE    AVAIL  %USE VAR  PGS 
 0 0.07709  1.00000 80876M  7430M 73445M 9.19 1.00  64 
 1 0.07709  1.00000 80876M  7430M 73445M 9.19 1.00  64 
              TOTAL   157G 14861M   143G 9.19          
MIN/MAX VAR: 1.00/1.00  STDDEV: 0

扩展集群(扩容)

添加OSD

在node1 上添加一个OSD.2

1.创建目录
 ssh node1
 sudo mkdir /var/local/osd2
 sudo chmod 777 /var/local/osd2/
 exit
 
2.准备osd
ceph-deploy osd prepare node1:/var/local/osd2

3.激活osd
ceph-deploy osd activate node1:/var/local/osd2

4.检查集群状态和osd节点
[dave@admin-node root]$ ceph -s
    cluster eace5df1-e8dc-483f-876e-4faca399724a
     health HEALTH_OK
     monmap e1: 1 mons at {node1=172.21.51.6:6789/0}
            election epoch 3, quorum 0 node1
     osdmap e15: 3 osds: 3 up, 3 in
            flags sortbitwise,require_jewel_osds
      pgmap v63: 64 pgs, 1 pools, 0 bytes data, 0 objects
            22295 MB used, 215 GB / 236 GB avail
                  64 active+clean

[dave@admin-node root]$ ceph osd df
ID WEIGHT  REWEIGHT SIZE   USE    AVAIL  %USE VAR  PGS 
 0 0.07709  1.00000 80876M  7430M 73445M 9.19 1.00  41 
 1 0.07709  1.00000 80876M  7430M 73445M 9.19 1.00  43 
 2 0.07709  1.00000 80876M  7433M 73443M 9.19 1.00  44 
              TOTAL   236G 22295M   215G 9.19          
MIN/MAX VAR: 1.00/1.00  STDDEV: 0.00

添加monitors
在 ndoe2 和 node3 添加监控节点。

修改 mon_initial_members、mon_host 和 public network 配置:
修改前
[dave@admin-node ceph-cluster]$ cat ceph.conf 
[global]
fsid = eace5df1-e8dc-483f-876e-4faca399724a
mon_initial_members = node1
mon_host = 172.21.51.6
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd pool default size = 2

修改后:
[dave@admin-node ceph-cluster]$ vim ceph.conf 
[global]
fsid = eace5df1-e8dc-483f-876e-4faca399724a
mon_initial_members = node1,node2,node3
mon_host = 172.21.51.6,172.21.51.7,172.21.51.8
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd pool default size = 2
public network = 172.21.51.0/24


推送至其他节点
 ceph-deploy --overwrite-conf config push node1 node2 node3
 
添加监控节点
ceph-deploy mon add node2 
ceph-deploy mon add node3

查看集群状态和监控节点
[dave@admin-node ceph-cluster]$ ceph -s
    cluster eace5df1-e8dc-483f-876e-4faca399724a
     health HEALTH_OK
     monmap e3: 3 mons at {node1=172.21.51.6:6789/0,node2=172.21.51.7:6789/0,node3=172.21.51.8:6789/0}
            election epoch 6, quorum 0,1,2 node1,node2,node3
     osdmap e15: 3 osds: 3 up, 3 in
            flags sortbitwise,require_jewel_osds
      pgmap v216: 64 pgs, 1 pools, 0 bytes data, 0 objects
            22314 MB used, 215 GB / 236 GB avail
                  64 active+clean


[dave@admin-node ceph-cluster]$ ceph mon stat
e3: 3 mons at {node1=172.21.51.6:6789/0,node2=172.21.51.7:6789/0,node3=172.21.51.8:6789/0}, election epoch 6, quorum 0,1,2 node1,node2,node3

orum 0,1,2 node1,node2,node3
osdmap e15: 3 osds: 3 up, 3 in
flags sortbitwise,require_jewel_osds
pgmap v216: 64 pgs, 1 pools, 0 bytes data, 0 objects
22314 MB used, 215 GB / 236 GB avail
64 active+clean

[dave@admin-node ceph-cluster]$ ceph mon stat
e3: 3 mons at {node1=172.21.51.6:6789/0,node2=172.21.51.7:6789/0,node3=172.21.51.8:6789/0}, election epoch 6, quorum 0,1,2 node1,node2,node3


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值