如何使用ubuntu快速部署ceph集群

开发 开发工具
本文主要根据官方文档使用ubuntu14.04部署ceph集群,并且简单介绍其基本操作。

 [[186140]]

一、安装环境

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

  1. lsblk 

输出结果:

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

由于使用ustack公有云申请的云主机,因此磁盘是虚拟的,根磁盘为vda,第二块磁盘为vdb。 所有主机在192.168.0.0/24这个网络,ip为:

  1. 192.168.0.2     node0 
  2. 192.168.0.5     node1 
  3. 192.168.0.7     node2 
  4. 192.168.0.6     node3 

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

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

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

二、安装前工作

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

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

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

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

  1. ssh node0 uptime 
  2. ssh node1 uptime 
  3. ssh node2 uptime 
  4. ssh node3 uptime 

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

2.安装并行ssh命令

在admin节点安装pssh包:

  1. apt-get install -y pssh 

设置以下别名:

  1. alias pssh='parallel-ssh' 
  2. alias pscp='parallel-scp' 

创建host文件列表hosts.txt:

  1. node0 
  2. node1 
  3. node2 
  4. node3 

测试下pssh是否工作:

  1. pssh -h hosts.txt uptime 

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

3.使用国内镜像源

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

  1. root@node0:~# cat /etc/apt/sources.list 
  2. deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse 
  3. deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse 
  4. deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse 
  5. deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse 
  6. deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse 
  7. deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse 
  8. deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse 
  9. deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse 
  10. deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse 
  11. deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse 

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

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

更新源:

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

4.安装ceph-deploy

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

  1. wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add - 
  2. echo deb http://download.ceph.com/debian-{ceph-stable-release}/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list 
  3. # 注意: ceph-stable-release是选择安装的版本,我部署时选择的是jewel! 

# 注意: ceph-stable-release是选择安装的版本,我部署时选择的是jewel!

安装ceph-deploy:

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

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

三、开始安装ceph集群

我们使用ceph-deploy部署,后续操作均在admin节点操作。 首先需要创建工作环境,该环境会保存所有的配置文件:

  1. mkdir my-cluster 
  2. cd my-cluster 

接下分别执行以下步骤:

1.创建集群

  1. ceph-deploy new node1 

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

2.修改默认冗余份数

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

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

  1. osd pool default size = 2 

3.配置网卡和网络

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

4.开始安装ceph

  1. ceph-deploy install node0 node1 node2 node3 

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

  1. ceph-deploy mon create-initial 

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

  1. {cluster-name}.client.admin.keyring 
  2. {cluster-name}.bootstrap-osd.keyring 
  3. {cluster-name}.bootstrap-mds.keyring 
  4. {cluster-name}.bootstrap-rgw.keyring 

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

6.配置osd节点

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

  1. ceph-deploy disk zap node2:vdb 
  2. ceph-deploy disk zap node3:vdb 

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

  1. ceph-deploy osd create node2:vdb 
  2. ceph-deploy osd create node3:vdb 

7.配置admin节点

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

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

8.测试结果运行以下命令:

  1. ceph health 

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

四、扩展节点

增加node1也作为osd节点:

  1. ceph-deploy disk zap node1:vdb 
  2. ceph-deploy osd create node1:vdb 
  3. ceph-deploy osd create node1:vdb 

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

  1. ceph-deploy mds create node1 

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

  1. ceph-deploy rgw create node1 

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

  1. ceph-deploy mon add node2 node3 

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

  1. ceph quorum_status --format json-pretty 

五、块存储rbd使用

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

  1. rbd create foo --size 4096 

查看刚刚创建的实例:

  1. rbd ls 
  2. # foo 

映射实例到虚拟设备中:

  1. rbd map foo 
  2. # /dev/rbd1 

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

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

把实例扩容到8GB:

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

创建实例快照:

  1. rbd snap create test@test-snap 

六、分布式文件系统使用

创建一个文件系统:

  1. ceph osd pool create cephfs_data 128 
  2. ceph osd pool create cephfs_metadata 128 
  3. ceph fs new test_fs cephfs_metadata cephfs_data 
  4. ceph fs ls 
  5. name: test_fs, metadata pool: cephfs_metadata, data pools: [cephfs_data ] 

创建secret文件:

  1. cat ceph.client.admin.keyring 

输出结果:

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

把key值拷贝到secret文件:

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

安装mount ceph插件:

  1. apt-get install ceph-fs-common 

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

  1. 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命令查看是否挂载成功,成功即可像本地文件系统一样操作。

七、对象存储省略。。。

【本文是51CTO专栏作者“付广平”的原创文章,如需转载请通过51CTO获得联系】

戳这里,看该作者更多好文

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2021-01-15 08:07:30

Ceph octopu集群运维

2017-02-22 10:06:11

UbuntuCeph存储

2021-01-26 06:58:03

AnsibleCeph集群运维

2021-08-10 07:27:42

Elasticsear集群开源

2021-01-18 09:08:44

树莓派Ceph开源

2024-10-28 15:40:26

2021-07-20 08:00:00

集群Elasticsear工具

2015-08-03 16:15:53

Docker部署集群

2015-06-04 10:59:25

CephIaaSRGW

2022-08-21 16:50:36

Kubeadm​Kubernetes

2023-09-26 07:34:24

Docker部署依赖包

2016-10-18 13:42:17

UbuntuGNOME Sushi预览

2017-11-13 18:49:58

华为

2021-12-03 11:06:01

VeleroKubernetesLinux

2015-06-16 16:20:40

2014-06-30 09:27:17

UbuntuTomcat集群

2021-11-02 06:58:53

项目Ceph 内网

2021-06-24 08:00:00

开发Hugo工具

2024-07-22 15:49:07

KubernetesRedis

2020-08-25 07:48:17

Kubernetes集群系统
点赞
收藏

51CTO技术栈公众号