<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Ceph 自動(dòng)化四大天王

          共 4575字,需瀏覽 10分鐘

           ·

          2021-12-02 23:21

          每一個(gè)Ceph新手,都或多或少被文中提到的四大天(坑)王吊打過,或鋼筋鐵骨成為大神,或刪庫跑路淪為亡魂。因此有必要給大家早早普及一下這四大天王的手段,幫各位早脫苦海。本文建立在你已經(jīng)基本了解Ceph的構(gòu)架和基本原理,如果不熟悉的同學(xué)可以看下面內(nèi)容

          https://docs.ceph.com/en/pacific/architecture/

          1.OSD自動(dòng)化加入crush

          很多新手,上來也不看基本的Crush算法原理,照著其他人的ceph.conf就是抄作業(yè),其中抄得最不走心的就是下面這條配置。

          osd crush update on start = false

          重啟以后或者加入新的OSD,發(fā)現(xiàn)自己的集群pg異常了,一個(gè)個(gè)OSD成了沒媽的孩子,到處都是小蝌蚪找媽媽。殊不知,默認(rèn)Crushmap中會(huì)按host為單位,自動(dòng)化將啟動(dòng)的osd加入到所在的host中,如果你開啟了這個(gè)osd crush update on start = false的配置,則會(huì)關(guān)掉自動(dòng)化分配,只能按用戶自定義的Crushmap分布規(guī)則進(jìn)行配置,而新手往往都沒有自定義的Crushmap規(guī)則,于是就遇上了一大堆的孤兒osd。所以抄作業(yè)之前,一定要搞清楚自己的環(huán)境和對(duì)方環(huán)境的差異性,盲抄作業(yè)是要吃大虧的。

          每一個(gè)新手,一定要去學(xué)習(xí)的就是crush算法的基本原理,并認(rèn)真按照下面的文檔,進(jìn)行crush-map編輯操作的學(xué)習(xí)與模擬。

          https://docs.ceph.com/en/pacific/rados/operations/crush-map-edits/

          類似的設(shè)置還有osd class update on start = false

          2.pg自動(dòng)化平衡 balancer

          掌握基本的Crush算法和基本概念,會(huì)你發(fā)現(xiàn)crush的偽隨機(jī)算法并不能100%確保你的每一個(gè)OSD都能均衡的實(shí)現(xiàn)數(shù)據(jù)分布,隨著你寫入的數(shù)據(jù)增加,很多情況下會(huì)發(fā)現(xiàn)OSD磁盤的利用率非常的不均勻。于是你會(huì)遇上如何平衡OSD數(shù)據(jù)分布這一難題,好在官方也一直在努力做好這件事情,并推出了一系列自動(dòng)化工具。

          The balancer can optimize the placement of PGs across OSDs in order to achieve a balanced distribution, either automatically or in a supervised fashion.

          最早的時(shí)候是通過擴(kuò)展mgr模塊,實(shí)現(xiàn)了一個(gè)名為balancer的模塊,通過手工方式來調(diào)度這個(gè)模塊,實(shí)現(xiàn)OSD上面的PG分布調(diào)優(yōu)。你可以通過下面的命令查看你的ceph是否支持這個(gè)特性。

          root@host:/home/demo#?ceph?mgr?module?ls
          {
          ????"always_on_modules":?[
          ????????"balancer",
          ????????"crash",
          ????????"devicehealth",
          ????????"orchestrator_cli",
          ????????"progress",
          ????????"rbd_support",
          ????????"status",
          ????????"volumes"
          ????],
          ????"enabled_modules":?[
          ????????"iostat",
          ????????"restful"
          ????],

          新版本已經(jīng)不支持手動(dòng)關(guān)閉。

          root@host:/home/demo#?ceph?mgr?module?disable?balancer
          Error?EINVAL:?module?'balancer'?cannot?be?disabled?(always-on)

          你可以通過下面的命令查看當(dāng)前該模塊的開啟狀態(tài)

          root@host:/home/demo#?ceph?balancer?status
          {
          ????"last_optimize_duration":?"0:00:22.402340",
          ????"plans":?[],
          ????"mode":?"crush-compat",
          ????"active":?false,
          ????"optimize_result":?"Unable?to?find?further?optimization,?change?balancer?mode?and?retry?might?help",
          ????"last_optimize_started":?"Tue?Nov?16?18:29:38?2021"
          }

          一旦balancer的active=true,那么這里的坑就挖好了,之后隨著你集群的用量變化,一旦滿足自動(dòng)balancer調(diào)節(jié)條件,集群就會(huì)自動(dòng)化實(shí)現(xiàn)OSD上的PG調(diào)整。PG自動(dòng)化平衡功能是很多新手看起來很美好的事情,但是真正用起來你會(huì)發(fā)現(xiàn),集群壓力大的時(shí)候自動(dòng)化平衡一下,或者頻繁的觸發(fā)了自動(dòng)化平衡,你的集群性能會(huì)持續(xù)抖動(dòng),最終造成業(yè)務(wù)延遲增加或者卡頓,要命的是一旦觸發(fā)平衡還不能中途停止,因此只能等待平衡完成,但是平衡這種事情,很多時(shí)候是沒辦法預(yù)期什么時(shí)候開始、什么時(shí)候結(jié)束,因此集群的性能也是處于間歇性抽風(fēng)。所以生產(chǎn)上,這種策略能關(guān)閉最好,看起來的美好,更多的是給你帶來無盡煩惱。具體可以參考下面

          https://docs.ceph.com/en/latest/rados/operations/balancer/#balancer

          3.資源池自動(dòng)伸縮 autoscale

          作為新手,你是不是還在幻想著集群擴(kuò)容,只需要簡(jiǎn)單的加機(jī)器加磁盤,然后調(diào)整一下PG數(shù)一頓操作猛如虎就行了。殘酷的現(xiàn)實(shí)就是,一旦你做了這件事情,集群性能就會(huì)因?yàn)閿?shù)據(jù)平衡而抽風(fēng),如何平衡擴(kuò)容帶來的性能影響已經(jīng)是一門Ceph維護(hù)的藝術(shù)。然鵝,官方貼心的給各位開發(fā)了一個(gè)自動(dòng)化pg擴(kuò)容模塊,根據(jù)集群的當(dāng)前規(guī)模,實(shí)現(xiàn)自動(dòng)化的pg數(shù)設(shè)定,不再讓新手煩惱。好在默認(rèn)是開啟的warn模式,只是在特定情況下會(huì)告警,但是不做執(zhí)行。如果你線上經(jīng)常性的擴(kuò)容/縮容,那么你打開這個(gè)pg_autoscale_mode=on,會(huì)體會(huì)到無與倫比的酸爽,類似女人生孩子的那種陣痛,會(huì)在你心里印象深刻。如果你想讓自己睡個(gè)好覺,就老老實(shí)實(shí)off掉這個(gè)模塊吧,不要瞎折騰才是上上策,自動(dòng)化的東西沒你看起來那么美好。

          #默認(rèn)策略是warn
          root@host:/home/demo#?ceph?daemon?/home/ceph/var/run/ceph-osd.10.asok?config?show|grep?scale
          ????"osd_pool_default_pg_autoscale_mode":?"warn",
          ????"rgw_rados_pool_autoscale_bias":?"4.000000",

          #通過pool?set命令設(shè)置對(duì)應(yīng)策略
          root@host:/home/demo#?ceph?osd?pool?set
          Invalid?command:?missing?required?parameter?pool()
          osd?pool?set??size|min_size|pg_num|pgp_num|pgp_num_actual|crush_rule|hashpspool|nodelete|nopgchange|nosizechange|write_fadvise_dontneed|noscrub|nodeep-scrub|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|use_gmt_hitset|target_max_bytes|target_max_objects|cache_target_dirty_ratio|cache_target_dirty_high_ratio|cache_target_full_ratio|cache_min_flush_age|cache_min_evict_age|min_read_recency_for_promote|min_write_recency_for_promote|fast_read|hit_set_grade_decay_rate|hit_set_search_last_n|scrub_min_interval|scrub_max_interval|deep_scrub_interval|recovery_priority|recovery_op_priority|scrub_priority|compression_mode|compression_algorithm|compression_required_ratio|compression_max_blob_size|compression_min_blob_size|csum_type|csum_min_block|csum_max_block|allow_ec_overwrites|fingerprint_algorithm|pg_autoscale_mode|pg_autoscale_bias|pg_num_min|target_size_bytes|target_size_ratio??{--yes-i-really-mean-it}?:??set?pool?parameter??to?
          root@host:/home/demo#?ceph?osd?pool?get?.rgw.root?pg_autoscale_mode
          pg_autoscale_mode:?warn

          具體的設(shè)置參考這里

          https://docs.ceph.com/en/latest/rados/operations/placement-groups/#autoscaling-placement-groups

          4.RGW自動(dòng)化Shard重分配

          最后一個(gè)可能只有部分RGW用戶會(huì)遇到,當(dāng)單個(gè)Bucket內(nèi)的文件數(shù)量不斷增長(zhǎng),其底層的數(shù)據(jù)庫分片會(huì)不斷的進(jìn)行ReShard,整個(gè)reshard過程不可控,文件數(shù)越多時(shí)間越長(zhǎng),reshard過程中因?yàn)橐渔i,因此會(huì)導(dǎo)致業(yè)務(wù)卡IO,直接造成服務(wù)不可用。所以這個(gè)特性在官方推出的時(shí)候,我第一時(shí)間就是進(jìn)行了rgw_dynamic_resharding = false關(guān)閉,前面也有很多文章介紹過shard的基本原理和機(jī)制,這里就不再贅述了,感興趣的同學(xué)去看之前的文章內(nèi)容吧。

          https://docs.ceph.com/en/latest/radosgw/dynamicresharding/

          總結(jié)

          無論新手還是老司機(jī),凡是Ceph分布式系統(tǒng)里面的自動(dòng)化機(jī)制,都要盡可能了解其背后邏輯與機(jī)制,謹(jǐn)慎開啟。很多時(shí)候自動(dòng)化/傻瓜化的設(shè)定,只是開發(fā)人員的一廂情愿,他們不會(huì)了解運(yùn)維、生產(chǎn)環(huán)境的復(fù)雜度,很難做到100%適配你的業(yè)務(wù)場(chǎng)景,因此要想不被帶進(jìn)溝里,先得開啟對(duì)這些基礎(chǔ)知識(shí)的深入探索和學(xué)習(xí),在實(shí)踐中去驗(yàn)證這些功能的有效性,而不是一開始就把一切都寄托在官方的默認(rèn)設(shè)定上。


          瀏覽 174
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  最新在线一级片 | 亚洲一区无码在线 | 欧美日一道夲 | 亚洲午夜精品久久久久久APP | 中文字幕一色哟哟 |