• Ceph分布式集群安装配置


    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:https://www.captainai.net/dongkelun

    前言

    记录Ceph分布式集群安装配置过程及问题解决

    1. 服务器环境说明

    主机名角色IP地址
    ceph1ceph-deploy、mon、mgr、osd192.168.44.128
    ceph2mon、mgr、osd192.168.44.129
    ceph3mon、mgr、osd192.168.44.130

    要保证每台机器能连接外网

    2. 服务器环境准备

    2.1 配置yum源

    wget -qO /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    wget -qO /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    
    vi /etc/yum.repos.d/ceph.repo
    [ceph]
    name=ceph
    baseurl=https://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
    gpgcheck=0
    
    [ceph-noarch]
    name=cephnoarch
    baseurl=https://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
    gpgcheck=0
    

    2.2 同步服务器时间

    2.3 配置主机名解析

    cat >> /etc/hosts << EOF
    192.168.44.128 ceph1.bigdata.com ceph1
    192.168.44.129 ceph2.bigdata.com ceph2
    192.168.44.130 ceph3.bigdata.com ceph3
    EOF
    

    2.4 关闭防火墙和selinux

    2.4.1 防火墙
    service firewalld stop
    
    2.4.2 selinux

    临时禁用

    setenforce 0
    

    永久禁用(重启机器)

    vim /etc/sysconfig/selinux
    将SELINUX改为disabled
    
    SELINUX=disabled
    

    2.5 配置免密认证

    3. 搭建Ceph集群

    3.1 安装ceph-deploy工具

    ceph-deploy工具只需要安装在ceph1节点上,命令如下:

    yum -y install python-setuptools ceph-deploy ceph
    

    安装ceph包的目的是为了以后能在ceph-admin节点中查看ceph集群的状态

    在ceph1节点上创建集群的工作目录,该目录会存放ceph-deploy指令行执时生成的日志和秘钥信息等:

    mkdir -p /usr/local/ceph-cluster
    

    3.2 初始化集群

    在ceph1节点上进入/usr/local/ceph-cluster目录,执行ceph-deploy命令初始化集群设置,初始化要求指定节点作为mon,命令如下:

    ceph-deploy new --public-network 192.168.44.0/24 --cluster-network 192.168.44.0/24 ceph1
    

    –public-network代表ceph集群对外提供调用的网络,–cluster-network代表用于集群内部> 通信的网络。一般情况下ceph集群中需要有两个网络,这样可以保证ceph集群的安全性。由> > 于此次搭建的环境中只有一个网络,所以此处两个配置项填写同一个网段的地址。

    上面的命令执行完成后会将ceph1节点配置为mon,并且会在/usr/local/ceph-cluster目录下生成集群的配置文件、key文件(用于身份验证)、日志文件等:

    [root@ceph1 ceph-cluster]# ll
    total 128
    -rw-r--r-- 1 root root   266 Jan  7 14:33 ceph.conf
    -rw-r--r-- 1 root root 90678 Jan  7 15:00 ceph-deploy-ceph.log
    -rw------- 1 root root    73 Jan  7 14:33 ceph.mon.keyring
    

    配置文件ceph.conf内容如下:

    [global]
    fsid = f528b0f0-b93e-427f-a2da-4a3ac8cdca18
    public_network = 192.168.44.0/24
    cluster_network = 192.168.44.0/24
    mon_initial_members = ceph1
    mon_host = 192.168.44.128
    auth_cluster_required = cephx
    auth_service_required = cephx
    auth_client_required = cephx
    

    3.3 安装ceph组件

    接下来需要在各个osd节点安装ceph组件包:

    yum -y install ceph ceph-mon ceph-mgr ceph-mds ceph-radosgw
    

    3.4 初始化 mon

    在初始化集群的过程中已经指定了mon的节点,现在需要对mon进行初始化,在ceph1节点的/usr/local/ceph-cluster目录下执行如下命令进行初始化:

    ceph-deploy mon create-initial
    

    初始化完成后,会在当前目录下生成各个组件需要的key文件:

    [root@ceph1 ceph-cluster]# ll
    total 128
    -rw------- 1 root root    71 Jan  7 14:37 ceph.bootstrap-mds.keyring
    -rw------- 1 root root    71 Jan  7 14:37 ceph.bootstrap-mgr.keyring
    -rw------- 1 root root    71 Jan  7 14:37 ceph.bootstrap-osd.keyring
    -rw------- 1 root root    71 Jan  7 14:37 ceph.bootstrap-rgw.keyring
    -rw------- 1 root root    63 Jan  7 14:37 ceph.client.admin.keyring
    -rw-r--r-- 1 root root   266 Jan  7 14:33 ceph.conf
    -rw-r--r-- 1 root root 90678 Jan  7 15:00 ceph-deploy-ceph.log
    -rw------- 1 root root    73 Jan  7 14:33 ceph.mon.keyring
    

    接下来将admin用户的key文件拷贝给各个osd节点,如果为了在ceph1节点中使用ceph命令查看集群状态,那么也需要将key文件拷贝给ceph1节点(ceph1节点需要安装ceph包)

    ceph-deploy admin ceph1 ceph2 ceph3
    

    拷贝完成后执行ceph -s命令可以查看到当前集群的状态:

    [root@ceph1 ceph-cluster]# ceph -s
      ceph -s
      cluster:
        id:     38ea5f1d-d0bf-447e-9ef4-34def8e8db78
        health: HEALTH_OK
    
      services:
        mon: 1 daemons, quorum ceph1
        mgr: no daemons active
        osd: 0 osds: 0 up, 0 in
    
      data:
        pools:   0 pools, 0 pgs
        objects: 0 objects, 0B
        usage:   0B used, 0B / 0B avail
        pgs:
    

    可以看到当前集群中已经有一个mon节点。

    3.5 安装mgr进程

    配置ceph1节点作为mgr,在ceph1节点的/usr/local/ceph-cluster目录下执行如下命令:

    ceph-deploy mgr create ceph1
    

    查看集群状态,可以看到启动了一个mgr daemon:

    [root@ceph1 ceph-cluster]# ceph -s
      cluster:
        id:     38ea5f1d-d0bf-447e-9ef4-34def8e8db78
        health: HEALTH_OK
    
      services:
        mon: 1 daemons, quorum ceph1
        mgr: ceph1(active)
        osd: 0 osds: 0 up, 0 in
    
      data:
        pools:   0 pools, 0 pgs
        objects: 0 objects, 0B
        usage:   0B used, 0B / 0B avail
        pgs:
    

    3.6 部署OSD节点

    当前环境中,每个OSD节点都有一块未分配的空的sdb磁盘 ,信息如下:

    [root@ceph-node1 ~]# lsblk
    NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda               8:0    0   20G  0 disk 
    ├─sda1            8:1    0  200M  0 part /boot
    └─sda2            8:2    0 19.8G  0 part 
      ├─centos-root 253:0    0 17.8G  0 lvm  /
      └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
    sdb               8:16   0    5G  0 disk
    

    接下来将每个OSD节点上的sdb磁盘加入到ceph集群中,命令如下:

    for host in 1 2 3
    do 
      ceph-deploy disk zap ceph${host} /dev/sdb
      ceph-deploy osd create ceph${host} --data /dev/sdb
    done
    

    ceph-deploy disk zap命令用于将目标磁盘的分区表和内容擦除,实际上它是调用/bin/dd
    if=/dev/zero of=/dev/sdb bs=1M count=10,这里需要注意是磁盘必须为空的,没有分配的
    conv=fsync命令来销毁GPT和MBR。如果目标磁盘是未被分区的,可以不使用该命令。
    执行完上面的命令sdb磁盘变成这样:

    sdb
    └─ceph--11759f08--4bdc--4374--8f46--26d997b409eb-osd--block--3b3a96dc--0a5d--41ed--a740--9b903a18bf75
    

    此时查看ceph集群的状态,可以看到有三个OSD已经被加入到集群中:

    [root@ceph1 ceph-cluster]# ceph -s
      cluster:
        id:     38ea5f1d-d0bf-447e-9ef4-34def8e8db78
        health: HEALTH_OK
    
      services:
        mon: 1 daemons, quorum ceph1
        mgr: ceph1(active)
        osd: 3 osds: 3 up, 3 in
    
      data:
        pools:   0 pools, 0 pgs
        objects: 0 objects, 0B
        usage:   3.01GiB used, 1.46TiB / 1.46TiB avail
        pgs:
    

    3.7 扩展mon和mgr节点

    mon和mgr是ceph集群中非常重要的组件,其中mon作为整个集群的控制中心,里面存放着集群的信息,所以需要确保mon和mgr处于高可用的状态,为了保证选举正常,节点数要为奇数。

    3.7.1 扩容mon节点

    首先将ceph2和ceph3扩容为mon节点:

    ceph-deploy mon add ceph2
    ceph-deploy mon add ceph3
    

    扩容完成后查看集群状态:

    [root@ceph1 ceph-cluster]# ceph -s
      cluster:
        id:     38ea5f1d-d0bf-447e-9ef4-34def8e8db78
        health: HEALTH_OK
    
      services:
        mon: 3 daemons, quorum ceph1,ceph2,ceph3
        mgr: ceph1(active)
        osd: 3 osds: 3 up, 3 in
    
      data:
        pools:   0 pools, 0 pgs
        objects: 0 objects, 0B
        usage:   3.01GiB used, 1.46TiB / 1.46TiB avail
        pgs:
    
    3.7.2 扩容mgr节点

    接下来扩容mgr节点,命令如下:

    ceph-deploy mgr create ceph2 ceph3
    

    查看集群信息:

    [root@ceph1 ceph-cluster]# ceph -s
      cluster:
        id:     38ea5f1d-d0bf-447e-9ef4-34def8e8db78
        health: HEALTH_OK
    
      services:
        mon: 3 daemons, quorum ceph1,ceph2,ceph3
        mgr: ceph1(active), standbys: ceph2, ceph3
        osd: 3 osds: 3 up, 3 in
    
      data:
        pools:   0 pools, 0 pgs
        objects: 0 objects, 0B
        usage:   3.01GiB used, 1.46TiB / 1.46TiB avail
        pgs:
    

    可以看到mgr变为3个节点,其中两个节点处于standby状态。

    4. 创建RBD块存储

    4.1 创建pool

    在ceph1节点上执行如下命令创建pool:

    ceph osd pool create rbd 64 64
    pool 'rbd' created
    

    第一个64代表设置的pg数量,第二个64代表设置的pgp数量

    使用如下命令查看当前已有的pool:

    [root@ceph1 ~]# ceph osd lspools
    1 rbd
    

    查看指定pool中的pg和pgp数量:

    [root@ceph1 ~]# ceph osd pool get rbd pg_num
    pg_num: 64
    [root@ceph1 ~]# ceph osd pool get rbd pgp_num
    pgp_num: 64
    

    查看指定 pool 中的副本数(副本数默认为3):

    [root@ceph2 ~]# ceph osd pool get rbd size
    size: 3
    

    查看指定 pool 的调度算法(默认为replicated_rule):

    [root@ceph1 ~]# ceph osd pool get rbd crush_rule
    crush_rule: replicated_rule
    

    调整指定pool的pg和pgp数量:

    ceph osd pool set rbd pg_num 128
    ceph osd pool set rbd pgp_num 128
    

    调整指定pool的副本数:

    ceph osd pool set rbd size 2
    

    一般来说,创建pool后,需要对这个pool进行初始化,例如用于rbd块存储的pool使用rbd > > pool init命令就可以将指定pool初始化为rbd类型的application。如果不进行这个初始化的> 操作,不会影响存储的使用,但是会在集群信息中显示报警信息。

    5. 创建RGW对象存储

    5.1. 创建RGW

    在ceph1节点的/usr/local/ceph-cluster目录下执行如下命令创建RGW:
    ceph-deploy rgw create ceph1 ceph2 ceph3
    执行完成后查看集群信息,可以看到已经启用了三个RGW:

    [root@ceph1 ceph-cluster]# ceph -s
      cluster:
        id:     38ea5f1d-d0bf-447e-9ef4-34def8e8db78
        health: HEALTH_OK
    
      services:
        mon: 3 daemons, quorum ceph1,ceph2,ceph3
        mgr: ceph1(active), standbys: ceph2, ceph3
        osd: 3 osds: 3 up, 3 in
        rgw: 3 daemons active
    
      data:
        pools:   5 pools, 160 pgs
        objects: 14 objects, 2.10KiB
        usage:   3.01GiB used, 1.46TiB / 1.46TiB avail
        pgs:     5.000% pgs unknown
                 152 active+clean
                 8   unknown
    
      io:
        client:   3.42KiB/s rd, 5op/s rd, 0op/s wr
    

    在ceph1、ceph2、ceph3节点上查看RGW监听的端口(默认为 7480):
    netstat -anplut | grep 7480

    netstat -anplut | grep 7480
    tcp        0      0 0.0.0.0:7480            0.0.0.0:*               LISTEN      9540/radosgw
    

    5.2. RGW多节点代理

    配置RGW多节点代理:

    yum -y install nginx
    
    vi /etc/nginx/nginx.conf
    在
    http {
        
    }
    中添加如下配置:
        upstream rgw {
            server 192.168.44.128:7480;
            server 192.168.44.129:7480;
            server 192.168.44.130:7480;
        }
        server {
            listen      8080;
    
            server_name  localhost;
    
            client_max_body_size 0;
    
            proxy_buffering off;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
    
            location / {
                proxy_pass http://rgw;
            }
        }
    
    systemctl restart nginx # 重启nginx服务使配置生效
    systemctl status nginx # 查看nginx服务状态
    systemctl enable nginx # 设置nginx服务开机自启动
    

    5.3. 创建访问S3的用户

    创建的用户有两种,一种是兼容S3风格,还有一种是Swift风格。

    5.3.1 创建访问S3的用户

    使用如下命令创建一个用于访问S3的用户:

    radosgw-admin user create --uid emr-s3-user --display-name "EMR S3 User Demo"
    

    命令执行后会输出如下结果:

    {
        "user_id": "emr-s3-user",
        "display_name": "EMR S3 User Demo",
        "email": "",
        "suspended": 0,
        "max_buckets": 1000,
        "auid": 0,
        "subusers": [],
        "keys": [
            {
                "user": "emr-s3-user",
                "access_key": "access_key",
                "secret_key": "secret_key"
            }
        ],
        "swift_keys": [],
        "caps": [],
        "op_mask": "read, write, delete",
        "default_placement": "",
        "placement_tags": [],
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "temp_url_keys": [],
        "type": "rgw"
    }
    

    上面的内容中显示了用户的key信息以及一些用户的配额信息。以上的信息也可以通过如下命令再次输出:

    radosgw-admin user info --uid emr-s3-user
    
    5.3.2 测试s3接口访问

    使用python程序来测试s3接口的访问,首先安装名为名称为:python-boto的python包:

    yum -y install python-boto
    

    创建名为s3test.py的文件,内容如下:

    import boto.s3.connection
    
    access_key = 'access_key'
    secret_key = 'secret_key'
    conn = boto.connect_s3(
            aws_access_key_id=access_key,
            aws_secret_access_key=secret_key,
            host='192.168.44.128', port=8080,
            is_secure=False, calling_format=boto.s3.connection.OrdinaryCallingFormat(),
           )
    
    bucket = conn.create_bucket('emr-bucket')
    for bucket in conn.get_all_buckets():
        print "{name} {created}".format(
            name=bucket.name,
            created=bucket.creation_date,
        )
    

    需要注意的是,要将程序中的access_key和secret_key修改为前面生成用户的相关信息。host 需要修改为Nginx服务的地址,port修改为相应代理端口。

    执行这个python程序,会输出如下信息:

    [root@ceph1 ~]# python s3test.py
    emr-bucket 2022-09-27T09:14:48.206Z
    

    这代表成功创建一个bucket。

    5.4 使用命令行工具访问s3接口

    5.4.1 使用命令行工具访问s3接口配置s3cmd

    在命令行中调用s3接口来管理对象存储,首先需要安装s3cmd软件包:

    yum -y install s3cmd
    

    安装完成后需要对s3cmd进行配置,配置过程如下:

    s3cmd --configure
    
    Enter new values or accept defaults in brackets with Enter.
    Refer to user manual for detailed description of all options.
    
    Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
    Access Key: access_key # 设置访问用户的Access Key
    Secret Key: secret_key # 设置访问用户的Secret Key
    Default Region [US]: CN
    
    Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.
    S3 Endpoint [s3.amazonaws.com]: 192.168.44.128:8080 # 设置RWG的代理地址和端口
    
    Use "%(bucket)s.s3.amazonaws.com" to the target Amazon S3. "%(bucket)s" and "%(location)s" vars can be used
    if the target S3 system supports dns based buckets.
    DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]: 192.168.44.128:8080/%(bucket)s # 设置bucket的名称(可以将IP地址更换为域名)
    
    Encryption password is used to protect your files from reading
    by unauthorized persons while in transfer to S3
    Encryption password:  # 不设置密码
    Path to GPG program [/usr/bin/gpg]:  # 使用gpg加密
    
    When using secure HTTPS protocol all communication with Amazon S3
    servers is protected from 3rd party eavesdropping. This method is
    slower than plain HTTP, and can only be proxied with Python 2.7 or newer
    Use HTTPS protocol [Yes]: no # 不使用 HTTPS
    
    On some networks all internet access must go through a HTTP proxy.
    Try setting it here if you can't connect to S3 directly
    HTTP Proxy server name:  # 不设置代理访问
    
    New settings:
      Access Key: 3347B8YK03UDM8OCUVYV
      Secret Key: jpWtK9Ra09cKqQudBVyGbgPPEfncy24IjjxBrFyM
      Default Region: CN
      S3 Endpoint: 192.168.44.128:8080
      DNS-style bucket+hostname:port template for accessing a bucket: 192.168.44.128:8080/%(bucket)s
      Encryption password: 
      Path to GPG program: /usr/bin/gpg
      Use HTTPS protocol: False
      HTTP Proxy server name: 
      HTTP Proxy server port: 0
    
    Test access with supplied credentials? [Y/n] y # 验证访问
    Please wait, attempting to list all buckets...
    ERROR: Test failed: 403 (SignatureDoesNotMatch)
    
    Retry configuration? [Y/n] n
    
    Save settings? [y/N] y # 保存配置
    Configuration saved to '/root/.s3cfg'
    

    配置完成后,配置文件存储在/root/.s3cfg文件中,需要将该文件中的signature_v2 配置项改为True,否则在后续执行命令的时候会触发 ERROR: S3 error: 403 (SignatureDoesNotMatch) 报错:

    signature_v2 = True
    

    保存退出后,就可以使 s3cmd命令来管理对象存储,首先使用如下命令查看当前的bucket:

    [root@ceph1 ~]# s3cmd ls
    2022-09-27 09:14  s3://emr-bucket
    

    创建一个新的bucket:

    [root@ceph1 ~]# s3cmd mb s3://emr-s3-demo
    ERROR: S3 error: 400 (InvalidLocationConstraint): The specified location-constraint is not valid
    
    vi /root/.s3cfg
    将
    bucket_location = CN
    修改为
    bucket_location = US
    
    [root@ceph1 ~]# s3cmd mb s3://emr-s3-demo
    Bucket 's3://emr-s3-demo/' created
    
    5.4.2 上传文件

    将本地的/etc/fstab文件上传到对象存储中,并将存储的名称修改为fstab-demo:

    [root@ceph1 ~]# s3cmd put /etc/fstab s3://emr-s3-demo/fstab-demo
    upload: '/etc/fstab' -> 's3://emr-s3-demo/fstab-demo'  [1 of 1]
     743 of 743   100% in    1s   403.24 B/s  done
     
    [root@ceph1 ~]# s3cmd ls s3://emr-s3-demo
    2021-01-07 09:04          465  s3://emr-s3-demo/fstab-demo
    

    这样Ceph分布式集群安装配置就完成了,我们下篇文章再讲如何用Spark读写Ceph S3

    6. 参考

    问题解决

    主要是hostname导致的问题,因为我是在现有的HDP环境下安装的Ceph,而且已经配过了hosts和hostname,但是我不想用已有的hostname,我在/etc/hosts文件里新添加了ceph的host配置,但是没有修改hostname,这样就导致了问题的发生。

    问题出现在命令

    ceph-deploy mon create-initial
    

    报错:

    ceph1][INFO  ] Running command: ceph --cluster=ceph --admin-daemon /var/run/ceph/ceph-mon.ceph1.asok mon_status
    [ceph1][ERROR ] admin_socket: exception getting command descriptions: [Errno 2] No such file or directory
    

    报没有文件/var/run/ceph/ceph-mon.ceph1.asok,那么我们看一下路径下有什么

    ls /var/run/ceph/
    ceph-mon.indata-192-168-44-128.asok
    

    发现是有asok文件的,但是名字不一样,名字是和配的旧的host一致

    尝试解决思路:

    修改/etc/hosts配置顺序

    将ceph的host放在最前面,该思路无效,和顺序无关

    用旧的host重新ceph-deploy

    ceph-deploy new --public-network 192.168.44.0/24 --cluster-network 192.168.44.0/24 indata-192-168-44-128
    

    然后再执行

    ceph-deploy --overwrite-conf  mon create-initial
    

    但是会报错:

    [ceph_deploy.mon][WARNIN] mon.indata-192-168-44-128 monitor is not yet in quorum, tries left: 5
    [ceph_deploy.mon][WARNIN] waiting 5 seconds before retrying
    [indata-192-168-44-128][INFO  ] Running command: ceph --cluster=ceph --admin-daemon /var/run/ceph/ceph-mon.indata-192-168-44-128.asok mon_status
    [ceph_deploy.mon][WARNIN] mon.indata-192-168-44-128 monitor is not yet in quorum, tries left: 4
    [ceph_deploy.mon][WARNIN] waiting 10 seconds before retrying
    [indata-192-168-44-128][INFO  ] Running command: ceph --cluster=ceph --admin-daemon /var/run/ceph/ceph-mon.indata-192-168-44-128.asok mon_status
    [ceph_deploy.mon][WARNIN] mon.indata-192-168-44-128 monitor is not yet in quorum, tries left: 3
    [ceph_deploy.mon][WARNIN] waiting 10 seconds before retrying
    [indata-192-168-44-128][INFO  ] Running command: ceph --cluster=ceph --admin-daemon /var/run/ceph/ceph-mon.indata-192-168-44-128.asok mon_status
    [ceph_deploy.mon][WARNIN] mon.indata-192-168-44-128 monitor is not yet in quorum, tries left: 2
    [ceph_deploy.mon][WARNIN] waiting 15 seconds before retrying
    [indata-192-168-44-128][INFO  ] Running command: ceph --cluster=ceph --admin-daemon /var/run/ceph/ceph-mon.indata-192-168-44-128.asok mon_status
    [ceph_deploy.mon][WARNIN] mon.indata-192-168-44-128 monitor is not yet in quorum, tries left: 1
    [ceph_deploy.mon][WARNIN] waiting 20 seconds before retrying
    [ceph_deploy.mon][ERROR ] Some monitors have still not reached quorum:
    [ceph_deploy.mon][ERROR ] indata-192-168-44-128
    

    原因是mons名称不一致,因为ceph-mon.indata-192-168-44-128.asok是通过ceph1创建的,所以它里面的内容也是ceph1,而不是indata-192-168-44-128

            "mons": [
                {
                    "rank": 0,
                    "name": "ceph1",
                    "addr": "192.168.44.128:6789/0",
                    "public_addr": "192.168.44.128:6789/0"
                }
            ]
    

    那么我们需要重新生成asok,但是asok是在什么条件下生成的呢(只删asok是不行的),执行下面的命令就可以(捣鼓了半天,没有资料,有点坑~)

    sudo rm -r /var/lib/ceph/mon/
    sudo rm -r /var/run/ceph/*
    ceph-deploy new --public-network 192.168.44.0/24 --cluster-network 192.168.44.0/24 indata-192-168-44-128
    

    这样就会重新生成,再用命令验证一下看内容是否变了,然后再执行ceph-deploy --overwrite-conf mon create-initial果然成功了,但是这样是用的旧的hostname,我还是想用ceph1试一下,因为上面已经搞懂了怎么重新生成asok

    首先删除一些生成的文件

    sudo rm -r /usr/local/ceph-cluster/*
    sudo rm -r /var/lib/ceph/mon/
    sudo rm -r /var/run/ceph/*
    

    然后修改各个节点的hostname

    hostnamectl set-hostname ceph1.bigdata.com
    

    这样重新生成的asok文件名就为ceph-mon.ceph1.asok了

    然后再重新执行命令:

    ceph-deploy new --public-network 192.168.44.0/24 --cluster-network 192.168.44.0/24 ceph1
    ceph-deploy --overwrite-conf  mon create-initial
    

    这样问题就解决了,另外/etc/ceph下面也有ceph相关的配置文件,如果我们一开始不懂,把这个文件夹删了,我们需要手动创建该文件夹,然后重新执行上面的命令就可以了

  • 相关阅读:
    算法 | 数字图像处理之「中值滤波」
    【博学谷学习记录】超强总结,用心分享|Shell字符串
    sqli-labs/Less-52
    我不想 MySQL 分片
    vue(12)
    矿泉水溴酸盐超标如何解决?除溴酸盐设备有哪些?
    selenium+python自动化安装驱动 碰到的问题
    ubuntu xrdp远程登录一直弹出Authentication required. System policy prevents WiFi scans
    【Python】基于OpenCV人脸追踪、手势识别控制的求生之路FPS游戏操作
    PHP - Xdebug安装 - 学习/实践
  • 原文地址:https://blog.csdn.net/dkl12/article/details/127103099