Ceph 集群详细部署配置图文讲解 (二)
liebian365 2024-11-09 13:43 24 浏览 0 评论
Ceph 集群详细部署配置
一、部署结构
虚拟机创建三台服务器,CENTOS 版本为 7.6, IP 网段 192.168.116.2/24。三台主机名称为:
CENTOS7-1: IP 为 192.168.116.141, 既做管理节点, 又做子节点。
CENTOS7-2: IP 为 192.168.116.142, 子节点。
CENTOS7-3: IP 为 192.168.116.143, 子节点
二、系统配置
系统配置工作, 三台节点依次执行:
1、修改主机名称
[root@CENTOS7-1 ~]# vi /etc/hostname
CENTOS7-1
复制代码
2、编辑 hosts 文件
192.168.116.141 CENTOS7-1
192.168.116.142 CENTOS7-2
192.168.116.143 CENTOS7-3
复制代码
注意, 这里面的主机名称要和节点名称保持一致, 否则安装的时候会出现问题
3、修改 yum 源
vi /etc/yum.repos.d/ceph.repo, 为避免网速过慢问题, 这里采用的是清华镜像源:
[ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/x86_64/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-noarch]
name=Ceph noarch packages
# 官方源
#baseurl=http://download.ceph.com/rpm-mimic/el7/noarch
# 清华源
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/SRPMS/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
复制代码
4、安装 ceph 与 ceph-deploy 组件
yum update && yum -y install ceph ceph-deploy
复制代码
安装完成, 如果执行 ceph-deploy 出现 ImportError: No module named pkg_resources
安装 python2-pip:
yum install epel-release -y
yum -y install python2-pip
复制代码
5、安装 NTP 时间同步工具
yum install ntp ntpdate ntp-doc -y
复制代码
确保时区是正确, 设置开机启动:
systemctl enable ntpd
复制代码
并将时间每隔 1 小时自动校准同步。编辑 vi /etc/rc.d/rc.local 追加:
/usr/sbin/ntpdate ntp1.aliyun.com > /dev/null 2>&1; /sbin/hwclock -w
复制代码
配置定时任务, 执行 crontab -e 加入:
三、免密码 SSH 登陆
1、官方建议不用系统内置用户, 创建名为 ceph_user 用户, 密码也设为 ceph_user:
useradd -d /home/ceph_user -m ceph_user
passwd ceph_user
复制代码
2、设置 sudo 权限
echo "ceph_user ALL = (root) NOPASSWD:ALL" | sudo tee
/etc/sudoers.d/ceph_user
sudo chmod 0440 /etc/sudoers.d/ceph_user
复制代码
1、2 两个步骤依次在三台机器上执行。
接下来在主节点, 继续执行:
3、生成密钥:
切换用户: su ceph_user
执行 ssh-keygen,一直按默认提示点击生成 RSA 密钥信息。
4、分发密钥至各机器节点
ssh-copy-id ceph_user@CENTOS7-1
ssh-copy-id ceph_user@CENTOS7-2
ssh-copy-id ceph_user@CENTOS7-3
复制代码
5、修改管理节点上的 ~/.ssh/config 文件, 简化 SSH 远程连接时的输入信息:
管理节点是会有 root 和 ceph_user 多个用户, ssh 远程连接默认会以当前用户身份进行登陆, 如果我们是 root 身份进行远程连接, 还是需要输入密码, 我们想简化, 该怎么处理?
切换 root 身份
su root
复制代码
修改~/.ssh/config 文件
Host CENTOS7-1
Hostname CENTOS7-1
User ceph_user
Host CENTOS7-2
Hostname CENTOS7-2
User ceph_user
Host CENTOS7-3
Hostname CENTOS7-3
User ceph_user
复制代码
注意修改文件权限, 不能采用 777 最大权限:
chmod 600 ~/.ssh/config
复制代码
进行 ssh 远程连接时, Host 的主机名称是区分大小写的, 所以要注意配置文件的主机名称。
6、开放端口, 非生产环境, 可以直接禁用防火墙:
systemctl stop firewalld.service
systemctl disable firewalld.service
复制代码
7、SELINUX 设置
SELinux 设为禁用:
setenforce 0
复制代码
永久生效:
编辑 vi /etc/selinux/config 修改:
SELINUX=disabled
复制代码
四、集群搭建配置
采用 root 身份进行安装
1、在管理节点创建集群配置目录,cd /usr/local:
mkdir ceph-cluster
cd ceph-cluster
复制代码
注意: 此目录作为 ceph 操作命令的基准目录, 会存储处理配置信息。
2、创建集群, 包含三台机器节点:
ceph-deploy new CENTOS7-1 CENTOS7-2 CENTOS7-3
复制代码
创建成功后, 会生一个配置文件。
3、如果接下来集群的安装配置出现问题, 可以执行以下命令清除, 再重新安装:
ceph-deploy purge CENTOS7-1 CENTOS7-2 CENTOS7-3
ceph-deploy purgedata CENTOS7-1 CENTOS7-2 CENTOS7-3
ceph-deploy forgetkeys
复制代码
将三台节点的 mon 信息也删除
rm -rf /var/run/ceph/
复制代码
4、修改配置文件, 有些配置后面需用到:
vi /usr/local/ceph-cluster/ceph.conf
复制代码
加入:
[global]
# 公网网络
public network = 192.168.88.0/24
# 设置pool池默认分配数量 默认副本数为3
osd pool default size = 2
# 容忍更多的时钟误差
mon clock drift allowed = 2
mon clock drift warn backoff = 30
# 允许删除pool
mon_allow_pool_delete = true
[mgr]
# 开启WEB仪表盘 mgr modules = dashboard
复制代码
第一项为副本数, 设为 2 份。
第二项为对外 IP 访问网段,注意根据实际 IP 修改网段。
第三、四项为允许一定时间的漂移误差。
5、执行安装:
ceph-deploy install CENTOS7-1 CENTOS7-2 CENTOS7-3
复制代码
如果出现错误:
ceph_deploy][ERROR ] RuntimeError: Failed to execute command: ceph --version
复制代码
可以在各节点上单独进行安装:
yum -y install ceph
复制代码
如果没有仓库文件 ceph.repo, 按上面的步骤手工创建。
6、初始 monitor 信息:
ceph-deploy mon create-initial ## ceph-deploy --overwrite-conf mon create-initial
复制代码
执行完成后, 会生成以下文件:
7、同步管理信息:
下发配置文件和管理信息至各节点:
ceph-deploy admin CENTOS7-1 CENTOS7-2 CENTOS7-3
复制代码
8、安装 mgr(管理守护进程), 大于 12.x 版本需安装, 我们装的是最新版,需执行:
ceph-deploy mgr create CENTOS7-1 CENTOS7-2 CENTOS7-3
复制代码
9、安装 OSD(对象存储设备)
注意: 新版本的 OSD 没有 prepare 与 activate 命令。
这里需要新的硬盘作为 OSD 存储设备, 关闭虚拟机, 增加一块硬盘, 不用格式化。
重启, fdisk -l 查看新磁盘名称:
执行创建 OSD 命令:
ceph-deploy osd create --data /dev/sdb CENTOS7-1
复制代码
三台节点都需分别依次执行。
ceph-deploy gatherkeys CENTOS7-1
复制代码
10、验证节点:
输入 ceph health 或 ceph -s 查看, 出现 HEALTH_OK 代表正常。
通过虚拟机启动, 如果出现错误:
在各节点执行命令, 确保时间同步一致:
ntpdate ntp1.aliyun.com
复制代码
五、安装管理后台
1、 开启 dashboard 模块
ceph mgr module enable dashboard
复制代码
2、生成签名
ceph dashboard create-self-signed-cert
复制代码
3、创建目录
mkdir mgr-dashboard
复制代码
[root@CENTOS7-1 mgr-dashboard]# pwd
/usr/local/ceph-cluster/mgr-dashboard
复制代码
4、生成密钥对
cd /usr/local/ceph-cluster/mgr-dashboard
复制代码
openssl req -new -nodes -x509 -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650 -keyout dashboard.key -out dashboard.crt -extensions v3_ca
复制代码
5、启动 dashboard
ceph mgr module disable dashboard
ceph mgr module enable dashboard
复制代码
6、设置 IP 与 PORT
ceph config set mgr mgr/dashboard/server_addr 192.168.88.161
ceph config set mgr mgr/dashboard/server_port 18843
复制代码
7、关闭 HTTPS
ceph config set mgr mgr/dashboard/ssl false
复制代码
8、查看服务信息
[root@CENTOS7-1 mgr-dashboard]# ceph mgr services
{
"dashboard": "https://node1:8443/"
}
复制代码
9、 设置管理用户与密码
ceph dashboard set-login-credentials admin admin
复制代码
10、访问
六、创建 Cephfs
集群创建完后, 默认没有文件系统, 我们创建一个 Cephfs 可以支持对外访问的文件系统。
ceph-deploy --overwrite-conf mds create CENTOS7-1 CENTOS7-2 CENTOS7-3
1、创建两个存储池, 执行两条命令:
ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 64
复制代码
少于 5 个 OSD 可把 pg_num 设置为 128
OSD 数量在 5 到 10,可以设置 pg_num 为 512
OSD 数量在 10 到 50,可以设置 pg_num 为 4096
OSD 数量大于 50,需要计算 pg_num 的值
通过下面命令可以列出当前创建的存储池:
ceph osd lspools
复制代码
2.、创建 fs, 名称为 fs_test:
ceph fs new fs_test cephfs_metadata cephfs_data
复制代码
3、状态查看, 以下信息代表正常:
[root@CENTOS7-1 mgr-dashboard]# ceph fs ls
name: fs_test, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
复制代码
[root@CENTOS7-1 ceph-cluster]# ceph mds stat
fs_test-1/1/1 up {0=CENTOS7-2=up:active}, 2 up:standby
复制代码
附: 如果创建错误, 需要删除, 执行:
ceph fs rm fs_test --yes-i-really-mean-it
ceph osd pool delete cephfs_data cephfs_data --yes-i-really-really-mean-it
复制代码
确保在 ceph.conf 中开启以下配置:
[mon] mon allow pool delete = true
复制代码
4、采用 fuse 挂载
先确定 ceph-fuse 命令能执行, 如果没有, 则安装:
yum -y install ceph-fuse
复制代码
5、创建挂载目录
mkdir -p /usr/local/cephfs_directory
复制代码
6、挂载 cephfs
ceph-fuse -k /etc/ceph/ceph.client.admin.keyring -m 192.168.88.161:6789 /usr/local/cephfs_directory
复制代码
7、查看磁盘挂载信息
/usr/local/cephfs_directory 目录已成功挂载。
七、客户端连接验证(Rados Java)
1、安装好 JDK、GIT 和 MAVEN
2、下载 rados java 客户端源码
git clone https://github.com/ceph/rados-java.git
复制代码
下载目录位置:
3、执行 MAVEN 安装, 忽略测试用例:
[root@CENTOS7-1 rados-java]# mvn install -Dmaven.test.skip=true
复制代码
生成 jar 包, rados-0.7.0.jar
4、创建软链接, 加入 CLASSPATH
ln -s /usr/local/sources/rados-java/target/rados-0.7.0.jar /opt/jdk1.8.0_301/jre/lib/ext/rados-0.7.0.jar
复制代码
安装 jna
yum -y install jna
复制代码
创建软链接
ln -s /usr/share/java/jna.jar /opt/jdk1.8.0_301/jre/lib/ext/jna.jar
复制代码
查看
[root@CENTOS7-1 target]# ll
/opt/jdk1.8.0_301/jre/lib/ext/jna.jar lrwxrwxrwx 1 root root /opt/jdk1.8.0_301/jre/lib/ext/jna.jar -> /usr/share/java/jna.jar
复制代码
[root@CENTOS7-1 target]# ll
/opt/jdk1.8.0_301/jre/lib/ext/rados-0.7.0.jar lrwxrwxrwx 1 root root
/opt/jdk1.8.0_301/jre/lib/ext/rados- 0.7.0.jar -> /usr/local/sources/rados-java/target/rados-0.7.0.jar
复制代码
5、创建 JAVA 测试类
CephClient 类,注意, 最新版 0.6 的异常处理包位置已发生变化。
importcom.ceph.rados.Rados;
importcom.ceph.rados.exceptions.*;
importjava.io.File;
publicclassCephClient{
publicstaticvoidmain(Stringargs[]){
try{
Radoscluster=newRados("admin");
System.out.println("Createdclusterhandle.");
Filef=newFile("/etc/ceph/ceph.conf");
cluster.confReadFile(f);
System.out.println("Readtheconfigurationfile.");
cluster.connect();
System.out.println("Connectedtothecluster.");
}catch(RadosExceptione){
System.out.println(e.getMessage()+":"+e.getReturnValue());
}
}
}
复制代码
6、运行验证
需要在 linux 环境下运行,且要在 client 节点。
编译并运行:
[root@CENTOS7-1 sources]# javac CephClient.java
[root@CENTOS7-1 sources]# java CephClient
Created cluster handle.
Read the configuration file.
Connected to the cluster.
复制代码
成功与 ceph 建立连接。
注意:如果 java 和 javac 版本不同,可以使用 rpm -qa |grep java 进行查找, rpm -e --nodeps jdk 进行删除,source /etc/profile 进行生效
jdk 的位数为 64 位
相关推荐
- go语言也可以做gui,go-fltk让你做出c++级别的桌面应用
-
大家都知道go语言生态并没有什么好的gui开发框架,“能用”的一个手就能数的清,好用的就更是少之又少。今天为大家推荐一个go的gui库go-fltk。它是通过cgo调用了c++的fltk库,性能非常高...
- 旧电脑的首选系统:TinyCore!体积小+精简+速度极快,你敢安装吗
-
这几天老毛桃整理了几个微型Linux发行版,准备分享给大家。要知道可供我们日常使用的Linux发行版有很多,但其中的一些发行版经常会被大家忽视。其实这些微型Linux发行版是一种非常强大的创新:在一台...
- codeblocks和VS2019下的fltk使用中文
-
在fltk中用中文有点问题。英文是这样。中文就成这个样子了。我查了查资料,说用UTF-8编码就行了。edit->Fileencoding->UTF-8然后保存文件。看下下边的编码指示确...
- FLTK(Fast Light Toolkit)一个轻量级的跨平台Python GUI库
-
FLTK(FastLightToolkit)是一个轻量级的跨平台GUI库,特别适用于开发需要快速、高效且简单界面的应用程序。本文将介绍Python中的FLTK库,包括其特性、应用场景以及如何通过代...
- 中科院开源 RISC-V 处理器“香山”流片,已成功运行 Linux
-
IT之家1月29日消息,去年6月份,中科院大学教授、中科院计算所研究员包云岗,发布了开源高性能RISC-V处理器核心——香山。近日,包云岗在社交平台晒出图片,香山芯片已流片,回片后...
- Linux 5.13内核有望合并对苹果M1处理器支持的初步代码
-
预计Linux5.13将初步支持苹果SiliconM1处理器,不过完整的支持工作可能还需要几年时间才能完全完成。虽然Linux已经可以在苹果SiliconM1上运行,但这需要通过一系列的补丁才能...
- Ubuntu系统下COM口测试教程(ubuntu port)
-
1、在待测试的板上下载minicom,下载minicom有两种方法:方法一:在Ubuntu软件中心里面搜索下载方法二:按“Ctrl+Alt+T”打开终端,打开终端后输入“sudosu”回车;在下...
- 湖北嵌入式软件工程师培训怎么选,让自己脱颖而出
-
很多年轻人毕业即失业、面试总是不如意、薪酬不满意、在家躺平。“就业难”该如何应对,参加培训是否能改变自己的职业走向,在湖北,有哪些嵌入式软件工程师培训怎么选值得推荐?粤嵌科技在嵌入式培训领域有十几年经...
- 新阁上位机开发---10年工程师的Modbus总结
-
前言我算了一下,今年是我跟Modbus相识的第10年,从最开始的简单应用到协议了解,从协议开发到协议讲解,这个陪伴了10年的协议,它一直没变,变的只是我对它的理解和认识。我一直认为Modbus协议的存...
- 创建你的第一个可运行的嵌入式Linux系统-5
-
@ZHangZMo在MicrochipBuildroot中配置QT5选择Graphic配置文件增加QT5的配置修改根文件系统支持QT5修改output/target/etc/profile配置文件...
- 如何在Linux下给zigbee CC2530实现上位机
-
0、前言网友提问如下:粉丝提问项目框架汇总下这个网友的问题,其实就是实现一个网关程序,内容分为几块:下位机,通过串口与上位机相连;下位机要能够接收上位机下发的命令,并解析这些命令;下位机能够根据这些命...
- Python实现串口助手 - 03串口功能实现
-
串口调试助手是最核心的当然是串口数据收发与显示的功能,pzh-py-com借助的是pySerial库实现串口收发功能,今天痞子衡为大家介绍pySerial是如何在pzh-py-com发挥功能的。一、...
- 为什么选择UART(串口)作为调试接口,而不是I2C、SPI等其他接口
-
UART(通用异步收发传输器)通常被选作调试接口有以下几个原因:简单性:协议简单:UART的协议非常简单,只需设置波特率、数据位、停止位和校验位就可以进行通信。相比之下,I2C和SPI需要处理更多的通...
- 同一个类,不同代码,Qt 串口类QSerialPort 与各种外设通讯处理
-
串口通讯在各种外设通讯中是常见接口,因为各种嵌入式CPU中串口标配,工业控制中如果不够还通过各种串口芯片进行扩展。比如spi接口的W25Q128FV.对于软件而言,因为驱动接口固定,软件也相对好写,因...
- 嵌入式linux为什么可以通过PC上的串口去执行命令?
-
1、uboot(负责初始化基本硬bai件,如串口,网卡,usb口等,然du后引导系统zhi运行)2、linux系统(真正的操作系统)3、你的应用程序(基于操作系统的软件应用)当你开发板上电时,u...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- go语言也可以做gui,go-fltk让你做出c++级别的桌面应用
- 旧电脑的首选系统:TinyCore!体积小+精简+速度极快,你敢安装吗
- codeblocks和VS2019下的fltk使用中文
- FLTK(Fast Light Toolkit)一个轻量级的跨平台Python GUI库
- 中科院开源 RISC-V 处理器“香山”流片,已成功运行 Linux
- Linux 5.13内核有望合并对苹果M1处理器支持的初步代码
- Ubuntu系统下COM口测试教程(ubuntu port)
- 湖北嵌入式软件工程师培训怎么选,让自己脱颖而出
- 新阁上位机开发---10年工程师的Modbus总结
- 创建你的第一个可运行的嵌入式Linux系统-5
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)