xin 发布的文章

前言

我们的 ceph 集群里面的节点存在两种不同硬件配置规格的节点, 一种是老机器: 由之前的其他用途的服务器移过来。二种是新机器:专门为存储集群规划配置的。

ceph 最佳实践是存储节点使用同样的硬件配置,对硬件配置不一样的集群,叫做异构集群。
异构集群的应对一直是业界难点。对 ceph 而言,如果是异构集群,无法在性能和空间利用率上取得平衡。(尽管可以利用 osd 权重解决空间利用率的问题,却会影响性能)

而我们的集群通过一个巧妙的方法,规避了该问题,现在做一下说明,需要以后在维护的时候注意一下。

硬件情况

老机器配置:除系统盘外,有 7 块数据盘(其中 6 块机械盘, 1 块 ssd),共四台机器。

新机器配置:除系统盘外,有12 块 机械盘, 1 块 ssd。 剩下的节点都是统一的新配置,如果需要扩容,没有特殊情况也建议都统一按着新机器配置来采购硬件。

老机器的 cpu 配置比新机器的 cpu 配置略强。

- 阅读剩余部分 -

ceph 对象存储兼容两种接口(协议)S3 和 swift. S3 最常用, 这里仅介绍如何连接(使用)S3存储接口。

  1. 命令行的方式(s3cmd)
  2. 熟悉的文件挂载方式 (s3fs)
  3. GUI
  4. SDK (最常用的方式)

访问 S3, 你需要 S3 的:

  • 访问地址(endpoint)如:http://192.168.1.100/
  • 用户密钥,包含:access_id 和 secret_key. access_id是整个集群唯一的,可以根据access_id确定一个用户
  • 具体的桶名(或者你有自己新建桶的权限) 桶名也是整个集群唯一的。(也就是你的桶不能和自己以及其他用户的桶重名)
开始使用前请确保你已经拥有以上信息

- 阅读剩余部分 -

名词

DS : 负载均衡器的节点

RS: 后端真实节点

准备硬件节点

因为LVS RS节点需要修改内核参数, DS不需要。所以实际上RS 和DS的内核参数配置必须是不一样的, 所以我理解DS 和RS 不能在同一点节点。加上还要做高可以用的话, 你必须准备4个节点才有意义,即两个RS节点, 两个DS节点。

- 阅读剩余部分 -

架构逻辑示意图:

实际部署中ceph-deploy 可以和ceph node 在同一个节点。

1570587908894

安装前环境配置

ceph 节点设置

以操作系统centos7.x为例子
# 启用依赖源
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# 添加ceph源
cat /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

# 推荐使用国内镜像
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.ustc.edu.cn/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.ustc.edu.cn/ceph/keys/release.asc
sudo yum makecache

安装NTP

sudo yum install ntp ntpdate ntp-doc -y

# 配置NTP
sudo ntpdate pool.ntp.org 
sudo systemctl restart ntpdate
sudo systemctl restart ntpd
sudo systemctl enable ntpd
sudo systemctl enable ntpdate

ssh 服务

sudo yum install openssh-server -y

创建ceph用户

ssh user@ceph-server
sudo useradd -d /home/{username} -m {username}
sudo passwd {username}
# 对于您添加到每个Ceph节点的新用户,请确保该用户具有 sudo特权。

echo "{username} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/{username}
sudo chmod 0440 /etc/sudoers.d/{username}

测试环境直接停掉防火墙

sudo systemctl stop firewalld
sudo systemctl disable firewalld

yum 加速插件

sudo yum install yum-plugin-priorities

修改每个节点的/etc/hosts,如:

10.201.7.2  node1  # 和hostname一致
10.201.7.3  node2
10.201.7.4  node3

ceph-deploy 节点配置

配置部署节点(ceph-deploy)到ceph的节点的免密钥

# 此步骤不要使用sudo 或root 帐号
ssh-keygen

ssh-copy-id {username}@node1
ssh-copy-id {username}@node2
ssh-copy-id {username}@node3

(推荐)配置ssh 默认使用ceph 用户

# Modify the ~/.ssh/config 

Host node1
   Hostname node1
   User {username}
Host node2
   Hostname node2
   User {username}
Host node3
   Hostname node3
   User {username}
sudo chmod 600 ~/.ssh/config

安装

每个ceph节点执行

sudo yum install ceph -y

如果需要在某个节点安装对象存储网关,在该节点执行

sudo yum install ceph-radosgw -y

ceph-deploy 节点

sudo yum install ceph-deploy -y
mkdir my-cluster
cd my-cluster

ceph-deploy new node1
# 初始化mon
ceph-deploy mon create-initial
# 传递密钥
ceph-deploy admin node1 node2 node3
# 部署mgr
ceph-deploy mgr create node1 
# 部署osd
ceph-deploy osd create --data /dev/vdb node1  # 如果你的虚拟机没有多的磁盘, 需要添加新的磁盘
ceph-deploy osd create --data /dev/vdb node2
ceph-deploy osd create --data /dev/vdb node3  
# 部署RGW
ceph-deploy rgw create node1  # 默认端口: 7480

任意ceph节点

# 检查集群健康
sudo ceph -s