当前位置:首页 » Linux技术知识

CEPH 分布式存储部署(Ubuntu 14.04)

2017-08-03 16:42 本站整理 浏览(3)

1. 环境准备

1.1 环境架构图

Paste_Image.png

  • CEPH架构包含如下几个节点角色
    • ADMIN Node:管理节点
    • MON Node:监控节点/元数据MDS节点
    • OSD Node:存储节点

OS:Ubuntu 14.04.04

OSD节点磁盘结构

root@C01:~# lsblk
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                    8:0    0    16G  0 disk 
├─sda1                      8:1    0   243M  0 part /boot
├─sda2                      8:2    0     1K  0 part 
└─sda5                      8:5    0  15.8G  0 part 
  ├─C01--vg-root (dm-0)   252:0    0  13.8G  0 lvm  /
  └─C01--vg-swap_1 (dm-1) 252:1    0     2G  0 lvm  [SWAP]
sdb                            8:16   0    20G  0 disk                                          #OSD Disk
sr0                             11:0    1   579M  0 rom

OSD节点网络结构

  • Eth0:Public Network
  • Eth1:Cluster Network

1.2 环境准备

1.2.1所有节点操作设置root免密码登录

       sudo visudo -f /etc/sudoers

增加如下行,skyrim为用户名
skyrim ALL=(ALL) NOPASSWD:ALL

1.2.2 所有节点操作修改host文件

所有节点增加如下内容

192.168.1.40    ADM
192.168.1.41    MON
192.168.1.60    N01
192.168.1.61    N02
192.168.1.62    N03

1.2.3 ADMIN节点操作安装pssh工具

  apt-get install -y pssh
  • 设置以下别名:
   alias pssh='parallel-ssh'
    alias pscp='parallel-scp'
  • 创建host文件列表hosts.txt:

    MON
    N01
    N02
    N03
    N04

1.2.4 所有节点操作创建ssh信任

  • 所有节点运行如下命令
   ssh-keygen
  • ADMIN节点复制public key到其它节点需在普通用户权限下执行,在对话窗口输入yes,然后输入对端用户密码。

      ssh-copy-id mon
      ssh-copy-id n01
      ssh-copy-id n02
      ssh-copy-id n03
  • 测试方式通过普通用户执行
pssh -h hosts uptime

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

1.2.5 ADMIN操作修改ububtu apt源

root@C01:~#nano /etc/apt/sources.list
  • 增加网易APT源
    deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
    deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
    deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
    deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
    deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
    deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
    deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
    deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
    deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
    deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse

复制sources.list到其它节点

pscp -h hosts.txt /etc/apt/sources.list /etc/apt/
  • 刷新源
    pssh -h hosts `sudo apt-get update`
    如果全部结果都为SUCCESS,则说明正常工作。

1.3 安装ceph-deploy

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

安装ceph apt key

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-stable-release是选择安装的版本,我部署时选择的是jewel!最新版本为infernalis!同时由于CFW的问题,因此我选择的是网易的国内镜像

echo deb http://mirrors.163.com/ceph/debian-jewel/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
  • 安装ceph-deploy:
sudo apt-get update && sudo apt-get install -y ceph-deploy

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

2.开始安装ceph集群

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

mkdir my-cluster
cd my-cluster

2.1 创建集群

ceph-deploy new mon

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

2.2 修改默认冗余份数(此步骤只有在小于3个OSD节点时需要修改)

默认的冗余份数是3,如果是2节点需要设置为2,如果osd节点大于2,则此步骤省略。

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

osd pool default size = 2

2.3 配置网卡和网络(OSD节点单网卡请忽略

OSD节点是双网卡,因此需要设置使用的网卡和网络地址
修改ceph.conf文件,在[global]下增加以下内容:

Public Network = 192.168.1.0/24
Cluster Network = 10.10.100.0/24

2.4 开始安装ceph

注:因为CFW的问题,管理节点ceph-Deploy前Ceph镜像源修改非常重要,这里采用了网易镜像

    export CEPH_DEPLOY_REPO_URL=http://mirrors.163.com/ceph/debian-jewel/
    export CEPH_DEPLOY_GPG_URL=http://mirrors.163.com/ceph/keys/release.asc

在所有节点开始安装ceph

ceph-deploy install adm mon n01 n02 n03

2.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节点。

2.6 配置osd节点

首先再次确认磁盘结构

OSD节点磁盘结构

root@C01:~# lsblk
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                    8:0    0    16G  0 disk 
├─sda1                      8:1    0   243M  0 part /boot
├─sda2                      8:2    0     1K  0 part 
└─sda5                      8:5    0  15.8G  0 part 
  ├─C01--vg-root (dm-0)   252:0    0  13.8G  0 lvm  /
  └─C01--vg-swap_1 (dm-1) 252:1    0     2G  0 lvm  [SWAP]
sdb                            8:16   0    20G  0 disk                                          #OSD Disk
sr0                             11:0    1   579M  0 rom

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

ceph-deploy disk zap n01:sdb
ceph-deploy disk zap n02:sdb
ceph-deploy disk zap n03:sdb

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

ceph-deploy osd create n01:sdb
ceph-deploy osd create n02:sdb
ceph-deploy osd create n03:sdb

2.7 配置admin节点

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

ceph-deploy admin adm mon n01 n02 n03
sudo chmod +r /etc/ceph/ceph.client.admin.keyring # 保证具有读取的密钥的权限

2.8 测试结果

运行以下命令:

ceph health

确认返回HEALTH_OK状态

ceph status

结果返回如下:

    cluster 2a5b2748-6b23-4609-9614-1e838e11597c
     health HEALTH_OK
     monmap e1: 1 mons at {mon=192.168.1.41:6789/0}
            election epoch 3, quorum 0 mon
     osdmap e16: 3 osds: 3 up, 3 in
            flags sortbitwise,require_jewel_osds
      pgmap v52: 64 pgs, 1 pools, 57 bytes data, 4 objects
            101 MB used, 45945 MB / 46046 MB avail
                  64 active+clean

确认返回active+clean状态

ceph osd tree

确认所有osd节点up状态

作者:无语城市
链接:http://www.jianshu.com/p/ed4de0267275
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。