写点什么

Ceph 集群详细部署配置图文讲解 (二)

作者:Lansonli
  • 2022 年 7 月 13 日
  • 本文字数:4730 字

    阅读完需:约 16 分钟

Ceph集群详细部署配置图文讲解(二)

​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/hostnameCENTOS7-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 $basearchbaseurl=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 packagesbaseurl=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_userHost CENTOS7-2   Hostname CENTOS7-2  User ceph_userHost 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.161ceph 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 lsname: fs_test, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
复制代码


[root@CENTOS7-1 ceph-cluster]# ceph mds statfs_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 位

发布于: 刚刚阅读数: 5
用户头像

Lansonli

关注

微信公众号:三帮大数据 2022.07.12 加入

CSDN大数据领域博客专家,华为云享专家、阿里云专家博主、腾云先锋(TDP)核心成员、51CTO专家博主,全网六万多粉丝,知名互联网公司大数据高级开发工程师

评论

发布
暂无评论
Ceph集群详细部署配置图文讲解(二)_云原生_Lansonli_InfoQ写作社区