ceph集群部署+基于ceph的对象存储部署方案

一 环境准备:

  • 注:此标题下的操作所有节点均需配置
  1. 主机名和hosts文件设置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #零时修改主机名:
    hostname ceph-node1|ceph-node2|ceph-node3
    #重启生效
    vim /etc/sysconfig/network
    HOSTNAME=ceph-node1|ceph-node2|ceph-node3
    #修改hosts文件配置映射关系
    vim /etc/hosts
    #ceph集群
    192.168.1.11 ceph-node1
    192.168.1.12 ceph-node2
    192.168.1.13 ceph-node3
  2. ssh免密登录
    1
    2
    3
    4
    5
    6
    7
    8
    #需要配置ceph-node1上配置免密登录到ceph-node2、ceph-node3
    #服务器A:ssh客户端,服务器B:ssh服务端。在A机器上使用ssh 命令登录B机器
    #在A机器上生成公钥加秘钥对
    ssh-keygen -t rsa
    #将公钥id_rsa.pub内容加到服务器端的~/.ssh/authorized_keys 即可
    #所以本机上的authorized_keys文件中的公钥信息即是有哪些机器可以登录本机
    #如无 authorized_keys 文件,可自行创建,但需要将权限改成600
    ssh ceph-node1
  3. 安全设置
    1
    2
    3
    4
    5
    6
    7
    #设置selinux临时状态为permissive
    setenforce 0
    #设置selinux重启默认关闭
    sed -i 's@^\(SELINUX=\).*@\1disabled@' /etc/sysconfig/selinux
    #关闭防火墙
    service firewalld status
    sudo service firewalld stop
  4. ntp时间同步
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #1. 安装chrony
    sudo yum install chrony -y
    #2. 修改配置文件/etc/chrony.conf,增加如下配置
    server ntp1.aliyun.com iburst
    server ntp2.aliyun.com iburst
    server time1.cloud.tencent.com iburst
    server time2.cloud.tencent.com iburst
    #3. 启动chrony
    systemctl enable chronyd.service
    systemctl restart chronyd.service
    systemctl status chronyd.service
    #4. 常用命令
    #查看系统时间信息
    timedatectl
    #查看时间同步源
    chronyc sources -v
    #查看时间同步源状态:
    chronyc sourcestats -v
    #校准时间服务器:
    chronyc tracking

二 ceph集群安装

  1. 配置python环境
    所有节点均需配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #对于解压的源码进行编译,所以首先设置编译环境: gcc
    yum install -y gcc gcc-c++
    #Perl库,包括 perl 兼容的正则表达式库
    yum install -y pcre pcre-devel
    #zlib库提供了很多种压缩和解压缩的方式
    yum install -y zlib zlib-devel
    #OpenSSL 是一个强大的安全套接字层密码库
    yum install -y openssl openssl-devel
    sudo yum install -y bzip2-devel ncurses-devel sqlite-devel gdbm-devel xz-devel tk-devel readline-devel

    wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz
    cd Python-3.6.8/
    ./configure --prefix=/usr/local/python3
    sudo make && sudo make install

    sudo ln -snf /usr/local/python3/bin/python3 /usr/bin/python
    sudo ln -snf /usr/local/python3/bin/python3 /usr/bin/python3
    sudo ln -snf /usr/local/python3/bin/pip3 /usr/bin/pip3

    vim /usr/bin/yum
    #! /usr/bin/python修改为#! /usr/bin/python2
    vim /usr/libexec/urlgrabber-ext-down
    #! /usr/bin/python 修改为#! /usr/bin/python2

    sudo yum install -y python-setuptools
    sudo pip3 install ceph-deploy
    sudo pip3 install pecan werkzeug -i https://pypi.tuna.tsinghua.edu.cn/simple
    #对象存储测试
    sudo pip install --upgrade python-swiftclient -i https://pypi.tuna.tsinghua.edu.cn/simple
  2. yum源环境修改
    所有节点均需配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    cat << EOF > /etc/yum.repos.d/ceph.repo
    [Ceph-noarch]
    name=Ceph noarch packages
    baseurl=https://download.ceph.com/rpm-octopus/el7/noarch/
    enabled=1
    gpgcheck=1
    type=rpm-md
    gpgkey=https://download.ceph.com/keys/release.asc
    priority=1
    EOF
    #若官方源太慢可换成阿里源
    https://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch/
    vim /etc/yum.repos.d/ceph.repo
    :%s/https\:\/\/download\.ceph\.com/https\:\/\/mirrors\.aliyun\.com/g
    :%s/http\:\/\/download\.ceph\.com/http\:\/\/mirrors\.aliyun\.com/g
    #因为Ceph包会依赖epel仓库的源包,会解决依赖关系,因此需要在每台主机上安装epel-release包
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    sudo yum update -y
    sudo yum install epel-release -y
    sudo yum install -y ceph-deploy #deploy只需要安装在一台主机上
    sudo yum -y install ceph-radosgw ceph
  3. ceph集群配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
       #创建初始化目录 所有节点均需配置
    mkdir /data/ceph-cluster/ && cd /data/ceph-cluster/

    #创建命名为ceph集群
    #ceph-deploy命令只需在安装有ceph-deploy的主机上执行,命令通过ssh免密认证操作所有节点
    ceph-deploy new ceph-node1 ceph-node2 ceph-node3
    cat ceph.conf
    [global]
    fsid = 76b533c8-f23a-46fb-8fd8-70c33c36cb3d
    mon_initial_members = ceph-node1, ceph-node2, ceph-node3
    mon_host = 192.168.1.11,192.168.1.12,192.168.1.13
    auth_cluster_required = cephx
    auth_service_required = cephx
    auth_client_required = cephx
    public network = 172.16.1.0/24
    osd_pool_default_size = 2 #配置文件的默认副本数从3改成2,这样只有两个osd也能达到active+clean状态,把下面这行加入到[global]段(可选配置)
    ceph-deploy install ceph-node1 ceph-node2 ceph-node3
    #如需指定版本安装或者换源,需在deploy命令里指定,如下
    #ceph-deploy install --repo-url https://download.ceph.com/rpm-15.2.8/el7/ ceph-node1 ceph-node2 ceph-node3
    #部署mon
    ceph-deploy mon create-initial
    #推送配置文件到各Ceph节点
    ceph-deploy admin ceph-node1 ceph-node2 ceph-node3
    ceph-deploy mgr create ceph-node1 ceph-node2 ceph-node3
    #初始化OSD,sdb盘需申请,申请后无需格式化和挂载操作
    ceph-deploy osd create --data /dev/sdb ceph-node1
    ceph-deploy osd create --data /dev/sdb ceph-node2
    ceph-deploy osd create --data /dev/sdb ceph-node3
    #dashboard安装
    sudo yum install -y ceph-mgr-dashboard
    sudo yum install -y python3-routes python3-cherrypy python3-jwt
    #注:centos7 不提供这三个包,需更新至centos8
    #检查ceph状态
    sudo ceph -s

三 配置对象存储

1
2
3
4
5
6
7
8
9
10
11
#默认Ceph没有安装rgw,需要安装rgw,在所有rgw节点上安装
#ceph-deploy命令只需在安装有ceph-deploy的主机上执行,命令通过ssh免密认证操作所有节点
ceph-deploy install --rgw ceph-node1 ceph-node2 ceph-node3
#创建rgw实例
ceph-deploy rgw create ceph-node1 ceph-node2 ceph-node3
systemctl status ceph-radosgw@rgw.ceph-node*.service
#
sudo systemctl restart ceph-radosgw@rgw.ceph-node*.service
#推送配置文件到ceph对象网关节点
ceph-deploy --overwrite-conf config push <gateway-node> [<other-nodes>]
#重启对象网关使配置生效

四 对象存储性能测试

1
2
3
4
5
6
7
wget https://github.com/intel-cloud/cosbench/releases/download/v0.4.2.c4/0.4.2.c4.zip
sudo yum install -y unzip
yum install java-1.7.0-openjdk nmap-ncat
unset http_proxy
ceph的对象存储支持S3和swift两种接口
sudo radosgw-admin user create --uid="rgwuser" --display-name="This is first rgw test user"
sudo radosgw-admin subuser create --uid=rgwuser --subuser=rgwuser:swift --access=full

五 参考资料

ceph官方文档
Ceph Dashboard全功能安装集成