CentOS7 Ceph分布式集群部署
CentOS 7 下安装Ceph-nautilus
本问主要记录在CentOS 7下如何安装Ceph-nautilus,安装过程中遇到的一些问题及解决方法。
1、Ceph实验准备
以下是本次实验所用到的机器(采用的是虚拟机)的配置:
| node1 | 192.168.1.115(三块硬盘) | Mon、mgr、rgs、osd |
| node2 | 192.168.1.116(三块硬盘) | Mon、mgr、rgs、osd |
| node3 | 192.168.1.117(三块硬盘) | Mon、mgr、rgs、osd |
2、hosts及防火墙设置
node1、node2、node3节点进行如下配置:
可以采取ssh免秘钥方式,生成秘钥对拷贝秘钥到node节点:(以下方式二选其一)
#部署机到ceph节点免秘钥登录(先配置好hosts)
ssh-keygen
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
配置免秘钥脚本或者直接粘贴运行
#!/bin/bash
yum -y install expect
ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa
for i in 192.168.1.115 192.168.1.116 192.168.1.117;do
expect -c "
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$i
expect {
\"*yes/no*\" {send \"yes\r\"; exp_continue}
\"*password*\" {send \"Flyaway.123\r\"; exp_continue}
\"*Password*\" {send \"Flyaway.123\r\";}
} "
done
所有节点进行如下操作,当然也可以ssh免秘钥方式操作
#添加hosts解析;
cat >/etc/hosts<<EOF
127.0.0.1 localhost localhost.localdomain
192.168.1.115 node1
192.168.1.116 node2
192.168.1.117 node3
EOF
#临时关闭selinux和防火墙;
sed -i '/SELINUX/s/enforcing/disabled/g' /etc/sysconfig/selinux
setenforce 0
systemctl stop firewalld.service
systemctl disable firewalld.service
#同步节点时间;
yum install ntpdate -y
ntpdate pool.ntp.org
#修改对应节点主机名;
ssh node1 "hostnamectl set-hostname node1" &&
ssh node2 "hostnamectl set-hostname node2" &&
ssh node3 "hostnamectl set-hostname node3"
#或者采取以下方式
hostname `cat /etc/hosts|grep $(ifconfig|grep broadcast|awk '{print $2}')|awk '{print $2}'`;su
更换国内源
因为Centos系统默认使用的是国外的源,可能会影响安装,所以需要替换为国内的源。这里使用 阿里云。
替换yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
yum clean up && yum makecache && yum update -y
配置Ceph安装源
#设置环境变量,使 ceph-deploy 使用的阿里源。执行操作如下:
rpm -Uvh https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/ceph-release-1-1.el7.noarch.rpm
#安装EPEL:
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
#此步骤可不做
cat <<EOM > /etc/yum.repos.d/ceph.repo
[noarch]
name=ceph noarch
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=0
[x86_64]
name=ceph x86_64
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64
enabled=1
gpgcheck=0
EOM
在部署机上安装ceph-deploy
yum -y install ceph-deploy python-setuptools
更新其余节点的yum源
for host in node{2..3};do scp -r /etc/yum.repos.d/* $host:/etc/yum.repos.d/ ;done
在node1 上安装相关包
for host in node{1..3};do ssh -l root $host yum install ceph ceph-radosgw -y ;done
ceph -v
rpm -qa |grep ceph
开始部署集群
#创建集群部署目录
mkdir -p cluster
cd cluster/
#安装Ceph
#ceph-deploy install node1 node2 node3
#添加监控节点(mon)
ceph-deploy new node1 node2 node3
ceph-deploy mon create-initial #Ceph分发秘钥
ceph-deploy admin node1 node2 node3
ceph -s #创建OSD数据存储设备和目录;
ceph-deploy osd create node1 --data /dev/sdb
ceph-deploy osd create node1 --data /dev/sdc
ceph-deploy osd create node2 --data /dev/sdb
ceph-deploy osd create node2 --data /dev/sdc
ceph-deploy osd create node3 --data /dev/sdb
ceph-deploy osd create node3 --data /dev/sdc #创建ceph管理节点(mgr)和rgsw服务;
ceph-deploy mgr create node1 node2 node3
ceph-deploy rgw create node1 node2 node3
netstat -tnlp|grep -aiE 6789
ceph -s #在所有节点上查看 集群是否部署成功
netstat -tnlp|grep -aiE 6789
ps -ef|grep ceph
ceph -s
扩容monitor节点(只能扩容不能缩容)
参考链接:https://blog.csdn.net/nangonghen/article/details/107017258
#添加的ceph节点最好有三块盘 #配置hosts文件,添加节点的信息
cat >>/etc/hosts <<EOF
192.168.1.113 node4
192.168.1.114 node5
EOF #部署机到ceph节点做免秘钥登录
#ssh-keygen
ssh-copy-id node4
ssh-copy-id node5 #修改节点主机名
ssh node4 "hostnamectl set-hostname node4" &&
ssh node5 "hostnamectl set-hostname node5" #ceph 节点需安装ceph ceph-radosgw
for i in node4 node5;do echo --->>$i; ssh $i "yum install -y ceph ceph-radosgw" ;done #切换至集群部署目录
cd cluster
#修改ceph配置文件 添加绿色部分
[root@node1 cluster]# vim ceph.conf
[global]
fsid = 76539f0b-4130-4ecc-9a82-67580ef01577
mon_initial_members = node1, node2, node3, node4, node5
mon_host = 192.168.1.115,192.168.1.116,192.168.1.117,192.168.1.113,192.168.1.114
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx public_network = 192.168.1.0/24 #修改后的ceph.conf文件推送到ceph集群中的所有服务器
cd cluster
ceph-deploy --overwrite-conf config push node1 node2 node3 node4 node5
#添加monitor节点
ceph-deploy mon add node4
ceph-deploy mon add node5
ceph -s
网络升级改造:添加 cluster network
#网络升级改造:添加cluster network
public network网络:
ceph集群监控
#和cluster network进行分离
ceph 的osd节点进行数据同步,3副本。
cluster network = 10.0.1.0/24
#重启osd
systemctl restart ceph-osd@0.service
systemctl restart ceph.target
systemctl restart ceph-mon@node1
systemctl restart ceph-mds@主机名
#演示数据复制 recovery
#rbd映射及扩容
[root@node1 ~]# rbd map rbd/rbd4
rbd: sysfs write failed
RBD image feature set mismatch. Try disabling features unsupported by the kernel with "rbd feature disable".
In some cases useful info is found in syslog - try "dmesg | tail".
rbd: map failed: (6) No such device or address
cd cluster
vim ceph.conf
[globals]
rbd_default_features = 3
ceph-deploy --overwrite-conf admin node{1..5}
[root@controller1 ~]# rbd lock list vms/f9dedf92-05c4-4cf5-a617-4ace50759b95_disk
There is 1 exclusive lock on this image.
Locker ID Address
client.467411015 auto 94250098466816 10.78.10.36:0/4111401624
#物理机无故断电,虚拟机无法启动。
#修改features
#解锁。 rbd lock list ...
rbd lock remove(rm) .....
#给nova用户增加一个权限:allow profile osd
ceph auth create xxxx
#rbd 库容
rbd resize --pool rbd --size 50G rbd5
rbd map
xfs文件系统,xfs_growfs /dev/rbd0
ext3,ext4: resize2fs /dev/rbd0
启用web监控 dashboard
# 自 nautilus开始,dashboard作为一个单独的模块独立出来了,使用时需要在所有的mgr节点上单独安装
yum install -y ceph-mgr-dashboard # 启用dashboard
ceph mgr module enable dashboard --force # 默认启用SSL/TLS,所以需要创建自签名根证书
ceph dashboard create-self-signed-cert # 创建具有管理员角色的用户
ceph dashboard ac-user-create admin admin administrator # 查看ceph-mgr服务
ceph mgr services
{
"dashboard": "https://node0:8443/"
}


可能遇到的问题
1.执行命令ceph-deploy install node0 node1 node2 node3时报错
ImportError: No module named pkg_resources
解决方法:
yum install epel-release -y
yum install python2-pip* -y
2.集群安装时报错 获取 GPG 密钥失败:[Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7"
解决方法:
#这个就是安装的时候会检查key这个可以再repo文件中关闭即可
# vim /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch failovermethod=priority
enabled=1
pgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 #把gpgcheck=1 改为gpgcheck=0 即可,意思是在安装的时候不进行源的检查
sed -i 's/gpgcheck=1/gpgcheck=0/g' /etc/yum.repos.d/epel.repo
CentOS7 Ceph分布式集群部署的更多相关文章
- Elasticsearch学习总结 (Centos7下Elasticsearch集群部署记录)
一. ElasticSearch简单介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticse ...
- 基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)
基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势) 前言 前几天对Apollo配置中心的demo进行一个部署试用,现公司已决定使用,这两天进行分布式部署的时候 ...
- 超详细从零记录Hadoop2.7.3完全分布式集群部署过程
超详细从零记录Ubuntu16.04.1 3台服务器上Hadoop2.7.3完全分布式集群部署过程.包含,Ubuntu服务器创建.远程工具连接配置.Ubuntu服务器配置.Hadoop文件配置.Had ...
- Hadoop(HA)分布式集群部署
Hadoop(HA)分布式集群部署和单节点namenode部署其实一样,只是配置文件的不同罢了. 这篇就讲解hadoop双namenode的部署,实现高可用. 系统环境: OS: CentOS 6.8 ...
- Hadoop分布式集群部署(单namenode节点)
Hadoop分布式集群部署 系统系统环境: OS: CentOS 6.8 内存:2G CPU:1核 Software:jdk-8u151-linux-x64.rpm hadoop-2.7.4.tar. ...
- Hadoop教程(五)Hadoop分布式集群部署安装
Hadoop教程(五)Hadoop分布式集群部署安装 1 Hadoop分布式集群部署安装 在hadoop2.0中通常由两个NameNode组成,一个处于active状态,还有一个处于standby状态 ...
- solr 集群(SolrCloud 分布式集群部署步骤)
SolrCloud 分布式集群部署步骤 安装软件包准备 apache-tomcat-7.0.54 jdk1.7 solr-4.8.1 zookeeper-3.4.5 注:以上软件都是基于 Linux ...
- SolrCloud 分布式集群部署步骤
https://segmentfault.com/a/1190000000595712 SolrCloud 分布式集群部署步骤 solr solrcloud zookeeper apache-tomc ...
- hadoop分布式集群部署①
Linux系统的安装和配置.(在VM虚拟机上) 一:安装虚拟机VMware Workstation 14 Pro 以上,虚拟机软件安装完成. 二:创建虚拟机. 三:安装CentOS系统 (1)上面步 ...
- Minio分布式集群部署——Swarm
最近研究minio分布式集群部署,发现网上大部分都是单服务器部署,而minio官方在github上现在也只提供了k8s和docker-compose的方式,网上有关与swarm启动minio集群的文章 ...
随机推荐
- 力扣 662 https://leetcode.cn/problems/maximum-width-of-binary-tree/
需要了解树的顺序存储 如果是普通的二叉树 ,底层是用链表去连接的 如果是满二叉树,底层用的是数组去放的,而数组放的时候 会有索引对应 当前父节点是索引i,下一个左右节点就是2i,2i+1 利用满二叉树 ...
- 学习jQuery核心内容这一篇就够了
jQuery 1. 介绍 jQuery是JavaScript的工具库,对原生JavaScript中的DOM操作.事件处理.数据处理等进行封装,提供更便捷的方法. 让我们用更少的代码完成我们的js操作 ...
- linux内核vmlinux的编译过程(七)
一. vmlinux目标及其构建规则 定义在顶层Makefile中,如下: # The all: target is the default when no target is given on th ...
- PTA 21级数据结构与算法实验7—查找表
目录 7-1 电话聊天狂人 7-2 两个有序序列的中位数 7-3 词频统计 7-4 集合相似度 7-5 悄悄关注 7-6 单身狗 7-7 词典 7-8 这是二叉搜索树吗? 7-9 二叉搜索树 7-1 ...
- Redis的五大数据类型及其使用场景
前言 redis是一个非常快速的非关系数据库解决方案.其简单的键值数据模型使 Redis 能够处理大型数据集,同时保持令人印象深刻的读写速度和可用性.redis提供了五种数据类型,分别是是: ...
- 【MAUI Blazor踩坑日记】1.关于图标的处理
前言 本系列文章,默认你已经踏上了MAUI Blazor的贼船,并且对MAUI Blazor有了一些了解,知道MAUI是什么,知道Blazor是什么. 不会教你怎么写MAUI Blazor的项目,只是 ...
- golang channel 未关闭导致的内存泄漏
现象 某一个周末我们的服务 oom了,一个比较重要的job 没有跑完,需要重跑,以为是偶然,重跑成功,因为是周末没有去定位原因 又一个工作日,它又oom了,重跑成功,持续观察,job 在oom之前竟然 ...
- 给C#新增一个时间类型: YearMonth
在.Net Framework中,我们常用的时间类型是DateTime.直到.Net6微软加入了两个新的时间类型:DateOnly和TimeOnly,才弥补了之前的不足. DateOnly:表示仅日期 ...
- React报错:This is probably not a problem with npm. There is likely additional logging output above.
解决方案 删除node_modules和package-lock.json,之后运行npm cache clear --force,重新安装模块npm install,另外要注意 npm 5.0版本之 ...
- 关于微信小程序原生组件与uniApp混合开发过程遇到的问题与解决方式
前言: 在实际开发过程中,尤其是小程序的开发,我们常常会遇到一些在文档中解决不了的问题,在这里,我就浅谈一下我遇到的一些问题 1.小程序的构建框架是uni-app,却突然被要求用原生的微信小程序代码来 ...