ARM环境下centos 7源码编译安装ceph-v14.0.1教程(待修改)
一、环境介绍
IP | hostname | IOS | |
10.2.152.131 | node-01 | centos 7.4 | admin |
10.2.152.132 | node-02 | centos 7.4 | node |
二、安装CMake-v3.12.4
下载源码
$: wget https://github.com/Kitware/CMake/archive/v3.12.4.tar.gz
解压
tar zxf v3.12.4.tar.gz
编译安装
$: cd CMake-3.12.4
$: ./bootstrap
$: make && make install
检查
$: cmake --version
三、yum安装依赖库
$:yum install -y libffi-devel boost cryptopp-devel fcgi-devel libatomic_op-devel libedit-devel boost-devel fuse-devel libtool libuuid-devel libblkid-devel keyutils-libs-devel cryptopp-devel fcgi-devel libcurl-devel expat-devel gperftools-devel libedit-devel libatomic_ops-devel snappy-devel libaio-devel xfsprogs-devel libudev-devel libcrypto++-dev libcrypto++-utils$:yum install -y fuse fuse-devel
四、安装leveldb-1.20
下载地址:
https://github.com/google/leveldb/releases
解压并编译
$: tar -zxvf leveldb-1.20.tar.gz -C /usr/local/
$: cd /usr/local/leveldb-1.20
$: make
将新编译的动态库链接到原来的动态库
$:cd /usr/local/levedb-1.20/out-shared/
$:cp libleveldb.so* /usr/lib64/$:cd /usr/lib64
$:rm libleveldb.so libleveldb.so.1
$:ln -s libleveldb.so.1.20 libleveldb.so
$:ln -s libleveldb.so.1.20 libleveldb.so.1
替换头文件
$: cd /usr/local/leveldb-1.20/include
$: cp -r leveldb/ /usr/include/
五、安装gcc-8.2.0
$: wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.gz
$: tar zxf gcc-8.2.0.tar.gz
$: cd gcc-8.2.0
$: ./contrib/download_prerequisites
$: mkdir gcc-build-8.2.0
$: cd gcc-build-8.2.0
$: ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib参数解释:–enable-checking=release 增加一些检查,也可以–disable-checking生成的编译器在编译过程中不做额外检查–enable-languages=c,c++ 你要让你的gcc支持的编程语言–disable-multilib 取消多目标库编译(取消32位库编译)
$: make && make install
替换gcc的动态库
$: cp /usr/local/lib64/libstdc++.so.6.0.25 /usr/lib64
$: rm -rf /usr/lib64/libstdc++.so.6
$: ln -s /usr/lib64/libstdc++.so.6.0.25 /usr/lib64/libstdc++.so.6
替换yum安装的gcc
$: rm -rf /usr/bin/gcc
$: rm -rf /usr/bin/g++
$: rm -rf /usr/bin/c++
$: rm -rf /usr/bin/cc
$:ln -s /usr/local/bin/gcc /usr/bin/gcc
$:ln -s /usr/local/bin/gcc /usr/bin/cc
$:ln -s /usr/local/bin/g++ /usr/bin/g++
$:ln -s /usr/local/bin/c++ /usr/bin/c++
六、源码安装ceph-v11.2.1
(1)克隆ceph项目
源码包下载:http://download.ceph.com/tarballs/
$:git clone https://github.com/ceph/ceph.git
(2)安装依赖
$:cd ceph
$:./install-deps.sh
(3)运行脚本
$:./do_cmake.sh
(4)编译安装
$: cd build$: make && make install
(5)检查
$:ceph -v
ERROR1:
用find /* -name 'rados*' 发现在/usr/lib/python2.7/site-packages/下有 rados.so 和rados-0-py2.7.egg-info两个文件
拷贝这两个文件到/usr/lib/python2.7/dist-packages/下。
cp /usr/local/lib64/python2.7/site-packages/rados.so /usr/lib/python2.7/site-packages/
cp /usr/local/lib64/python2.7/site-packages/rados-2.0.0-py2.7.egg-info /usr/lib/python2.7/site-packages/ -r
cp /usr/local/lib64/librados.so.3 /usr/lib64/
ERROR2:
cp /usr/local/lib/python2.7/site-packages/* /usr/lib64/python2.7/ -r
七、配置ceph集群准备工作
(1)实现ssh无密码登录
Master节点上:$: ssh-keygen -t rsa //一路回车即可$:ssh-copy-id zc@10.2.152.132 //传递master上的秘钥到node上验证:
$:ssh root@10.2.152.132
(2)修改/etc/hosts文件(master && node)
$: cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain610.2.152.131 node-01
10.2.152.132 node-02
(3)实现NTP时间同步
$:yum install ntp ntpdate ntp-doc
$:ntpdate -u ntp1.aliyun.com
(4)关闭防火墙和SElinux(master && node)
关闭防火墙
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用: systemctl disable firewalld
开机启用: systemctl enable firewalld
关闭Selinux
查看$: getenforceDisabled表示关闭;Enforcing表示开启$:/usr/sbin/sestatus -vSELinux status: disabled
临时关闭setenforce 1 //设置SELinux 成为enforcing模式 (开)setenforce 0 //设置SELinux 成为permissive模式(关)
永久关闭$:vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled 设置后需要重启才能生效
八、配置ceph集群
节点关系示意图:node1作为监控和管理节点,node2作为osd节点,其关系如下图所示:
启用Mon节点(node-01)
(1)在/etc和/var/log目录下创建ceph目录
$:mkdir -p /etc/ceph/
$:mkdir -p /var/log/ceph
(2)给集群分配惟一 ID (即 fsid )
$:uuidgen
(3)在/etc/ceph/下,创建 Ceph 配置文件, Ceph 默认使用 ceph.conf ,其中的 ceph 是集群名字
$:cd /etc/ceph
$:touch ceph.conf
(4)把此UUID 写入 Ceph 配置文件
将创建的unique ID值写入到ceph.conf配置文件中;
fsid = e6477d75-ce6f-495e-aec6-ce3d975608ee
在ceph.conf中填写monitor节点成员名称和ip地址;
mon initial members = node-01
mon host = 10.2.152.131
$:cat ceph.conf [global]
fsid = 09127e36-c9dd-4232-970e-afccea6bc8c8
mon initial members = node-01
mon host = 10.2.152.131
(5)创建monitor keying
$:ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
$: ls /tmp/ceph.mon.keyring
/tmp/ceph.mon.keyring
$: cat /tmp/ceph.mon.keyring
[mon.]key = AQDKxg1cvM1QDBAAma0YiMKFCtHtRdRKF6E7Ag==caps mon = "allow *"
(6)生成管理员秘钥环,创建client.admin keyring
$: ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow'
creating /etc/ceph/ceph.client.admin.keyring$: ls /etc/ceph/
ceph.client.admin.keyring ceph.conf$: cat /etc/ceph/ceph.client.admin.keyring
[client.admin]key = AQBZxw1c4hMBKhAA5maRVeKl/43gNhbALzm7Ng==caps mds = "allow"caps mon = "allow *"caps osd = "allow *"
(7)将client.admin的key添加到monitor的keyring中
$: ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
(8)用规划好的主机名、对应 IP 地址、和 FSID 生成一个监视器图,并保存为 /tmp/monmap
monmaptool --create --add {hostname} {ip-address} --fsid {uuid} /tmp/monmap
例如:
$:monmaptool --create --add node-01 10.2.152.131 --fsid 09127e36-c9dd-4232-970e-afccea6bc8c8 /tmp/monmap
(9)创建monitor工作目录
sudo mkdir /var/lib/ceph/mon/{cluster-name}-{hostname}
例如:$:mkdir -p /var/lib/ceph/mon/ceph-node-01
(10)仔细斟酌 Ceph 配置文件,公共的全局配置包括这些:
$: cat ceph.conf [global]
fsid = 09127e36-c9dd-4232-970e-afccea6bc8c8
mon initial members = node-01
mon host = 10.2.152.131
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
public network = 10.2.152.0/24
注:若将cephx改为none是为了方便搭建测试环境,关闭了ceph的安全认证,建议在实际运行环境之中开启。
(11)用监视器图和密钥环组装守护进程所需的初始数据
ceph-mon [--cluster {cluster-name}] --mkfs -i {hostname} --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring例如:
$:ceph-mon --mkfs -i node-01 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
(12)建一个空文件 done ,表示监视器已创建、可以启动了
$: touch /var/lib/ceph/mon/ceph-node-01/done
$: touch /var/lib/ceph/mon/ceph-node-01/sysvinit启动监视器。
在 Ubuntu 上用 Upstart :$:sudo ceph-mon --id=slave1 [cluster={cluster-name}]
要使此守护进程开机自启,需要创建两个空文件,像这样:$:sudo touch /var/lib/ceph/mon/{cluster-name}-{hostname}/upstart
例如:$:sudo touch /var/lib/ceph/mon/ceph-slave1/upstart在 Debian/CentOS/RHEL 上用 sysvinit :$:/etc/init.d/ceph start mon.node-01
(13)确认下集群的运行状态
$:ceph -scluster:id: f42905e0-cd33-4155-a61b-4b9c4725e0f4health: HEALTH_OKservices:mon: 1 daemons, quorum node-01 (age 48s)mgr: no daemons activeosd: 0 osds: 0 up, 0 indata:pools: 0 pools, 0 pgsobjects: 0 objects, 0 Busage: 0 B used, 0 B / 0 B availpgs:
编辑CrushMap,启用osd节点
ARM环境下centos 7源码编译安装ceph-v14.0.1教程(待修改)相关推荐
- 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)...
写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...
- Centos 7 源码编译安装 mysql
文章目录 Centos 7 源码编译安装 mysql 1. 卸载 centos 自带的 mariadb 2. 下载 mysql 3. 安装 mysql 3.1 解压压缩包 3.1.1 自定义解压安装目 ...
- opencv4.0在linux下编译,Ubuntu 18.04源码编译安装OpenCV 4.0步骤
Ubuntu 18.04下标准常规安装方法安装的OpenCV版本比较低,想尝鲜使用4.0版本,只好源码安装. 安装环境 OS:Ubuntu 18.04 64 bit 显卡:NVidia GTX 108 ...
- 如何在ARM开发板上从源码编译安装OpenCV和OpenCV contrib
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文主要介绍如何在ARM开发板上从源码编译安装OpenCV和OpenCV contrib. OpenC ...
- 麒麟Kylin V10 桌面版源码编译安装Qt5.6.0
麒麟Kylin V10 桌面版源码编译安装Qt5.6.0 硬件环境:PHYTIUM FT-2000/4开发板 系统环境:Kylin V10 Desktop 系统 安装包下载:自己所需版本 解压 相关依 ...
- LNMP架构环境搭建之mysql源码编译安装
Mysql MySQL是一个开源的数据库,在互联网行业应用的很广泛,下面来记录一下从源码编译安装的步骤,当然,MySQL也有其他安装方式,比如,使用yum下载安装rpm包,或者二进制方式安装,如果机器 ...
- Ubuntu 16.04源码编译安装Apache 2.4.25教程
这篇文章主要为大家详细介绍了Ubuntu 16.04源码编译安装Apache 2.4.25,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文为大家介绍了Ubuntu 16.04源码编译安装Apa ...
- centos下LAMP之源码编译安装httpd
1 最好先安装组件 [root@localhost ~]# yum groupinstall additional development [root@localhost ~]# yum groupi ...
- CentOS 7 源码编译安装 PostgreSQL 11.2
环境 系统版本 Centos7.6 工具:xshell6 PostgreSql: postgresql-11.2.tar.gz 安装部署 安装前准备 官网下载PostgreSQL 11.2源码地址:h ...
最新文章
- “大型票务系统”和“实物电商系统”的数据库选型
- 磁盘剩余空间策略_如何无损扩展C盘空间大小,这一招足够!
- Spark:如何替换sc.parallelize(List(item1,item2)).collect().foreach(row={})为并行?
- 【MySQL】Mysql索引优化与底层数据结构深入剖析 - 笔记
- 工作133:nexttick的使用
- python字符串转义序列_Python | 忽略字符串中的转义序列
- 彭荣新:喜马拉雅自研网关架构演进过程
- ASI进行POST网络请求
- Zen Coding Visual Studio plugin 配置
- Django update用法
- 白话理解傅里叶变换原理(时域频域)
- 【PhotoShop基础A篇】磨皮/图层/液化
- 手把手制作前端图标字体
- 益企工程云:成长型建筑企业专属的工程项目管理软件
- switch调试软件+金手指
- 打印网页去掉不相关信息
- 复制 python cache 文件到预训练模型
- 程序员:孤独的人是可耻的!
- 希捷Exos 18T硬盘性能怎么样,开箱测评
- 计算机上网记录怎么清除,如何清除浏览器缓存及上网痕迹 清除浏览器上网痕迹的方法...
热门文章
- 一天掌握Python基础,一篇文章就够了 #全教程 #无遗漏 #知识点 #小项目
- Unity之UGUI的学习(六):Toggle(开关)
- Vim怎么跳到最后一行和首行
- 基于SVD法求解激光跟踪仪坐标系转换关系
- [附源码]计算机毕业设计springboot农产品销售网站
- 用mysql查询女生中最高分_mySql数据库基础
- 设置linux系统时间为北京时间
- 解决“Fence桌面软件无法删除”的麻烦
- 16电口8个百兆SFP插糟+4个千兆SPF插糟(光电可选 )工业交换机
- python获取指定目录下的所有指定后缀的文件名