zoukankan      html  css  js  c++  java
  • ceph高可用分布式存储集群06-高可用纠删码对象存储实战之虚拟故障域

    网络情况
    # ip a 
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether fa:16:3e:83:fc:7e brd ff:ff:ff:ff:ff:ff
        inet 10.2.110.120/24 brd 10.2.110.255 scope global dynamic eth0
           valid_lft 79948sec preferred_lft 79948sec
        inet6 fe80::f816:3eff:fe83:fc7e/64 scope link
           valid_lft forever preferred_lft forever
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc mq state UP group default qlen 1000
        link/ether fa:16:3e:7d:3c:56 brd ff:ff:ff:ff:ff:ff
        inet 172.16.88.120/24 brd 172.16.88.255 scope global dynamic eth1
           valid_lft 65007sec preferred_lft 65007sec
        inet6 fe80::f816:3eff:fe7d:3c56/64 scope link
           valid_lft forever preferred_lft forever
     
    机器放置情况,我们有6个机柜,每个机柜有2台机器。
    10.2.110.120 ceph-osd-120
    10.2.110.126 ceph-osd-126
     
    10.2.110.121 ceph-osd-121
    10.2.110.127 ceph-osd-127
     
    10.2.110.122 ceph-osd-122
    10.2.110.128 ceph-osd-128
     
    10.2.110.123 ceph-osd-123
    10.2.110.128 ceph-osd-129
     
    10.2.110.124 ceph-osd-124
    10.2.110.130 ceph-osd-130
     
    10.2.110.125 ceph-osd-125
    10.2.110.131 ceph-osd-131
     
    纠删码高可用思路:
     
    由于我们使用了纠删码,我们希望K=4  M=2
    然后我们设置一个中间层的虚拟域rep-region,在虚拟域里设置故障域osd-region
    虚拟域1放置了ceph-osd-120 ceph-osd-121 ceph-osd-122 ceph-osd-123 ceph-osd-124 ceph-osd-125
    虚拟域2放置了ceph-osd-126 ceph-osd-127 ceph-osd-128 ceph-osd-129 ceph-osd-130 ceph-osd-131
    每个故障域放一个机器,后期集群扩大后,可以每个故障域放2~4台机器,故障域的机器超过4台机器后,我们会增加虚拟域
    这样的ceph集群即使使用了纠删码,风险也会非常小......
    理论上6个机柜放满DELL R510,每个机柜12台机器,我们会形成3个虚拟域,3*6=18个故障域,纠删码 K=4  M=2  K+M=6,所以2个机柜遇到问题,我们的ceph集群也会是健康的
     
    ---------------------------------------------------------------------------------------------------------
    所有的节点初始化
    yum install -y vim net-tools wget lrzsz deltarpm tree screen lsof tcpdump nmap sysstat iftop
    yum install epel-release -y
     
    添加ceph源
    # cat /etc/yum.repos.d/ceph.repo
    [Ceph]
    name=Ceph packages for $basearch
    baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/$basearch
    enabled=1
    gpgcheck=1
    type=rpm-md
    gpgkey=https://download.ceph.com/keys/release.asc
     
    [Ceph-noarch]
    name=Ceph noarch packages
    baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch
    enabled=1
    gpgcheck=1
    type=rpm-md
    gpgkey=https://download.ceph.com/keys/release.asc
     
    [ceph-source]
    name=Ceph source packages
    baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS
    enabled=1
    gpgcheck=1
    type=rpm-md
    gpgkey=https://download.ceph.com/keys/release.asc
    修改hosts
    # cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    10.2.110.120 ceph-osd-120
    10.2.110.121 ceph-osd-121
    10.2.110.122 ceph-osd-122
    10.2.110.123 ceph-osd-123
    10.2.110.124 ceph-osd-124
    10.2.110.125 ceph-osd-125
    10.2.110.126 ceph-osd-126
    10.2.110.127 ceph-osd-127
    10.2.110.128 ceph-osd-128
    10.2.110.129 ceph-osd-129
    10.2.110.130 ceph-osd-130
    10.2.110.131 ceph-osd-131
    10.2.110.132 ceph-osd-132
     
    给所有的主机命名,以10.2.110.120为示范
    hostnamectl set-hostname ceph-osd-120
     
    ---------------------------------------------------------------------------------------------------
    下面的操作都是在ceph部署机上操作命令
     
    生成密钥
    ssh-keygen
    发送密钥到其他节点
    ssh-copy-id ceph-osd-120
    ssh-copy-id ceph-osd-121
    ssh-copy-id ceph-osd-122
    ssh-copy-id ceph-osd-123
    ssh-copy-id ceph-osd-124
    ssh-copy-id ceph-osd-125
    ssh-copy-id ceph-osd-126
    ssh-copy-id ceph-osd-127
    ssh-copy-id ceph-osd-128
    ssh-copy-id ceph-osd-129
    ssh-copy-id ceph-osd-130
    ssh-copy-id ceph-osd-131
    ssh-copy-id ceph-osd-132
     
    安装ceph-deploy
    yum install ceph-deploy  python-setuptools python2-subprocess32 -y
     
    生成ceph.conf文件
    mkdir -pv ceph-cluster
    cd ceph-cluster/
    ceph-deploy new  ceph-osd-120 ceph-osd-121 ceph-osd-122
     
    修改配置文件 
    # vim ceph.conf   
    [global]
    fsid = 5b833752-2922-41b5-a3d4-f654a995af04
    mon_initial_members = ceph-osd-120, ceph-osd-121, ceph-osd-122
    mon_host = 10.2.110.120,10.2.110.121,10.2.110.122
    auth_cluster_required = cephx
    auth_service_required = cephx
    auth_client_required = cephx
     
    mon clock drift allowed = 2
    mon clock drift warn backoff = 30
     
    public_network = 10.2.110.0/24
    cluster_network = 172.16.88.0/24
     
    max_open_files = 131072
    mon_pg_warn_max_per_osd = 1000
    mon_max_pg_per_osd = 1000
    osd pool default pg num = 64
    osd pool default pgp num = 64
    osd pool default size = 3
    osd pool default min size = 1
     
    mon_osd_full_ratio = .95
    mon_osd_nearfull_ratio = .80
    osd_deep_scrub_randomize_ratio = 0.01
     
    [mon]
    mon_allow_pool_delete = true
    mon_osd_down_out_interval = 600
    mon_osd_min_down_reporters = 3
    [mgr]
    mgr modules = dashboard
    [osd]
    osd_journal_size = 20480
    osd_max_write_size = 1024
    osd_recovery_op_priority = 1
    osd_recovery_max_active = 1
    osd_recovery_max_single_start = 1
    osd_recovery_threads = 1
    osd_recovery_max_chunk = 1048576
    osd_max_backfills = 1
    osd_scrub_begin_hour = 22
    osd_scrub_end_hour = 7
    osd_recovery_sleep = 0
    osd crush update on start = false
     
    [client]
    rbd_cache = true
    rbd_cache_writethrough_until_flush = true
    rbd_concurrent_management_ops = 10
    rbd_cache_size = 67108864
    rbd_cache_max_dirty = 50331648
    rbd_cache_target_dirty = 33554432
    rbd_cache_max_dirty_age = 2
    rbd_default_format = 2
     
    给所有节点安装ceph软件
    for i in `seq 120 132` ;do ceph-deploy install  --no-adjust-repos   ceph-osd-${i};done
    初始化mon
    ceph-deploy mon create-initial
    传送ceph admin密钥
    for i in `seq 120 132` ;do ceph-deploy admin  ceph-osd-${i};done
    添加mgr
    ceph-deploy mgr create  ceph-osd-120 ceph-osd-121 ceph-osd-122
    添加部分osd
    for i in `seq 120 125`;do for x in {b,c} ;do ceph-deploy osd create --data /dev/vd${x} ceph-osd-${i};done;done
     
    -----------------------------------------------------------------------------------------------------
    修改curshmap
    ceph osd getcrushmap -o crushmap
    crushtool -d crushmap -o crushmap.txt
     
    在curshmap.txt文件中添加二个bucket type(osd-region,rep-region)
    # types
    type 0 osd
    type 1 host
    type 2 chassis
    type 3 osd-region
    type 4 rep-region
    type 5 rack
    type 6 row
    type 7 pdu
    type 8 pod
    type 9 room
    type 10 datacenter
    type 11 zone
    type 12 region
    type 13 root
     
    在curshmap.txt文件中修改添加rule,这里有2个rule,一个是副本rule,另一个是纠删码rule
    # rules
    rule replicated_rule {
            id 0
            type replicated
            min_size 1
            max_size 10
            step take default
            step choose firstn 1 type rep-region
            step choose firstn 0 type osd-region
            step choose firstn 1 type osd
            step emit
    }
     
    rule erasure-code {
            id 1
            type erasure
            min_size 3
            max_size 20
            step set_chooseleaf_tries 5
            step set_choose_tries 150
            step take default
            step choose indep 1 type rep-region
            step choose indep 0 type osd-region
            step choose firstn 1 type osd
            step emit
    }
     
    crushtool -c crushmap.txt -o crushmap.bin
    ceph osd setcrushmap -i crushmap.bin
     
    ---------------------------------------------------------------------------------------------------------------------------------------------
     
    由于配置文件中添加了osd crush update on start = false,所以这里我们需要自己执行下面的命令才能让crush map变成我们想要的样子
    ceph osd crush add-bucket rep01 rep-region
    ceph osd crush add-bucket rep02 rep-region
     
    ceph osd crush add-bucket osdreg01 osd-region
    ceph osd crush add-bucket osdreg02 osd-region
    ceph osd crush add-bucket osdreg03 osd-region
    ceph osd crush add-bucket osdreg04 osd-region
    ceph osd crush add-bucket osdreg05 osd-region
    ceph osd crush add-bucket osdreg06 osd-region
     
    ceph osd crush add-bucket osdreg07 osd-region
    ceph osd crush add-bucket osdreg08 osd-region
    ceph osd crush add-bucket osdreg09 osd-region
    ceph osd crush add-bucket osdreg10 osd-region
    ceph osd crush add-bucket osdreg11 osd-region
    ceph osd crush add-bucket osdreg12 osd-region
     
    ceph osd crush move osdreg01 rep-region=rep01
    ceph osd crush move osdreg02 rep-region=rep01
    ceph osd crush move osdreg03 rep-region=rep01
    ceph osd crush move osdreg04 rep-region=rep01
    ceph osd crush move osdreg05 rep-region=rep01
    ceph osd crush move osdreg06 rep-region=rep01
     
    ceph osd crush move osdreg07 rep-region=rep02
    ceph osd crush move osdreg08 rep-region=rep02
    ceph osd crush move osdreg09 rep-region=rep02
    ceph osd crush move osdreg10 rep-region=rep02
    ceph osd crush move osdreg11 rep-region=rep02
    ceph osd crush move osdreg12 rep-region=rep02
     
    ceph osd crush move rep01 root=default
    ceph osd crush move rep02 root=default
     
    ceph osd crush move osd.0 osd-region=osdreg01
    ceph osd crush move osd.1 osd-region=osdreg01
    ceph osd crush move osd.2 osd-region=osdreg02
    ceph osd crush move osd.3 osd-region=osdreg02
    ceph osd crush move osd.4 osd-region=osdreg03
    ceph osd crush move osd.5 osd-region=osdreg03
    ceph osd crush move osd.6 osd-region=osdreg04
    ceph osd crush move osd.7 osd-region=osdreg04
    ceph osd crush move osd.8 osd-region=osdreg05
    ceph osd crush move osd.9 osd-region=osdreg05
    ceph osd crush move osd.10 osd-region=osdreg06
    ceph osd crush move osd.11 osd-region=osdreg06
     
    ceph osd crush reweight osd.0  0.03999 
    ceph osd crush reweight osd.1  0.03999    
    ceph osd crush reweight osd.2  0.03999     
    ceph osd crush reweight osd.3  0.03999 
    ceph osd crush reweight osd.4  0.03999   
    ceph osd crush reweight osd.5  0.03999     
    ceph osd crush reweight osd.6  0.03999    
    ceph osd crush reweight osd.7  0.03999  
    ceph osd crush reweight osd.8  0.03999     
    ceph osd crush reweight osd.9  0.03999    
    ceph osd crush reweight osd.10  0.03999    
    ceph osd crush reweight osd.11  0.03999  
    查看结果
    # ceph osd tree
    ID  CLASS WEIGHT  TYPE NAME                   STATUS REWEIGHT PRI-AFF
    -1       0.47974 root default                                        
    -3       0.47974     rep-region rep01                                
    -5       0.07996         osd-region osdreg01                         
      0   hdd 0.03998             osd.0               up  1.00000 1.00000
      1   hdd 0.03998             osd.1               up  1.00000 1.00000
    -6       0.07996         osd-region osdreg02                         
      2   hdd 0.03998             osd.2               up  1.00000 1.00000
      3   hdd 0.03998             osd.3               up  1.00000 1.00000
    -7       0.07996         osd-region osdreg03                         
      4   hdd 0.03998             osd.4               up  1.00000 1.00000
      5   hdd 0.03998             osd.5               up  1.00000 1.00000
    -8       0.07996         osd-region osdreg04                         
      6   hdd 0.03998             osd.6               up  1.00000 1.00000
      7   hdd 0.03998             osd.7               up  1.00000 1.00000
    -9       0.07996         osd-region osdreg05                         
      8   hdd 0.03998             osd.8               up  1.00000 1.00000
      9   hdd 0.03998             osd.9               up  1.00000 1.00000
    -10       0.07996         osd-region osdreg06                         
    10   hdd 0.03998             osd.10              up  1.00000 1.00000
    11   hdd 0.03998             osd.11              up  1.00000 1.00000
    -4             0     rep-region rep02                                
    -19             0         osd-region osdreg07                         
    -20             0         osd-region osdreg08                         
    -21             0         osd-region osdreg09                         
    -22             0         osd-region osdreg10                         
    -23             0         osd-region osdreg11                         
    -24             0         osd-region osdreg12
     
    添加纠删码池使用的profile
    ceph osd erasure-code-profile set erasurek4m2  k=4 m=2 crush-failure-domain='osd-region' crush-root=default
     
    注:在生产环境都使用了 Intel CPU的服务器上推荐纠删码使用 ISA-L 库,命令如下
    ceph osd erasure-code-profile set erasurek4m2  k=4 m=2 plugin=isa crush-failure-domain='osd-region' crush-root=default
     
    查看创建的profile结果
    ceph osd erasure-code-profile ls
    default
    erasurek4m2
    ceph osd erasure-code-profile get erasurek4m2
    crush-device-class=
    crush-failure-domain=osd-region
    crush-root=default
    jerasure-per-chunk-alignment=false
    k=4
    m=2
    plugin=jerasure
    technique=reed_sol_van
    w=8
    创建对象存储需要的池,其中存放数据的池为使用了默认策略的纠删码池
    ceph osd pool create .rgw.root 64
    ceph osd pool create default.rgw.control 64
    ceph osd pool create default.rgw.meta 64   
    ceph osd pool create default.rgw.log 64
    ceph osd pool create default.rgw.buckets.index 64
    ceph osd pool create default.rgw.buckets.data 128 128 erasure erasurek4m2 erasure-code
    ceph osd pool create default.rgw.buckets.non-ec 128
     
    ceph osd pool application enable .rgw.root rgw
    ceph osd pool application enable default.rgw.control rgw
    ceph osd pool application enable default.rgw.log rgw   
    ceph osd pool application enable default.rgw.meta rgw
    ceph osd pool application enable default.rgw.buckets.index rgw
    ceph osd pool application enable default.rgw.buckets.data rgw
     
    由于默认k=4 m=2的纠删码池min_size是5,这里我们改成4以便集群可以故障的域更多点。
    ceph osd pool set default.rgw.buckets.data min_size 4
    注:创建池的命令详解如下
    ceph osd pool create <poolname> <int[0-]> {<int[0-]>} {replicated|erasure} {<erasure_code_profile>} {<rule>} {<int>} {<int>} {<int[0-]>} {<int[0-]>} {<float[0.0-1.0]>}
     
    给纠删码池做cache分层
    ceph osd pool create default.rgw.buckets.data_cache 64
    ceph osd tier add default.rgw.buckets.data default.rgw.buckets.data_cache
    ceph osd tier cache-mode default.rgw.buckets.data_cache writeback
    ceph osd tier set-overlay default.rgw.buckets.data default.rgw.buckets.data_cache
     
    设置缓冲池使用布隆过滤器
    设定热度数hit_set_count和热度周期hit_set_period,以及最大缓冲数据target_max_bytes
    ceph osd pool set default.rgw.buckets.data_cache hit_set_type bloom
    ceph osd pool set default.rgw.buckets.data_cache hit_set_count 1
    ceph osd pool set default.rgw.buckets.data_cache hit_set_period 3600
    ceph osd pool set default.rgw.buckets.data_cache target_max_bytes 107374182400 
     
    注:cache分层要谨慎,生产环境为了提高性能和降低成本,我们没有使用cache分层,而是把default.rgw.buckets.data放在机械盘,其他池放在SSD磁盘上。
     
    部署rgw
    ceph-deploy rgw create ceph-osd-120 ceph-osd-121 ceph-osd-122
     
    创建一个测试帐号
    # radosgw-admin user create --uid="test" --display-name="test"      
    {
        "user_id": "test",
        "display_name": "test",
        "email": "",
        "suspended": 0,
        "max_buckets": 1000,
        "subusers": [],
        "keys": [
            {
                "user": "test",
                "access_key": "47DLTATT3ZS76KPU140J",
                "secret_key": "uhesPGUtaDravGDmprB6sVrJBqCSQvEppLGz5dT4"
            }
        ],
        "swift_keys": [],
        "caps": [],
        "op_mask": "read, write, delete",
        "default_placement": "",
        "default_storage_class": "",
        "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",
        "mfa_ids": []
    }
     
     
    创建一个测试的bucket
    s3cmd --access_key=47DLTATT3ZS76KPU140J --secret_key=uhesPGUtaDravGDmprB6sVrJBqCSQvEppLGz5dT4  --host=test2.zhazhahui.com:7480 --host-bucket="%(bucket).s3.zhazhahui.com:7480" --no-ssl --no-check-certificate mb s3://test
    Bucket 's3://test/' created
     
     
    当我们给bucket写入东西后,我们查看一些信息
    # ceph df
    RAW STORAGE:
        CLASS     SIZE       AVAIL      USED       RAW USED     %RAW USED
        hdd       58 TiB     58 TiB     23 GiB       31 GiB          0.05
        TOTAL     58 TiB     58 TiB     23 GiB       31 GiB          0.05
    POOLS:
        POOL                               ID     STORED      OBJECTS     USED        %USED     MAX AVAIL
        .rgw.root                           1     1.2 KiB           4     768 KiB         0        18 TiB
        default.rgw.control                 2         0 B           8         0 B         0        18 TiB
        default.rgw.meta                    3     1.5 KiB          10     1.5 MiB         0        18 TiB
        default.rgw.log                     4         0 B         175         0 B         0        18 TiB
        default.rgw.buckets.index           5         0 B           2         0 B         0        18 TiB
        default.rgw.buckets.data            6     8.6 GiB       2.69k      13 GiB      0.02        37 TiB
        default.rgw.buckets.non-ec          7        27 B           1     192 KiB         0        18 TiB
        default.rgw.buckets.data_cache      8     3.3 GiB       1.02k      10 GiB      0.02        18 TiB
     
     查看具体某个BUCKET属性
    #  radosgw-admin bucket stats --bucket=zhazhahui
    {
        "bucket": "zhazhahui",
        "num_shards": 0,
        "tenant": "",
        "zonegroup": "6fb3c20a-ee52-45f2-83e8-0cb4b038bbac",
        "placement_rule": "default-placement",
        "explicit_placement": {
            "data_pool": "",
            "data_extra_pool": "",
            "index_pool": ""
        },
        "id": "1c1013dc-c276-41b3-bdcb-aed676ea064c.5619.1",
        "marker": "1c1013dc-c276-41b3-bdcb-aed676ea064c.5619.1",
        "index_type": "Normal",
        "owner": "qf",
        "ver": "0#33481",
        "master_ver": "0#0",
        "mtime": "2021-03-15 09:33:36.164454Z",
        "max_marker": "0#",
        "usage": {
            "rgw.main": {
                "size": 401363173919,
                "size_actual": 401374625792,
                "size_utilized": 401363173919,
                "size_kb": 391956225,
                "size_kb_actual": 391967408,
                "size_kb_utilized": 391956225,
                "num_objects": 3803
            },
            "rgw.multimeta": {
                "size": 0,
                "size_actual": 0,
                "size_utilized": 216,
                "size_kb": 0,
                "size_kb_actual": 0,
                "size_kb_utilized": 1,
                "num_objects": 8
            }
        },
    .
    .
    .
    }
    该命令展示了BUCKET的名称,所在的data pool, index pool. BUCKET ID.
    2.3 检查对应BUCKET在index中是否存在
    #  rados -p default.rgw.buckets.index ls | grep 1c1013dc-c276-41b3-bdcb-aed676ea064c.5619.1
    .dir.1c1013dc-c276-41b3-bdcb-aed676ea064c.5619.1
    注:此处需要在BUCKET ID前面加上.dir. 才是它在INDEX POOL中的索引
    ###2.4 查看对应INDEX中记录的key
    # rados -p default.rgw.buckets.index listomapkeys .dir.1c1013dc-c276-41b3-bdcb-aed676ea064c.5619.1
    34123.md5
    34124.apk
    34124.md5
    34125.apk
    34125.md5
    34130.apk
    34130.md5
    34131.apk
    34131.md5
    34132.apk
    34132.md5
    34133.apk
    34133.md5
    34134.apk
    34134.md5
    34135.apk
    34135.md5
    34136.apk
    34136.md5
    34144.apk
    34144.md5
    34147.apk
    34147.md5
    34149.apk
    34149.md5
    34150.apk
    34150.md5
    34151.apk
    34151.md5
    34152.md5
    统计文件数量
    # rados -p default.rgw.buckets.index listomapkeys .dir.1c1013dc-c276-41b3-bdcb-aed676ea064c.5619.1 | wc -l
    3811
    查看对应索引信息存放的物理位置
    # ceph osd map default.rgw.buckets.index .dir.1c1013dc-c276-41b3-bdcb-aed676ea064c.5619.1
    osdmap e250 pool 'default.rgw.buckets.index' (5) object '.dir.1c1013dc-c276-41b3-bdcb-aed676ea064c.5619.1' -> pg 5.31e62451 (5.11) -> up ([14,16,20], p14) acting ([14,16,20], p14)
    通过命令可以看到,BUCKET arpun 的index信息落在OSD 3,6,0上面,其中3为主osd.
     
    那么纠删码中的数据分布情况如何?
    rados -p default.rgw.buckets.data ls
    1c1013dc-c276-41b3-bdcb-aed676ea064c.5619.1_31250.md5
    1c1013dc-c276-41b3-bdcb-aed676ea064c.5619.1_33077.md5
    1c1013dc-c276-41b3-bdcb-aed676ea064c.5619.1_31879.apk
    ceph osd map default.rgw.buckets.data 1c1013dc-c276-41b3-bdcb-aed676ea064c.5619.1_31879.apk
    osdmap e250 pool 'default.rgw.buckets.data' (8) object '1c1013dc-c276-41b3-bdcb-aed676ea064c.5619.1_31879.apk' -> pg 8.8484bfff (8.7f) -> up ([20,13,14,17,19], p20) acting ([20,13,14,17,19,7], p20)
     
     
    我们发现不同的文件会被算法均匀的分布在不同的虚拟域中
    # ceph osd map default.rgw.buckets.data .dir.1c1013dc-c276-41b3-bdcb-aed676ea064c.5619.1/28640.apk
    osdmap e252 pool 'default.rgw.buckets.data' (8) object '.dir.1c1013dc-c276-41b3-bdcb-aed676ea064c.5619.1/28640.apk' -> pg 8.c2a33311 (8.11) -> up ([5,9,7,3,1,10], p5) acting ([5,9,7,3,1,10], p5)
     
    # ceph osd map default.rgw.buckets.data .dir.1c1013dc-c276-41b3-bdcb-aed676ea064c.5619.1/27833.apk
    osdmap e252 pool 'default.rgw.buckets.data' (8) object '.dir.1c1013dc-c276-41b3-bdcb-aed676ea064c.5619.1/27833.apk' -> pg 8.bab507d5 (8.55) -> up ([18,16,13,15,20], p18) acting ([18,16,13,15,20,2], p18)
     
    最终架构
    # ceph osd tree
    ID  CLASS WEIGHT  TYPE NAME                   STATUS REWEIGHT PRI-AFF
    -1       0.87978 root default                                        
    -3       0.48000     rep-region rep01                                
    -5       0.07999         osd-region osdreg01                         
      0   hdd 0.03999             osd.0               up  1.00000 1.00000
      1   hdd 0.03999             osd.1               up  1.00000 1.00000
    -6       0.07999         osd-region osdreg02                         
      2   hdd 0.03999             osd.2               up  1.00000 1.00000
      3   hdd 0.03999             osd.3               up  1.00000 1.00000
    -7       0.07999         osd-region osdreg03                         
      4   hdd 0.03999             osd.4               up  1.00000 1.00000
      5   hdd 0.03999             osd.5               up  1.00000 1.00000
    -8       0.07999         osd-region osdreg04                         
      6   hdd 0.03999             osd.6               up  1.00000 1.00000
      7   hdd 0.03999             osd.7               up  1.00000 1.00000
    -9       0.07999         osd-region osdreg05                         
      8   hdd 0.03999             osd.8               up  1.00000 1.00000
      9   hdd 0.03999             osd.9               up  1.00000 1.00000
    -10       0.07999         osd-region osdreg06                         
    10   hdd 0.03999             osd.10              up  1.00000 1.00000
    11   hdd 0.03999             osd.11              up  1.00000 1.00000
    -4       0.39978     rep-region rep02                                
    -19       0.07996         osd-region osdreg07                         
    12   hdd 0.03998             osd.12              up  1.00000 1.00000
    13   hdd 0.03998             osd.13              up  1.00000 1.00000
    -20       0.07996         osd-region osdreg08                         
    14   hdd 0.03998             osd.14              up  1.00000 1.00000
    15   hdd 0.03998             osd.15              up  1.00000 1.00000
    -21       0.07996         osd-region osdreg09                         
    16   hdd 0.03998             osd.16              up  1.00000 1.00000
    17   hdd 0.03998             osd.17              up  1.00000 1.00000
    -22             0         osd-region osdreg10                         
    -23       0.07996         osd-region osdreg11                         
    18   hdd 0.03998             osd.18              up  1.00000 1.00000
    19   hdd 0.03998             osd.19              up  1.00000 1.00000
    -24       0.07996         osd-region osdreg12                         
    20   hdd 0.03998             osd.20              up  1.00000 1.00000
    21   hdd 0.03998             osd.21              up  1.00000 1.00000
     
     
    总结:生产看来M=2还是有一定风险,最好是M=3,据说网易是K=8 M=3. 我们生产目前是 K=5 M=2,后期规模大了可以扩大M值以降低风险。
     
    作者:Dexter_Wang   工作岗位:某互联网公司资深云计算与存储工程师  联系邮箱:993852246@qq.com
     
     
  • 相关阅读:
    fibnacci数列(斐波那契数列)在python中实现
    《信息安全专业导论》第5周学习总结
    自我介绍
    python模拟进程状态
    俄罗斯方块游戏
    小学四则运算编程实践
    熟悉编程语言
    第六周学习总结
    第五周学习总结
    20201318第四周总结
  • 原文地址:https://www.cnblogs.com/dexter-wang/p/14962400.html
Copyright © 2011-2022 走看看