openGauss共享存储对接Ceph-单机openGauss-Ceph zhangxb2023-02-18
openGauss + DSS + Ceph 部署操作步骤
本文档介绍单机版 openGauss+DSS+Ceph 集群部署方式。后续提供主备下的步骤。
服务器:
Hostname IP 系统 规格 磁盘
Ceph1 ... openEuler20.03 x86_64 8 核 16GB 2 * 100GB
Ceph2 ... openEuler20.03 x86_64 8 核 16GB 2 * 100GB
/dev/sdb 格式化为文件系统,用来部署数据库
/dev/sdc 按照块设备使用,提供给 ceph 部署 OSD 节点。
- 部署 Ceph
Ceph 集群推荐服务端 3 台机器,客户端按需部署。我们这次部署单机版,ceph 服务端用几台机器都可以,客户端也可以和服务端公用机器。
目前将这两台机器都部署上 ceph。
(1) 每台节点都执行以下操作:
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
关闭 selinux
setenforce 0
修改节点名称
建议修改节点名称。ceph集群服务端改为ceph1,ceph2,client节点改为client1,client2等
hostnamectl --static set-hostname ceph1
hostnamectl --static set-hostname ceph2
ntp 配置
需要保证这几台服务器节点的时间同步。可以通过配置 ntp 保证时间同步。
安装 Ceph
yum install ceph -y
pip install prettytable
这里安装的是openeuler系统自带的12.2.8。 如果需要其他版本,可以自行安装。
建立这几个节点互信
ceph-deploy 部署时候需要保证几个节点之间 root 用户免密连通,即需要建立 root 用户的互信。 可以使用 openGauss 的 OM 工具 gs_sshexkey 来建立互信。
./gs_sshexkey -f ./hostfile # hosffile里面所有节点ip,每行一个
(2) 选择 ceph1 节点上执行部署 ceph 操作:
安装 ceph-deploy 部署工具
pip install ceph-deploy
openEuler 上需要适配修改:
vim /lib/python2.7/site-packages/ceph_deploy/hosts/init.py
添加一行对 openeuler 的支持。
ceph -v 查询是否安装成功。
部署 MON 节点
Ceph Monitor,负责监视 Ceph 集群,维护 Ceph 集群的健康状态。
只用在 ceph1 节点执行
cd /etc/ceph
ceph-deploy new ceph1 ceph2 #所有的客户端和服务端节点都要
ceph-deploy mon create-initial
ceph-deploy --overwrite-conf admin ceph1 ceph2 #所有的客户端和服务端节点都要
部署完成后,可以使用 ceph -s 查看状态
部署 MGR 节点
提供外部监测和管理系统的接口。
只用在 ceph1 节点执行
ceph-deploy mgr create ceph1 ceph2 #只需要给服务端部署
部署 OSD 节点
osd(Object Storage Device)主要用于存储数据,一般将一块数据盘对应一个 osd,也可以把一个分区作为一个 osd。
查看数据盘是否有分区
使用 lsblk 查看,需要部署 osd 的数据盘如果之前被做了分区,可以用如下命令清除。
ceph-volume lvm zap /dev/sdb --destroy #/dev/sdb 为要清除分区的数据盘
部署 OSD
ceph-deploy osd create ceph1 --data /dev/sdc
ceph-deploy osd create ceph2 --data /dev/sdc
ceph1 为当前服务器名称, /dev/sdc 为对应服务器要部署 osd 的数据盘盘符。
完成后使用 ceph -s 查看状态
MDS 部署
MDS(Metadata Server)即元数据 Server 主要负责 Ceph FS 集群中文件和目录的管理。 我们使用 ceph 的块设备,不用 cephfs 文件系统。可以不需要部署 MDS 服务。
cd /etc/ceph
ceph-deploy mds create ceph1 ceph2
状态查看
集群状态: ceph -s
集群健康信息: ceph health detail
OSD信息: ceph osd tree
各个服务状态:
systemctl status ceph-mon@ceph1
systemctl status ceph-mgr@ceph1
systemctl status ceph-osd@ceph1
2. 部署 DSS
数据库和 DSS 都是部署在子用户下运行,需要有子用户调用 ceph 接口的权限。我们将/ec/ceph 目录权限以及里面的文件权限改为 755,保证子用户可读。
chmod -R 755 /etc/ceph
(1) 创建块设备
创建存储池:
ceph osd pool create blkpool 64 64
创建块设备
rbd create dssimage --size 50GB --pool blkpool --image-format 2 --image-feature layering
blkpool 存储池名称
dssimage 实际使用的块设备名称,类似于磁盘,在创建时候需要指定大小。
rbd map blkpool/dssimage
将 ceph 的块设备挂载到系统上。例如挂载为: /dev/rbd0
这一步无实际意义,仅是为了做个标识。对 ceph 的读写不会真正去打开/dev/rbd0,而是通过存储池> 名称 blkpool 和块设备名称 dssimage 调用 rbd 接口打开以及读写。
(2) DSS 对接到 Ceph 块设备
编译 DSS
sh build.sh -m Release -3rd /xxx/openGauss-third_party_binarylibs_openEuler_x86_64 -t cmake -s ceph
下载最新的 dss 代码进行编译,编译命令后面加上 -s ceph 表明构建出的二级制支持 ceph 块设备。
编译需要安装 rbd 的依赖:
yum install librados-devel librbd-devel -y
部署 DSS
导入环境变量:
export DSSAPP=/data/ddes/code/DSS-zxb/output
export LD_LIBRARY_PATH=$DSSAPP/lib:$LD_LIBRARY_PATH
export PATH=$DSSAPP/bin:$PATH
export DSS_HOME=/data/ddes/app/dsshome
export DSSDATA=/dev/rbd0
DSSAPP 目录为编译出来的 dss 二级制目录,下面为 bin 以及 lib
DSS_HOME 为 dss 的配置文件目录,指定一个目录并创建
创建配置以及日志目录:
mkdir -p ${DSS_HOME}/cfg
mkdir -p ${DSS_HOME}/log
写入 DSS 配置文件:
echo "VOLUME_TYPES=${DSSDATA}=1" > ${DSS_HOME}/cfg/dss_inst.ini
echo "POOL_NAMES=${DSSDATA}=blkpool" >> ${DSS_HOME}/cfg/dss_inst.ini
echo "IMAGE_NAMES=${DSSDATA}=dssimage" >> ${DSS_HOME}/cfg/dss_inst.ini
echo "CEPH_CONFIG=/etc/ceph/ceph.conf" >> ${DSS_HOME}/cfg/dss_inst.ini
echo "data:${DSSDATA}" > ${DSS_HOME}/cfg/dss_vg_conf.ini
DSSDATA=/dev/rbd0 为挂载 ceph 块设备,名称仅做标识。
POOL_NAMES 为存储池配置,格式为 /dev/rbd0=dsspool
IMAGE_NAMES 为 image 配置,格式为 /dev/rbd0=dssimage
CEPH_CONFIG 为 ceph 集群配置文件,默认是/etc/ceph/ceph.conf
初始化 DSS 卷组
dsscmd cv -g data -v ${DSSDATA} -s 2048 -D ${DSS_HOME}
启动 dssserver
nuhop dssserver &
查看 dss 卷组大小
dsscmd lsvg -m G
查看 dss 目录
dsscmd ls -p +data
- 部署 openGauss
openGauss 单机版本部署方式不变,自行编译或者取构建好的包就行。
部署二级制
将 opengauss 内核的二进制包解压,导入环境变量:
export GAUSSHOME=/data/ddes/app/gauss
export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH
export PATH=$GAUSSHOME/bin:$PATH
GAUSSHOME 是解压的二级制目录。下面包含 bin 和 lib
正常打包会把 dss 的dsscmd/dssserver 以及依赖库libdss*.so打包到 openGauss 的软件包里面。 加载了 opengauss 的环境变量后,会优先使用$GAUSSHOME/bin下的 dss 二级制以及依赖库。需要保证上面手动编译出来的 dss 的二进制文件、库文件和$GAUSSHOME下面的一致。
初始化 openGauss:
gs_initdb -d /data/ddes/datanode/dn1 --nodename=ss -w Test@123 --vgname="+data" --enable-dss --dms_url="0:...:1611,1:...:1711" -I 0 --socketpath="UDS:/tmp/.dss_unix_d_socket"
由于单机版本的不支持 dms,在初始化完成后,修改下 postgresql.conf,将ss_enable_dms置为off
启动数据库
gs_ctl start -D /data/ddes/datanode/dn1
openGauss共享存储对接Ceph-单机openGauss-Ceph zhangxb2023-02-18的更多相关文章
- 腾讯云存储专家深度解读基于Ceph对象存储的混合云机制
背景 毫无疑问,乘着云计算发展的东风,Ceph已经是当今最火热的软件定义存储开源项目.如下图所示,它在同一底层平台之上可以对外提供三种存储接口,分别是文件存储.对象存储以及块存储,本文主要关注的是对象 ...
- 二十八. Ceph概述 部署Ceph集群 Ceph块存储
client :192.168.4.10 node1 :192.168.4.11 ndoe2 :192.168.4.12 node3 :192.168.4.13 1.实验环境 准备四台KVM虚 ...
- ceph单机多mon的实现
ceph默认情况下是以主机名来作为mon的识别的,所以这个情况下用部署工具是无法创建多个mon的,这个地方使用手动的方式可以很方便的创建多个mon 1.创建mon的数据存储目录 mkdir /var/ ...
- Ubuntu 14.04 单机安装 CEPH
0.如果先前安装过ceph,则先卸载 sudo stop ceph-all //停止所有CEPH进程 ceph-deploy uninstall [{ceph-node}] //卸载所有ceph程序 ...
- 014.Docker Harbor+Keepalived+LVS+共享存储高可用架构
一 多Harbor高可用介绍 共享后端存储是一种比较标准的方案,将多个Harbor实例共享同一个后端存储,任何一个实例持久化到存储的镜像,都可被其他实例中读取.通过前置LB组件,如Keepalived ...
- 阿里云PolarDB及其共享存储PolarFS技术实现分析(上)
PolarDB是阿里云基于MySQL推出的云原生数据库(Cloud Native Database)产品,通过将数据库中计算和存储分离,多个计算节点访问同一份存储数据的方式来解决目前MySQL数据库存 ...
- Kubernetes创建挂载共享存储的容器
原文链接:https://www.58jb.com/html/135.html 在上一次的Mysql容器中,已经使用过了配置宿主机目录挂载的方式,这样虽然方便但是不够安全:一般都是把数据存储在远程服务 ...
- 阿里云PolarDB及其共享存储PolarFS技术实现分析(下)
上篇介绍了PolarDB数据库及其后端共享存储PolarFS系统的基本架构和组成模块,是最基础的部分.本篇重点分析PolarFS的数据IO流程,元数据更新流程,以及PolarDB数据库节点如何适配Po ...
- Linux架构之NFS共享存储1
第35章 NFS共享存储 35.1 NFS基本概述 NFS是Network File System的缩写及网络文件系统.NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录. 常见的文件 ...
- NFS 共享存储实战
目录 NFS 共享存储实战 一.NFS概述 二.NFS部署 部署NFS客户端backup和web01 统一web.nfs.backup的用户权限 代码部署步骤 三.NFS配置详解 NFS存储小结 四. ...
随机推荐
- 【Azure 应用程序见解】在Docker中运行的ASP.NET Core应用如何开启Application Insights的Profiler Trace呢?
问题描述 使用Azure Application Insights收集AKS中ASP.NET Core应用的监控数据,自动收集请求的Trace情况,用于分析单个请求在应用内部的耗时及处理事件情况,参考 ...
- 【Azure 应用服务】Azure App Service多实例中,出现某一个实例CPU居高不下的情况,如何重启单个实例呢?
问题描述 在使用App Service服务中,当多实例中,其中一个实例出现高CPU,高Memory的情况,为了尽可能少的影响正在运行的应用,需要单独重启某一个实例的情况下,如何手动操作呢? 问题解答 ...
- 代码随想录算法训练营第二十七天| 39. 组合总和 40.组合总和II 131.分割回文串
39. 组合总和 卡哥建议:本题是 集合里元素可以用无数次,那么和组合问题的差别 其实仅在于 startIndex上的控制 题目链接/文章讲解:https://programmercarl.com ...
- 批量删除mysql库中数据
-- 查询构建批量删除表语句(根据数据库名称) select concat('delete from ', TABLE_NAME, ' where org_id = "<条件id> ...
- Dungeon Master 题解
这道题的题意简单来说:就是在3D迷宫里找出口,也就是三维地图,需要用到三维数组 由于本人写代码极易出错,所以在输入三维数组的时候修改了c(column,即列)的值,重复定义了没看到==,后面改成定义成 ...
- es索引数据复制并增加条件和修改目标数据值
es操作同一个索引里数据的复制语法 复制数据: POST _reindex { "source": { "index": "source_index& ...
- C++ 萃取机 Iterator Traits
Iterator Traits 萃取出 Iterator 的性质:迭代器种类.迭代器所指数据类型.迭代器距离类型.迭代器所指数据引用.迭代器所指数据指针.根据不同的迭代器种类可以采取不同的算法策略.但 ...
- vmware虚拟机共享文件夹显示不出来的解决办法
今天在虚拟机里部署测试环境时,遇到一个问题,就是在vmware设置里明明共享了文件夹,但是在CentOS里却看不到共享的文件夹 环境 宿主机:MacBook Pro 虚拟机:vmware 15 虚拟机 ...
- [C++]使用auto遍历判断是否是最后一个元素
一.背景 略 二.代码 for(auto& it:vec){ if(&it==&vec.back()){ cout<<"is the last eleme ...
- Android 开发Day4
我们双击进入activity_main.xml 先将android.support.constraint.ConstraintLayout改为LinerLayout线性的,意思就是水平的的结构 并加入 ...