centos 7 使用 ceph-deploy 快速部署 ceph 集群
一、安装 CEPH 部署工具
把 Ceph 仓库添加到 ceph-deploy 管理节点,然后安装 ceph-deploy 。
1、配置yum源
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*
echo '[ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc' > /etc/yum.repos.d/ceph.repo
echo '[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-infernalis/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-infernalis/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-infernalis/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
priority=1' > /etc/yum.repos.d/ceph.repo
yum clean all
yum makecache
2、安装ceph-deploy
yum install -y ceph-deploy
```
## 二、CEPH 节点环境预检及配置
你的管理节点必须能够通过 SSH 无密码地访问各 Ceph 节点。如果 ceph-deploy 以某个普通用户登录,那么这个用户必须有无密码使用 sudo 的权限。
#### 1、安装 NTP
建议在所有 Ceph 节点上安装 NTP 服务(特别是 Ceph Monitor 节点),以免因时钟漂移导致故障。
#### 2、安装 SSH 服务器
``` shell
yum install -y openssh-server
确保所有 Ceph 节点上的 SSH 服务器都在运行。
3、创建部署 CEPH 的用户
ceph-deploy 工具必须以普通用户登录 Ceph 节点,且此用户拥有无密码使用 sudo 的权限,因为它需要在安装软件及配置文件的过程中,不必输入密码。
在各 Ceph 节点创建新用户。确保各 Ceph 节点上新创建的用户都有 sudo 权限。
username=ceph-deploy
sudo useradd -d /home/${username} -m ${username}
sudo passwd ${username}
echo "${username} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/${username}
chmod 0440 /etc/sudoers.d/${username}
允许无密码 SSH 登录
正因为 ceph-deploy 不支持输入密码,你必须在管理节点上生成 SSH 密钥并把其公钥分发到各 Ceph 节点。 ceph-deploy 会尝试给初始 monitors 生成 SSH 密钥对。
生成 SSH 密钥对,但不要用 sudo 或 root 用户。提示 “Enter passphrase” 时,直接回车,口令即为空:
ssh-keygen
Generating public/private key pair.
Enter file in which to save the key (/ceph-admin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /ceph-admin/.ssh/id_rsa.
Your public key has been saved in /ceph-admin/.ssh/id_rsa.pub.
把公钥拷贝到各 Ceph 节点,把下列命令中的 {username} 替换成前面创建部署 Ceph 的用户里的用户名。
配置hosts, 配置之前修改每台机器的主机名,例如:
hostnamectl set-hostname node1
echo '172.66.1.12 node1
172.66.1.13 node2
172.66.1.14 node3
' >> /etc/hosts
username=ceph-deploy
ssh-copy-id {username}@node1
ssh-copy-id {username}@node2
ssh-copy-id {username}@node3
(推荐做法)修改 ceph-deploy 管理节点上的 ~/.ssh/config 文件,这样 ceph-deploy 就能用你所建的用户名登录 Ceph 节点了,而无需每次执行 ceph-deploy 都要指定 --username {username} 。这样做同时也简化了 ssh 和 scp 的用法。把 {username} 替换成你创建的用户名。
Host node1
Hostname node1
User ceph-deploy
Host node2
Hostname node2
User ceph-deploy
Host node3
Hostname node3
User ceph-deploy
同时,部署前,确保firewalld, selinux关闭。
4、优先级/首选项
确保你的包管理器安装了优先级/首选项包且已启用。在 CentOS 上你也许得安装 EPEL ,在 RHEL 上你也许得启用可选软件库。
sudo yum install -y yum-plugin-priorities
三、集群安装
http://docs.ceph.org.cn/start/quick-ceph-deploy/
1、创建集群
ceph-deploy new node1
2、安装ceph
ceph-deploy install node1
ceph-deploy mon create-initial
执行
ceph-deploy osd prepare node2:/dev/vdc
ceph-deploy osd prepare node2:/dev/vdc node3:/dev/vdc
报错
usage: ceph-deploy osd [-h] {list,create} ...
ceph-deploy osd: error: argument subcommand: invalid choice: 'prepare' (choose from 'list', 'create')
ceph-deploy 2.0.1竟然没有prepare子命令, 坑真多。
然后执行
ceph-deploy osd create node2 --data /dev/vdc
遇到报错
ceph_deploy][ERROR ] ExecutableNotFound: Could not locate executable 'ceph-volume' make sure it is installed and available on node2
这个是因为ceph-Deploy的版本高了,需要卸载高版本,安装低版本(admin节点):
如下方法也能解决:
pip install ceph-deploy==1.5.39
最后执行下面命令成功
ceph-deploy osd prepare node2:/dev/vdc node3:/dev/vdc
这一步主要是为OSD做一些准备工作。
最后,激活 OSD:
ceph-deploy osd activate node2:/dev/vdc1 node3:/dev/vdc1
最后,类似的方法把node1也加进去,大功告成。
[root@node1 my-cluster]# ceph -s
cluster 838f41b7-778e-43b1-b16d-99694af1df52
health HEALTH_OK
monmap e1: 1 mons at {node1=172.66.1.12:6789/0}
election epoch 2, quorum 0 node1
osdmap e13: 3 osds: 3 up, 3 in
flags sortbitwise
pgmap v23: 64 pgs, 1 pools, 0 bytes data, 0 objects
100 MB used, 134 GB / 134 GB avail
64 active+clean
扩容操作
包括增加OSD和Monitor
增加Monitor
执行如下命令在node2上增加monitor
ceph-deploy mon add node2
出现如下错误
[node2][ERROR ] admin_socket: exception getting command descriptions: [Errno 2] No such file or directory
[node2][ERROR ] admin_socket: exception getting command descriptions: [Errno 2] No such file or directory
解决方法:
通过上面日志可知ceph.conf配置文件中缺少public network的配置,在admin节点中,my-cluster目录下的ceph.conf的[global]下添加对应的网址:
[global]
fsid = b8b4aa68-d825-43e9-a60a-781c92fec20e
mon_initial_members = node1
mon_host = 192.168.197.154
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public network =192.168.197.0/24
之后通过执行下面的命令把修改的配置推送至每个节点,否则提示error:
ceph-deploy --overwrite-conf config push node1 node2 node3
之后可以正常执行monitor添加命令了。
OSD扩容
OSD扩容主要分为两步:
- 准备OSD, 即执行prepare命令
ceph-deploy osd prepare {ceph-node}:{device}
例如:
ceph-deploy osd prepare node1:/dev/vdc
最后,激活 OSD 。
- 激活OSD, 即执行activate命令
ceph-deploy osd activate {ceph-node}:{device}
例如:
ceph-deploy osd activate node1:/dev/vdc
一旦你新加了 OSD , Ceph 集群就开始重均衡,把归置组迁移到新 OSD 。这时你可以看到归置组状态从 active + clean 变为 active,还有一些降级的对象;迁移完成后又会回到 active + clean 状态。
总结
手动成功部署一个ceph集群,完成了学习ceph的第一步。
Copyright © 2015 Powered by MWeb, Theme used GitHub CSS.