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. jmeter之-非GUI模式&登录实战

    1.执行测试脚本 jmeter -n -t JMeter分布式测试示例.jmx 2.指定结果文件及日志路径 jmeter -n -t JMeter分布式测试示例.jmx -l report\01-re ...

  2. %d format: a number is required, not str。

    python代码: attr_sql = "INSERT INTO `ym_attribute` (`attr_name`, `type_id`, `attr_value`, `attr_s ...

  3. Openstack组建部署 — Environment of Controller Node

    目录 目录 前文列表 Controller Node Install and configure components Setup DNS Server Setup NTP Server Instal ...

  4. 深入解读 Redis 的持久化

    Redis持久化 Java大猿帅成长手册,GitHub JavaEgg ,N线互联网开发必备技能兵器谱 Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Red ...

  5. 从源码导入到github

    http://stackoverflow.com/questions/4658606/import-existing-source-code-to-github If you've got local ...

  6. 31. Git与Github

    Github介绍 GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub. GitHub于2008年4月10日正式上线,除了Git代码仓库 ...

  7. linux less preserve colors

    less -r grep pattern file.txt --color=always | less -r

  8. Process Hacker源码中的用户态hook的做法

    processhacker-code-5632\1.x\trunk\NProcessHacker\hook.h typedef struct _PH_HOOK { PVOID Function; PV ...

  9. 第二十五天 慵懒的投射在JDBC上的暖阳 —Hibernate的使用(四)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/zwszws/article/details/28493209            6月4日.晴天. ...

  10. centos7 安装python虚拟环境

    本篇主要介绍centos7系统下,安装python3虚拟环境.环境:系统centos7,源代码安装python3,/usr/bin/python3为自己安装的. 安装支持包 yum install p ...