ubuntu ceph安装以及使用

1.安装环境

本文主要根据官方文档使用ubuntu14.04安装ceph集群,并且简单熟悉其基本操作。整个集群包括一个admin节点(admin node,主机名为node0)和3个存储节点(主机名分别为node1,node2,node3),所有节点均安装ubuntu 14.04操作系统,除了admin节点,其余三个节点除了根磁盘,还额外配置一个磁盘作为单独的osd:

lsblk

输出结果:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 422K 0 rom
vda 253:0 0 20G 0 disk
├─vda1 253:1 0 19G 0 part /
├─vda2 253:2 0 1K 0 part
└─vda5 253:5 0 1022M 0 part [SWAP]
vdb 253:16 0 50G 0 disk

由于我们使用ustack的公有云申请的云主机,因此磁盘是虚拟的,根磁盘为vda,附加磁盘为vdb。

所有主机均处于192.168.0.0/24这个网络,ip为:

192.168.0.2     node0
192.168.0.5 node1
192.168.0.7 node2
192.168.0.6 node3

我们先设置一个mon节点,两个osd节点,后续我们再增加节点,其架构如图所示:

其中node1作为mon节点,其余node2,node3作为osd节点。

注意:后续操作均使用root账号,如果不使用root账号登录,需要创建一个新的账号,该账号必须具有免密码sudo权限,否则后续使用ceph-deploy时会失败!

2.安装前工作

1.设置admin节点root免密码登录其他节点

首先使用ssh-keygen生成密钥,位于~/.ssh/id_rsa.pub,分别拷贝id_rsa.pub文件到所有节点中,若没有设置root密码,可以先拷贝到管理员账号(安装操作系统时使用的用户,具有sudo权限)home目录,然后使用管理员账号操作:

cat id_rsa.pub | sudo tee -a /root/.ssh/authorized_keys

在node0节点分别测试,是否可以免密码登录其他节点:

ssh node0 uptime
ssh node1 uptime
ssh node2 uptime
ssh node3 uptime

结果应该不需要输入密码。

2.安装并行ssh命令

在admin节点安装pssh包:

apt-get install -y pssh

设置以下别名:

alias pssh='parallel-ssh'
alias pscp='parallel-scp'

创建host文件列表hosts.txt:

node0
node1
node2
node3

测试下pssh是否工作:

pssh -h hosts.txt uptime

如果全部结果都为SUCCESS,则说明正常工作。

3.使用国内镜像源

为了提高访问速度,建议修改为国内镜像源,我们使用的是阿里云镜像源:

root@node0:~# cat /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

拷贝该文件到所有的节点:

pscp -h ~/hosts.txt /etc/apt/sources.list /etc/apt/

更新源:

pssh -h ~/hosts.txt 'apt-get update -y'

4.安装ceph-deploy

以下操作只需要在admin节点执行,首先需要增加ceph源:

wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
echo deb http://download.ceph.com/debian-{ceph-stable-release}/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list

安装ceph-deploy:

sudo apt-get update && sudo apt-get install ceph-deploy

生产环境还需要安装ntp服务,保证集群的时钟一致,这次只是为了测试,故省略这一步。另外由于ubuntu默认防火墙是关的,SELinux也没有安装,故不需要任何操作。使用centos安装时需要打开必要端口。

3.开始安装ceph集群

我们使用ceph-deploy部署,后续操作均在admin节点操作。

首先需要创建工作环境,该环境会保存所有的配置文件:

mkdir my-cluster
cd my-cluster

接下分别执行以下步骤:

1.创建集群

ceph-deploy new node1

其中node1是mon节点,执行该命令会生成ceph配置文件、monitor密钥文件以及日志文件。

2.修改默认冗余份数

由于我们目前只有两个osd节点,而默认的冗余份数是3,因此我们需要设置为2,如果osd节点大于2,则此步骤省略。

修改ceph.conf文件,在[global]下增加以下内容:

osd pool default size = 2

3.配置网卡和网络

如果主机有多余一个网卡,需要设置使用的网卡和网络地址,由于我们主机只有一张网卡,此步骤省略。

4.开始安装ceph

ceph-deploy install node0 node1 node2 node3

5.初始化mon节点和收集密钥信息

ceph-deploy mon create-initial

执行完毕,目录应该有以下文件:

{cluster-name}.client.admin.keyring
{cluster-name}.bootstrap-osd.keyring
{cluster-name}.bootstrap-mds.keyring
{cluster-name}.bootstrap-rgw.keyring

完成以上步骤,安装完成,但还没有配置osd节点。

6.配置osd节点

首先格式化磁盘,注意我们使用的是/dev/vdb

ceph-deploy disk zap node2:vdb
ceph-deploy disk zap node3:vdb

以上步骤会清空磁盘的所有数据。

接下来创建osd,注意由于我们只是测试,故没有使用单独的磁盘作为journal,实际在生产环境下,需要配备SSD分区作为journal,能够最大化IO吞吐量。

ceph-deploy osd create node2:vdb
ceph-deploy osd create node3:vdb

7.配置admin节点

admin节点同时也作为我们的client节点,需要拷贝其他节点的配置文件以及密钥,使得不需要指定mon地址以及用户信息就可以直接管理我们的ceph集群,执行以下命令即可:

ceph-deploy admin node0 node1 node2 node3
sudo chmod +r /etc/ceph/ceph.client.admin.keyring # 保证具有读取的密钥的权限

8.测试结果

运行以下命令:

ceph health

结果若返回active + clean状态,则说明部署成功!

4.扩展节点

增加node1也作为osd节点:

ceph-deploy disk zap node1:vdb
ceph-deploy osd create node1:vdb
ceph-deploy osd create node1:vdb

若需要cephFS支持,即需要提供文件系统支持,需要部署metadata server:

ceph-deploy mds create node1

若需要Ceph Object Gateway支持,即对象存储节点,需要部署一个RGW实例,

ceph-deploy rgw create node1

ceph集群至少需要一个mon节点,为了实现高可用,通常需要设置多个(一般设置为3个)mon节点,我们把node2,node3也作为mon节点:

ceph-deploy mon add node2 node3

当有多个mon节点时,ceph将使用quorum算法进行同步,查看状态:

ceph quorum_status --format json-pretty

5.块存储rbd使用

我们使用默认的rbd池,首先创建一个新的块设备(cinder称为volume,ceph称为image):

rbd create foo --size 4096

查看刚刚创建的实例:

rbd ls
# foo

映射实例到虚拟设备中:

rbd map foo
# /dev/rbd1

创建文件系统并挂载到/mnt:

mkfs.ext4 /dev/rbd1
mount /dev/rbd1 /mnt
df -h
Filesystem 1K-blocks Used Available Use% Mounted on
udev 1014072 12 1014060 1% /dev
tmpfs 204988 808 204180 1% /run
/dev/vda1 19478204 1936088 16529636 11% /
none 4 0 4 0% /sys/fs/cgroup
none 5120 0 5120 0% /run/lock
none 1024932 0 1024932 0% /run/shm
none 102400 0 102400 0% /run/user
/dev/rbd1 3997376 8184 3763096 1% /mnt

把实例扩容到8GB:

rbd resize foo --size 8192
resize2fs /dev/rbd1
df -h
Filesystem Size Used Avail Use% Mounted on
udev 991M 12K 991M 1% /dev
tmpfs 201M 808K 200M 1% /run
/dev/vda1 19G 1.9G 16G 11% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 5.0M 0 5.0M 0% /run/lock
none 1001M 0 1001M 0% /run/shm
none 100M 0 100M 0% /run/user
/dev/rbd1 7.8G 9.0M 7.4G 1% /mnt

创建实例快照:

rbd snap create test@test-snap

6.分布式文件系统使用

创建一个文件系统:

ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 128
ceph fs new test_fs cephfs_metadata cephfs_data
ceph fs ls
# name: test_fs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

创建secret文件:

cat ceph.client.admin.keyring

输出结果:

[client.admin]
key = AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==

把key值拷贝到secret文件:

echo "AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==" >admin.secret

安装mount ceph插件:

apt-get install ceph-fs-common

挂载到本地文件系统/mnt:

sudo mount -t ceph 192.168.0.5:6789:/ /mnt -o name=admin,secretfile=admin.secret

其中192.168.0.5是node1 ip,也即mon节点ip地址。

运行df命令查看是否挂载成功,成功即可像本地文件系统一样操作。

7.对象存储

省略。。。

参考

http://docs.ceph.com/docs/master/

ubuntu ceph集群安装以及简单使用的更多相关文章

  1. ceph集群安装

    所有 Ceph 部署都始于 Ceph 存储集群.一个 Ceph 集群可以包含数千个存储节点,最简系统至少需要一个监视器和两个 OSD 才能做到数据复制.Ceph 文件系统. Ceph 对象存储.和 C ...

  2. kafka集群安装及简单使用

    关于kafka是什么及原理,请参考kafka官方文档的介绍:http://kafka.apache.org/documentation/#introduction ,英文不好的同学可以看这里http: ...

  3. ElasticSearch 集群安装,简单使用

    http://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.html https://gith ...

  4. ubuntu 16.04快速安装ceph集群

    准备工作 假设集群: 选一台作管理机 注意: ceph集群引用hostname,而非ip. 172.17.4.16 test16 #hostname必须是test16 172.17.4.17 test ...

  5. ubuntu 16.04安装ceph集群(双节点)

    Ceph是一个分布式存储,可以提供对象存储.块存储和文件存储,其中对象存储和块存储可以很好地和各大云平台集成.一个Ceph集群中有Monitor节点.MDS节点(可选,用于文件存储).至少两个OSD守 ...

  6. Ubuntu 16.04下使用docker部署ceph集群

    ceph集群docker部署 通过docker可以快速部署小规模Ceph集群的流程,可用于开发测试. 以下的安装流程是通过linux shell来执行的:假设你只有一台机器,装了linux(如Ubun ...

  7. 基于Ubuntu 18.04.5 LTS 部署Ceph集群测试及Ceph RDB的使用。

    1.ceph简介 Ceph在一个统一的系统中独特地提供对象.块和文件存储 1.1 ceph官网架构图 1.2 架构解释   CEPH 对象存储 CEPH 块设备 CEPH 文件系统 RESTful 接 ...

  8. Ubuntu 14.04 部署 CEPH集群

    注:下文的所有操作都在admin节点进行 1.准备三台虚拟机,其中一台作为admin节点,另外两台作为osd节点,并相应地用hostname命令将主机名修改为admin,osd0,osd1,最后修改/ ...

  9. 利用ansible书写playbook在华为云上批量配置管理工具自动化安装ceph集群

    首先在华为云上购买搭建ceph集群所需云主机: 然后购买ceph所需存储磁盘 将购买的磁盘挂载到用来搭建ceph的云主机上 在跳板机上安装ansible 查看ansible版本,检验ansible是否 ...

随机推荐

  1. Android Studio遇到了“No USB devices or running emulators detected”

    我这里遇到的情况是adb interface 错误:未安装,在这个网站: http://adbdriver.com/downloads/ 下载了Automated installation(Unive ...

  2. CJE-Jenkins认证工程师备考指南1-考试简介

    CloudBees公司提供两项认证 Jenkins工程师(CJE)考试 包括60个选择题 测试开源Jenkins的知识. CloudBees 平台工程师(CCJE)考试 包含90个问题: 60个问题测 ...

  3. HTML5: HTML5 介绍

    ylbtech-HTML5: HTML5 介绍 1. 什么是 HTML5?返回顶部   HTML5 是下一代 HTML 标准. HTML,HTML 4.01的上一个版本诞生于1999年.自从那儿以后, ...

  4. <读书笔记>《JS DOM编程艺术》

    2016/03/04 12:00 第一二章:JS的简史以及基本语法 1.P11 2.variable 3.P13    等于 4.P13 5.P14 转义字符 6.关联数组不是一个好习惯 7.P18 ...

  5. 2019ccpc网络赛hdu6705 path

    path 题目传送门 解题思路 先用vector存图,然后将每个vector按照边的权值从小到大排序.将每个顶点作为起点的边里最短的边存入优先队列.对于存入优先队列的信息,应有边起点,终点,是其起点的 ...

  6. centos 7 安装mysql5.7

    1.进入到要存放安装包的位置 cd /home/lnmp 2.查看系统中是否已安装 MySQL 服务,以下提供两种方式: rpm -qa | grep mysql yum list installed ...

  7. cmd 运行 java 文件

    在安装好jdk 并配置好环境变量的情况下 原因一:没有指定class文件的路径 例如HI是变异好的class文件,并且在d:/RJAZB里面 如果写成 Java HI  则会报错 正确做法 java ...

  8. Idea添加Tomcat

    1.菜单栏Run--Edit Configurations: 点击Defaults查看有没有Tomcat Server,没有的话点左上角+,有的话进入步骤2,没有的话进入步骤3. 2.点击左侧Tomc ...

  9. el-form-item内容过多,及弹窗框宽度属性show-overflow-tooltip设置

    内容过多: :show-overflow-tooltip=true 宽度属性设置: .el-tooltip__popper{ max-width:30% }

  10. 在知乎上看到的几个关于C的奇淫技巧

    有一个鲜为人知的运算符叫”趋向于”, 写作“-->”.比如说如果要实现一个倒数的程序,我们可以定义一个变量x,然后让它趋向与0: 输出: 然后我们把 "x-->0" 换 ...