站長資訊網
        最全最豐富的資訊網站

        Ansible部署RHCS存儲集群詳解

        一 前期準備

        1.1 前置條件

        • 至少有三個不同的主機運行monitor (MON)節點;
        • 至少三個直接存儲(非外部SAN硬件)的OSD節點主;
        • 至少兩個不同的manager (MGR)節點;
        • 如果使用CephFS,則至少有兩個完全相同配置的MDS節點;
        • 如果使用Ceph對象網關,則至少有兩個不同的RADOSGW節點。
        • 一個部署節點,可以使用ceph-ansible包中的Ansible劇本來部署和配置集群。
        提示:Red Hat Ceph存儲還支持在Red Hat OpenStack平臺計算節點上部署OSDs、MONs、RGWs,但不支持部署mon和osd。
        紅帽Ceph存儲,默認配置將所有流量放在一個網絡上。生產環境中建議公共通信和集群通信配置單獨的網絡。公共網絡用于客戶端通信和與mon的通信。集群網絡用于OSD心跳、復制、回填和恢復流量。

        1.2 準備工作

        • 具備相同操作系統的集群節點,建議RHEL7;
        • 配置軟件倉庫(CentOS epel源、Ubuntu apt源、RedHat使用subscription-manager命令注冊系統);
        • 所有節點配置網絡及NTP時間同步;
        • 關閉selinux與防火墻,或放通所有相關流量和端口;
        • 在部署節點安裝ansbile;
        • 添加hosts,并確保能正確解析到所有主機;
        • 配置部署節點使用Ansible任務的用戶到其他所有節點可以ssh免密登錄;
        • 驗證部署節點能夠在集群節點上能正常運行ansible任務。

        1.3 其他注意事項

        1. OSD磁盤不建議使用RAID,Ceph使用復制或糾刪碼來保護數據
        2. 在生產環境部署Ceph集群,為便于管理,OSD主機應盡量使用統一的硬件。盡可能配置數量、大小和名稱都相同的磁盤,有助于確保性能一致,并且簡化故障排除;
        3. 需要確認每個OSD主機提供的OSD的數量。密度較小的存儲集群意味著osd守護進程分布到更多的主機上,分發工作負載。密度較高的存儲意味著重平衡和數據恢復需要更高的流量

        附一:組件端口說明

        Monitor
        6789/TCP:Communication within the Ceph cluster
        Manager
        7000/TCP:Communication with the Ceph Manager dashboard
        8003/TCP:Communication with the Ceph Manager RESTful API via HTTPS
        9283/TCP:Communication with the Ceph Manager Prometheus plug-in
        OSD
        6800-7300/TCP:Each OSD uses three ports in this range: one for communicating with clients and monitors over the public network; one for sending data to other OSDs over a cluster network,or over the public network if the former does not exist; and another for exchanging heartbeat packets over a cluster network or over the public network if the former does not exists.
        RADOS Gateway
        7480/TCP:RADOS Gateway uses port 7480/TCP,but you can change it, for example to port 80/TCP,or to port 443/TCP if using the SSL/TLS service.

        二 部署相關知識點

        2.1 Ansible介紹

        略,具體Ansible操作見本博客Ansible文章。

        2.2 Ansible部署Ceph相關yml

        /usr/share/ceph-ansible/group_vars/all.yml:所有節點相關yml配置;
        /usr/share/ceph-ansible/group_vars/osds.yml:所有OSD節點的yml配置;
        /usr/share/ceph-ansible/group_vars/client.yml:客戶端節點的yml配置。
        /usr/share/ceph-ansible:運行Ansible部署的主目錄。

        2.3 yml主要相關參數

        • all.yml參數
        變量
        含義
        fetch_directory
        ~/ceph-ansible-keys
        用于將身份驗證密鑰復制到集群節點的臨時目錄的位置。
        ceph_origin
        repository
        Ceph來源,repository表示使用包存儲庫
        ceph_repository
        rhcs
        用于安裝Red Hat的存儲庫Ceph存儲。rhcs使用官方紅帽Ceph存儲包。
        ceph_repository_type
        cdn or iso
        rhcs的安裝源,CDN或本地ISO映像。
        ceph_rhcs_iso_path
        path to iso
        如果使用iso存儲庫類型,則指向Red Hat Ceph存儲iso的路徑。
        ceph_rhcs_version
        3
        Red Hat Ceph安裝的版本。
        monitor_interface
        network interface
        Monitor用于偵聽的網絡接口。
        public_network
        address and netmask
        集群的公共網絡的子網,如192.168.122.0/24。
        cluster_network
        address and netmask
        集群專用網絡的子網。默認設置為public_network的值。
        journal_size
        size in MB
        分配給OSD日志的大小。應該是預期的兩倍。在大多數情況下不應小于5120 MB。
        提示:可以在group_vars/all.yml中將common_single_host_mode這個特殊參數設置為true。用于部署一個單節點、集所有功能于一身的Ceph集群作為測試學習使用。
        • osds.ym
        變量
        含義
        osd_scenario
        collocated
        or non-collocated
        OSD日志部署類型。
        devices
        用于OSDs的設備的名稱列表。
        用于并行OSD數據和日志分區或非并行OSD數據分區的設備。
        dedicated_devices
        用于非并列OSD期刊的設備名稱列表。
        OSD日志設備。
        并置方案:假定所有OSD主機具有相同的硬件并使用相同的設備名稱。
        group_vars/osds.yml配置示例:
        osd_scenario: “collocated”
        devices:
        – /dev/sdb
        – /dev/sdc
        – /dev/sdd
        非并置方案:將不同的存儲設備用于OSD數據和OSD日志。
        group_vars/osds.yml配置示例:
        osd_scenario: “non-collocated”
        devices:
        – /dev/sdb
        – /dev/sdc
        dedicated_devices:
        – /dev/sdd
        – /dev/sde

        2.4 客戶端相關命令

        命令
        含義
        ceph -s
        查看集群狀態。
        ceph -w
        動態觀察集群更改。
        ceph df
        查看集群剩余空間狀態。
        ceph osd df
        查看OSD使用情況。
        ceph auth get-or-create
        創建用戶。
        aeph auth list
        查看用戶列表。
        ceph auth caps
        查看用戶權限。
        ceph auth del
        刪除用戶。

        2.5 對象object相關命令

        命令
        含義
        rados -p pool_name ls
        查看一個pool中的object。
        rados -p pool_name put object_name file_path
        上傳一個文件作為對象。
        rados -p pool_name get object_name file_path
        以文件的形式檢索object。
        rados -p pool_name stat object_name
        顯示object的統計數據。
        rados -p pool_name rm object_name
        刪除一個object。

        三 正式部署

        節點
        類型
        IP
        備注
        servera
        部署節點
        172.25.250.10
         
        serverc
        mons
        mgrs
        osds
        172.25.250.12
         
        serverd
        mons
        mgrs
        osds
        172.25.250.13
         
        servere
        mons
        mgrs

        osds

        172.25.250.14
         

        3.1 部署節點配置主機名

        [root@servera ~]# vi /etc/hosts  172.25.250.10 servera  172.25.250.12 serverc  172.25.250.13 serverd  172.25.250.14 servere

        提示:主機名應該能正確解析主機名,若管理節點同時也是一個Ceph節點,也要確認能正確解析自己的主機名和IP地址。本實驗環境此3.1步驟可省略。

        3.2 創建相關用戶

        [root@servera ~]# useradd student
        [root@servera ~]# echo student | passwd –stdin student  #創建非root的管理用戶
        [root@servera ~]# for i in {a..e}; do echo “====server${i}====”;ssh root@server${i} ‘useradd -d /home/student -m student; echo “student” | passwd –stdin student’; done                #所有OSD server節點創建student用戶
        [root@servera ~]# for i in {a..e}; do echo “====server${i}====”;ssh root@server${i} ‘useradd -d /home/ceph -m ceph; echo “redhat” | passwd –stdin ceph’; done
        [root@servera ~]# for i in {a..e}; do echo “====server${i}====”;ssh root@server${i} ‘echo “student ALL = (root) NOPASSWD:ALL” > /etc/sudoers’; done
        [root@servera ~]# for i in {a..e}; do echo “====server${i}====”;ssh root@server${i} ‘chmod 0440 /etc/sudoers’; done

        3.3 配置部署節點免密鑰

        [root@servera ~]# su - student  [student@servera ~]$ ssh-keygen -f ~/.ssh/id_rsa -N ''  [student@servera ~]$ for i in {a..e}; do echo "====server${i}====";ssh-copy-id student@server$i;ssh-copy-id ceph@server$i; done

         

        3.4 配置Ansible Inventory

        [student@servera ~]$ sudo vi /usr/share/ceph-ansible/ansible.cfg  log_path = /tmp/ansible.log          #修改日志路徑為student用戶可寫入的/tmp路徑  deprecation_warnings = False  #禁用在ansible-playbook輸出結果相關必須要警告

        提示:Ansible默認使用/etc/ansible/hosts作為Inventory文件,也可使用-f參數手動指定其他文件。

        [student@servera ~]$ sudo vi /etc/ansible/hosts
        [mons]
        server[c:e]

        [mgrs]
        server[c:e]
        [student@servera ~]$ ansible mons -m ping  #測試mons組節點通信
        [student@servera ~]$ ansible mgrs -m ping  #測試mgrs組節點通信
        [student@servera ~]$ ansible mons -m command -a id #通過命令測試mons組節點
        [student@servera ~]$ ansible mgrs -m command -a id #通過命令測試mgrs組節點

        提示:ceph ansible playbook為每種Ceph節點類型使用一個主機組:monitors節點使用mons, osds節點使用osds,managers節點使用mgrs,MDSs使用mdss, Ceph客戶端使用clients, RADOS網關節點使用raws, iSCSI網關使用iscsi-gws,啟用RBD mirroring使用rd-mirror。
        因此需要需要根據Ceph主機的角色將它們在對應的Inventory文件中配置為對應的組。

        3.5 創建site.yml

        [student@servera ~]$ cd /usr/share/ceph-ansible/
        [student@servera ceph-ansible]$ sudo cp site.yml.sample site.yml
        [student@servera ceph-ansible]$ sudo vi site.yml
        #……
        – hosts: osds
          gather_facts: false
          become: True
          serial: 1                  #在osd(80行左右)添加此行

        提示:添加serial: 1添,會減慢了OSD的部署,但是使我們更有可能預測哪個OSD編號被分配給哪個OSD主機,以便將來的實驗室練習。

        3.6 創建all.yml

        [student@servera ~]$ cd /usr/share/ceph-ansible/group_vars/
        [student@servera group_vars]$ sudo cp all.yml.sample all.yml
        [student@servera group_vars]$ sudo vi all.yml

        dummy:
        ntp_service_enabled: false   #本實驗采用chrony進行時鐘同步
        ceph_origin: repository
        ceph_repository: rhcs
        ceph_rhcs_version: “3”
        ceph_repository_type: cdn
        rbd_cache: “true”    #開啟RBD回寫緩存
        rbd_cache_writethrough_until_flush: “false” #在切換回寫之前,不從寫透開始。
        rbd_client_directories: false  #不要創建客戶機目錄(它們應該已經存在)。
        monitor_interface: eth0
        journal_size: 1024    #本環境存儲設備很小,OSD日志比通常建議的要小
        public_network: 172.25.250.0/24
        cluster_network: “{{ public_network }}”
        ceph_conf_overrides:
          global:
            mon_osd_allow_primary_affinity: 1
            mon_clock_drift_allowed: 0.5  #允許MON時鐘間隔最多0.5秒
            osd_pool_default_size: 2
            osd_pool_default_min_size: 1  #降低存儲池復制大小的默認設置
            mon_pg_warn_min_per_osd: 0  #見提示一
            mon_pg_warn_max_per_osd: 0  #見提示二
            mon_pg_warn_max_object_skew: 0  #見提示三
          client:
            rbd_default_features: 1   #僅為以后的練習啟用一組特定的客戶機功能

        提示一:根據每個OSD的pg數量關閉集群健康警告。通常,第一個變量被設置為30,如果OSD中的每個“in”平均少于30個pg,集群就會發出警告。
        提示二:此變量默認值為300,如果OSD中的每個“in”平均超過300個pg,集群就會發出警告,在本實驗的小集群中可能沒有很多pg,因此采用禁用。
        提示三:根據某個池中對象的數量大于集群中一組池中對象的平均數量,關閉集群健康警告。同樣,我們有一個非常小的集群,這避免了通常指示我們需要調優集群的額外警告。

        3.7 正式部署Ceph集群

        [student@servera ~]$ cd /usr/share/ceph-ansible/  [student@servera ceph-ansible]$ ansible-playbook site.yml

        Ansible部署RHCS存儲集群詳解
        提示:若部署成功,則對于每個MON節點,前面的命令輸出應該顯示failed=0。在playbook執行過程中,可能會有許多非致命的警告,它們不會被當做“失敗”任務,可以忽略。

        3.8 確認驗證Ceph集群

        [student@servera ~]$ ssh ceph@serverc ceph -s

        Ansible部署RHCS存儲集群詳解
        [student@servera ~]$ ssh ceph@serverc cat /etc/ceph/ceph.conf

        Ansible部署RHCS存儲集群詳解
        [student@servera ~]$ ssh ceph@serverc ps aux | grep ceph-mon

        Ansible部署RHCS存儲集群詳解

        3.9 創建osds.yml

        [student@servera ~]$ cd /usr/share/ceph-ansible/group_vars/
        [student@servera group_vars]$ sudo cp osds.yml.sample osds.yml
        [student@servera group_vars]$ sudo vi osds.yml

        dummy:
        osd_scenario: “collocated”   #OSD使用并列的OSD形式
        devices:
          – /dev/vdb    #使用/dev/vdb作為后端存儲設備

        3.10 配置Ansible Inventory

        [student@servera ~]$ sudo vi /etc/ansible/hosts
        [mons]
        server[c:e]

        [mgrs]
        server[c:e]

        [osds]
        server[c:e]     #追加osds組

        3.11 正式部署OSD節點

        [student@servera ~]$ cd /usr/share/ceph-ansible/  [student@servera ceph-ansible]$ ansible-playbook site.yml

        Ansible部署RHCS存儲集群詳解
        提示:若部署成功,則對于每個OSD節點,前面的命令輸出應該顯示failed=0。在playbook執行過程中,可能會有許多非致命的警告,它們不會被當做“失敗”任務,可以忽略。

        3.12 確認驗證OSD節點

        [student@servera ~]$ ssh ceph@serverc ceph -s

        Ansible部署RHCS存儲集群詳解
        [student@servera ~]$ ssh ceph@serverc ceph -w  #使用此命令監視集群事件

        提示:ceph -w命令將繼續顯示集群的運行狀況和當前事件。要終止該命令,可按ctrl+c。

        3.13 測試及驗證

        [ceph@serverc ~]$ sudo systemctl stop ceph-mon.target #停止serverc的mon進程  [ceph@serverc ~]$ ceph -s            #觀察Ceph狀態

        Ansible部署RHCS存儲集群詳解
        [ceph@serverc ~]$ sudo systemctl start ceph-mon.target #重啟開啟mon進程  [ceph@serverc ~]$ sudo systemctl stop ceph-osd.target #停止serverc的osd進程  [ceph@serverc ~]$ ceph -s            #觀察Ceph狀態

        Ansible部署RHCS存儲集群詳解
        [ceph@serverc ~]$ ceph osd tree    #查看osd情況

        Ansible部署RHCS存儲集群詳解
        [ceph@serverc ~]$ sudo systemctl start ceph-osd.target #重啟開啟osd進程  [ceph@serverc ~]$ sudo systemctl stop ceph-osd@0         #停止serverc的osd id為0的進程  [ceph@serverc ~]$ ceph osd tree    #查看osd情況

        Ansible部署RHCS存儲集群詳解
        [ceph@serverc ~]$ sudo systemctl start ceph-osd@0 #重啟開啟osd 0進程  [ceph@serverc ~]$ ceph -s    #觀察Ceph狀態

        Ansible部署RHCS存儲集群詳解
        [ceph@serverc ~]$ ceph -v   #查看Ceph版本

        3.14 創建client.yml

        [student@servera ~]$ cd /usr/share/ceph-ansible/group_vars/
        [student@servera group_vars]$ sudo cp clients.yml.sample clients.yml
        [student@servera group_vars]$ sudo vi clients.yml

        dummy:
        copy_admin_key: true

        3.15 配置Ansible Inventory

        [student@servera ~]$ sudo vi /etc/ansible/hosts
        [mons]
        server[c:e]

        [mgrs]
        server[c:e]

        [osds]
        server[c:e]

        [clients]
        servera     #追加client客戶端

        3.16 正式部署client節點

        [student@servera ~]$ cd /usr/share/ceph-ansible/  [student@servera ceph-ansible]$ ansible-playbook site.yml

        Ansible部署RHCS存儲集群詳解
        提示:若部署成功,則對于每個OSD節點,前面的命令輸出應該顯示failed=0。在playbook執行過程中,可能會有許多非致命的警告,它們不會被當做“失敗”任務,可以忽略。

        3.17 確認驗證

        [kiosk@foundation0 ~]$ ssh ceph@servera   #使用ceph用戶登錄servera  [ceph@servera ~]$ ceph -s     #查看Ceph集群

        Ansible部署RHCS存儲集群詳解

        四 擴容Ceph集群

        4.1 擴容前置條件

        • 在不中斷服務的前提下,擴展ceph集群存儲容量
        • 可通過ceph-ansible以兩種方式擴展集群中的存儲:
          • 可以添加額外OSD主機到集群(scale-out)
          • 可以添加額外存儲設備到現有的OSD主機(scale-up)
        • 開始部署額外的OSD前,需確保集群處于HEALTH_OK狀態
        • 相關主機解析已正常添加指hosts

        4.2 創建相關用戶

        [root@serverf ~]# useradd student
        [root@serverf ~]# echo student | passwd –stdin student          #創建非root的管理用戶
        [root@serverf ~]# useradd -d /home/student -m student; echo “student” | passwd –stdin student’                                                #所有OSD server節點創建student用戶
        [root@serverf ~]# useradd -d /home/ceph -m ceph; echo “redhat” | passwd –stdin ceph’
        [root@serverf ~]# echo “student ALL = (root) NOPASSWD:ALL” > /etc/sudoers’
        [root@serverf ~]# chmod 0440 /etc/sudoers

        4.3 配置部署節點免密鑰

        [root@servera ~]# su - student  [student@servera ~]$ ssh-copy-id student@serverf;ssh-copy-id ceph@serverf

        4.4 擴容額外的OSD主機

        [student@servera ~]$ sudo vi /etc/ansible/hosts  #配置Ansible Inventory
        [student@servera ~]$ sudo vi /etc/ansible/hosts
        [mons]
        server[c:e]

        [mgrs]
        server[c:e]

        [osds]
        server[c:e]
        serverf       #追加serverf

        [clients]
        servera

        4.5 添加額外OSD存儲設備

        devices:    - /dev/vdb    - /dev/vdc    - /dev/vdd      #追加存儲設備

        4.6 正式部署OSD節點

        [student@servera ~]$ cd /usr/share/ceph-ansible/  [student@servera ceph-ansible]$ ansible-playbook site.yml

        Ansible部署RHCS存儲集群詳解
        提示:若部署成功,則對于每個OSD節點,前面的命令輸出應該顯示failed=0。在playbook執行過程中,可能會有許多非致命的警告,它們不會被當做“失敗”任務,可以忽略。

        4.7 確認驗證

        [ceph@servera ~]$ ceph -s

        Ansible部署RHCS存儲集群詳解
         [ceph@servera ~]$ ceph osd tree

        Ansible部署RHCS存儲集群詳解
        [ceph@servera ~]$ ceph osd df

        Ansible部署RHCS存儲集群詳解
        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产成人精品日本亚洲专一区| 久久久久这里只有精品 | 麻豆精品不卡国产免费看| 无码aⅴ精品一区二区三区浪潮| 免费精品精品国产欧美在线欧美高清免费一级在线 | 亚洲AV永久青草无码精品| 精品日韩在线视频一区二区三区| 香蕉久久夜色精品国产小说| 2021久久国自产拍精品| 青草国产精品久久久久久| 亚洲精品二三区| 欧美亚洲日本久久精品| 精品国产一区二区22| 国产精品黄页免费高清在线观看| 麻豆精品久久精品色综合| 精品国产欧美一区二区| 国产精品黄网站| 国产精品久久久久影院嫩草| 国产成人亚洲精品青草天美| 人人妻人人澡人人爽精品日本| 自拍中文精品无码| 亚洲精品一级无码鲁丝片| 在线亚洲欧美中文精品| 亚洲精品综合久久| 一色屋精品视频在线观看| 亚洲精品中文字幕无码蜜桃| 一本一道精品欧美中文字幕| 人妻精品久久无码区| 国产精品女同久久久久电影院| 精品久久久噜噜噜久久久| 日本一卡精品视频免费| 国产精品99精品无码视亚| 国产精品成熟老女人视频| 国产第一福利精品导航| 久久91精品国产91久久户| 中文精品久久久久国产网址| 国产91精品一区二区麻豆亚洲| 国产精品粉嫩美女在线观看| 国产精品自在在线午夜福利| 久久国产精品偷99| 中文国产成人精品久久亚洲精品AⅤ无码精品|