————————————– 预先配置 ————————————–
安装EPEL源
sudo yum install -y epel-release yum-plugin-priorities python2-pip
安装ceph源,其中mimic是当前ceph版本,如有更新的可以改为更新的版本名
cat << EOF > /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-mimic/el7/noarch
enabled=1
priority=2
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
EOF
更新系统并安装ceph-deploy工具
sudo yum update -y
sudo yum install -y ceph-deploy
安装配置时间服务
yum install chrony
systemctl enable chronyd
systemctl start chronyd
添加ceph用户并设置密码
sudo useradd -d /home/ceph -m ceph
sudo passwd ceph
echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
sudo chmod 0440 /etc/sudoers.d/ceph
配置ssh免密登录
ssh-keygen -t rsa -N '' -f /root/.ssh/id_rsa
ssh-copy-id ceph@ceph-node1
ssh-copy-id ceph@ceph-node2
ssh-copy-id ceph@ceph-node3
开启防火墙端口
monitor节点开启ceph-mon
sudo firewall-cmd --zone=public --add-service=ceph-mon --permanent
OSD和MDS节点开启ceph
sudo firewall-cmd --zone=public --add-service=ceph --permanent
重新载入防火墙配置
sudo firewall-cmd --reload
关闭SELinux
sudo setenforce 0
sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
————————————– 部署集群 ————————————–
本示例节点的信息如下:
+------------+---------------+---------+
| Hostname | IP Address | Role |
+------------+---------------+---------+
| ceph-node1 | 192.168.1.101 | mon,osd |
+------------+---------------+---------+
| ceph-node2 | 192.168.1.102 | osd |
+------------+---------------+---------+
| ceph-node3 | 192.168.1.103 | osd |
+------------+---------------+---------+
创建目录以供ceph-deploy工具输出用
mkdir my-cluster && cd my-cluster
若配置中间发生错误,可使用以下命令清空配置后重来
ceph-deploy purge ceph-node1 ceph-node2 ceph-node3
ceph-deploy purgedata ceph-node1 ceph-node2 ceph-node3
ceph-deploy forgetkeys
rm ceph.*
创建集群,该命令执行完后会生成ceph.conf文件
ceph-deploy new ceph-node1
如果node有多个IP需在ceph.conf中指定对外IP
在[global]区域中加入如下信息,如:
public network = 192.168.1.0/24
安装ceph软件
ceph-deploy install ceph-node1 ceph-node2 ceph-node3
初始化monitor以及生成key
ceph-deploy mon create-initial
复制配置文件和密码到其他管理节点,这里将复制到所有节点以便操作
ceph-deploy admin ceph-node1 ceph-node2 ceph-node3
创建manager守护进程
ceph-deploy mgr create ceph-node1
添加OSD,命令为ceph-deploy osd create –data {device} {ceph-node},示例中/dev/sdb每个节点可用的磁盘
如果主机提供的不是块设备而是LVM,则需要改为vg_name/lv_name
ceph-deploy osd create --data /dev/sdb ceph-node1
ceph-deploy osd create --data /dev/sdb ceph-node2
ceph-deploy osd create --data /dev/sdb ceph-node3
检查集群健康状态
ssh ceph-node1 sudo ceph health
ssh ceph-node1 sudo ceph -s
————————————– 扩展集群 ————————————–
在前面初始化集群里,我们使用了node1作为monitor节点,但如果node1挂了的话整个集群就不可用了。
所以一般高可用部署中monitor至少会部署三个节点(必须是奇数个),因此我们调整了整个集群的架构如下:
+------------+---------------+-----------------+
| Hostname | IP Address | Role |
+------------+---------------+-----------------+
| ceph-node1 | 192.168.1.101 | mon,osd,mgr,mds |
+------------+---------------+-----------------+
| ceph-node2 | 192.168.1.102 | mon,osd |
+------------+---------------+-----------------+
| ceph-node3 | 192.168.1.103 | mon,osd |
+------------+---------------+-----------------+
为了能使用CephFS,至少需要一台metadata服务器,这里将node1设置为metadata服务器
ceph-deploy mds create ceph-node1
增加monitor
ceph-deploy mon add ceph-node2 ceph-node3
确认monitor仲裁同步状态
ceph quorum_status --format json-pretty
增加ceph manager。manager使用主/备状态工作,当主节点故障时,备用节点会接管主节点
ceph-deploy mgr create ceph-node2 ceph-node3
确认备用manager状态
ssh ceph-node1 sudo ceph -s