學習 SUSE Storage 系列文章
(1)SUSE Storage6 實驗環境搭建詳細步驟 - Win10 + VMware WorkStation
(2)SUSE Linux Enterprise 15 SP1 系統安裝
(3)SUSE Ceph 快速部署 - Storage6
(4)SUSE Ceph 增加節點、減少節點、 洗掉OSD磁盤等操作 - Storage6
(5)深入理解 DeepSea 和 Salt 部署工具 - Storage6
首先我們通過前幾篇文章,已經搭建了一套完整的Ceph集群,對使用salt工具自動化搭建集群有所了解,下面我們就對部署方式進行詳解
SUSE Enterprise Storage 部署方式
storage4 采用的方式:
- ceph-deploy 工具,標準的ceph腳本部署,適用于中小型存盤集群
- crowbar工具,部署SUSE Openstack的標準工具
storage5/6 采用方式:
- DeepSea (Salt),輕量級,敏捷性,靈活性,彈性部署
過去我們的部署方式采用社區的方式ceph-deploy或 crowbar 工具搭建,這2種工具部署都有一定局限性,不適合大型存盤集群部署,敏捷性、靈活性太差,因此從2018年開始,SUSE Enterprise Storage 5 棄用 ceph-deploy / crowbar 群集部署工具 ,推出DeepSea方式進行部署,該方式更加輕量級,高速互通,敏捷性,靈活性,適用于各種場景部署集群系統,也是Ceph產品部署方式的趨勢,
一、DeepSea 簡介
DeepSea 旨在節省管理員的時間,讓他們自信地對 Ceph 群集執行復雜操作,Ceph 是一款高度可配置的軟體解決方案,它提高了系統管理員的自由度和職責履行能力,最低的 Ceph 設定能夠很好地滿足演示目的,但無法展示 Ceph 在處理大量節點時可體現的卓越功能,DeepSea 會收集并儲存有關單臺服務器的相關資料,例如地址和設備名稱,對于諸如 Ceph 的分布式儲存系統,可能需要收集并儲存數百個這樣的專案,收集資訊并手動將資料輸入到配置管理工具的程序非常耗費精力,并且容易出錯,準備服務器、收集配置資訊以及配置和部署 Ceph 所需執行的步驟大致相同,但是,這種做法無法解決管理獨立功能的需求,在日常操作中,必須做到不厭其煩地將硬體添加到給定的功能,以及從容地去除硬體,DeepSea 通過以下策略解決了這些需求:DeepSea 可將管理員的多項決策合并到單個檔案中,這些決策包括群集指派、角色指派和組態檔指派,此外,DeepSea 會收集各組任務以組成一個簡單的目標,每個目標就是一個階段:

關于DeepSea官方資料:
GitHub 鏈接: https://github.com/SUSE/DeepSea/wiki
二、SaltStack 簡介

SaltStack 是一個服務器基礎架構集中化管理平臺,具備配置管理、遠程執行、監控等功能,一般可以理解為簡化版的puppet和加強版的func,SaltStack 基于Python語言實作,結合輕量級訊息佇列(ZeroMQ)與Python第三方模塊(Pyzmq、PyCrypto、Pyjinjia2、 python-msgpack和PyYAML等)構建,
通過部署SaltStack環境,我們可以在成千上萬臺服務器上做到批量執行命令,根據不同業務特性進行配置集中化管理、分發檔案、采集服務器資料、作業系統基礎及軟體包管理等,SaltStack是運維人員提高作業效率、規范業務配置與操作的利器,
特性:
(1)部署簡單、方便;
(2)支持大部分UNIX/Linux及Windows環境;
(3)主從集中化管理;
(4)配置簡單、功能強大、擴展性強;
(5)主控端(master)和被控端(minion)基于證書認證,安全可靠;
(6)支持API及自定義模塊,可通過Python輕松擴展,
SaltStack: Pillar 和 Grains 詳解

SatlStack 遠程執行
1、遠程執行
- 目標 (Targeting)
- 模塊 (Module)
- 回傳 (return)
2、目標
(1)和Minion ID 有關,需要使用Minion ID
- 通配符
- 正則運算式
- 串列
通配符方式:
# salt 'node00[1-3]'.example.com cmd.run 'w'node002.example.com: 13:06:12 up 4:05, 0 users, load average: 0.28, 0.09, 0.02 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATnode001.example.com: 13:06:12 up 4:05, 0 users, load average: 0.23, 0.13, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATnode003.example.com: 13:06:12 up 4:05, 0 users, load average: 0.24, 0.09, 0.02 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
正則運算式
# salt -E 'node(001|002).example.com' test.ping node002.example.com: Truenode001.example.com: True
(2)和Minion ID 無關,不涉及到Minion ID
- 子網 / IP 地址
- Grains
- Pillar
- Compound matchers (復合匹配)
- Node groups (節點組)
- Batching execution (批處理執行)
Grains 方式,OS是SUSE
# salt -G 'os:SUSE' test.ping node001.example.com: Truenode002.example.com: Truenode003.example.com: Truenode004.example.com: Trueadmin.example.com: True
獲取 Pillar ,然后指定pillar方式
# salt 'admin*' pillar.items admin.example.com: ---------- available_roles: - storage - admin - mon - mds - mgr
.....
roles:
- master
- admin
- prometheus
- grafana
time_server:
admin.example.com
# salt -I 'roles:grafana' test.ping
admin.example.com:
True
3、模塊詳解
1000+ 的模塊,目前在不斷增加中 , saltstack模塊鏈接
admin:~ # salt 'node001*' network.arp node001.example.com: ---------- 00:0c:29:33:70:2d: 192.168.2.42 00:0c:29:33:70:37: 192.168.3.42 00:0c:29:ae:44:51: 172.200.50.39 00:0c:29:ae:44:5b: 192.168.2.39 00:0c:29:d3:ba:15: 192.168.2.41 00:0c:29:d3:ba:1f: 192.168.3.41 00:0c:29:e0:5c:8c: 192.168.2.43 00:0c:29:e0:5c:96: 192.168.3.43
admin:~ # salt 'node001*' network.interface eth1 node001.example.com: |_ ---------- address: 192.168.2.40 broadcast: 192.168.2.255 label: eth1 netmask: 255.255.255.0
三、配置和自定義
policy.cfg 檔案
/srv/pillar/ceph/proposals/policy.cfg 組態檔用于確定單個群集節點的角色,例如,哪個節點充當 OSD,或哪個節點充當監視器節點,請編輯 policy.cfg ,以反映所需的群集設定,段落采用任意順序,但所包含行的內容將重寫前面行的內容中匹配的密鑰,
1、policy.cfg 的模板
- 可以在 /usr/share/doc/packages/deepsea/examples/ 目錄中找到完整策略檔案的多個示例,
- 一般我們選擇基于角色定義的模板
# ll /usr/share/doc/packages/deepsea/examples/total 12-rw-r--r-- 1 root root 329 Aug 9 16:00 policy.cfg-generic-rw-r--r-- 1 root root 489 Aug 9 16:00 policy.cfg-regex-rw-r--r-- 1 root root 577 Aug 9 16:00 policy.cfg-rolebased
2、群集指派
要包含所有受控端,請添加以下幾行:
cluster-ceph/cluster/*.sls
要將特定的受控端加入白名單,請運行以下命令:
cluster-ceph/cluster/abc.domain.sls
要將一組受控端加入白名單,可以使用通配符:
cluster-ceph/cluster/mon*.sls
要將受控端加入黑名單,可將其設定為 unassigned :
cluster-unassigned/cluster/client*.sls
3、policy.cfg 示例
下面是一個基本 policy.cfg 檔案的示例:
1 vim /srv/pillar/ceph/proposals/policy.cfg 2 3 ## Cluster Assignment 4 cluster-ceph/cluster/*.sls 5 6 ## Roles 7 # ADMIN 8 role-master/cluster/admin*.sls 9 role-admin/cluster/admin*.sls10 11 # Monitoring12 role-prometheus/cluster/admin*.sls13 role-grafana/cluster/admin*.sls14 15 # MON16 role-mon/cluster/node00[1-3]*.sls17 18 # MGR (mgrs are usually colocated with mons)19 role-mgr/cluster/node00[1-3]*.sls20 21 # COMMON22 config/stack/default/global.yml23 config/stack/default/ceph/cluster.yml24 25 # Storage26 role-storage/cluster/node00*.sls27 28 # MDS29 role-mds/cluster/node001*.sls30 31 # IGW32 role-igw/stack/default/ceph/minions/node002*.yml33 role-igw/cluster/node002*.sls34 35 # RGW36 role-rgw/cluster/node00[3-4]*.sls
(1)第3-4行:
- 指示在 Ceph 群集中包含所有受控端,如果您不想在 Ceph 群集中包含某些受控端,請使用:
cluster-unassigned/cluster/*.slscluster-ceph/cluster/node00*.sls
- 將所有受控端標記為未指派,
- 覆寫與“node00*.sls”匹配的受控端,并將其指派到 Ceph 群集,
(2)第7-9行
- 指定主機名為admin的主機節點具有"master" 和 “admin” 角色
(3)第11-13行
- 指定要部署 Dashboard 可視化界面的節點
(4)第15-16行
- 將受控節點 node001 node002 node003 設定為MON 節點
(5)第18-19
- 將受控節點 node001 node002 node003 設定為 MGR 節點 ,該設定必須跟隨 MON 設定一樣
(6)第21-23行
- 表示接受 fsid 和 public_network 等通用配置引數的默認值
(7)第25-36行
- 受控端 “node00*” 將具有 storage IGW RGW MDS 角色
四、DeepSea 部署方式

通過架構圖,我們可以清楚的了解到,安裝 Storage6 時只要管理節點安裝 satl-master 和 salt-minion,其他OSD節點安裝 salt-minion,并且所有的 minion 都指向salt-master IP地址或主機名(推薦使用public網段地址),然后執行deepsea 的4個階段命令 “salt-run state.orch ceph.stage.X” 就可以輕松的搭建完成,
DeepSea階段說明
階段 0 — 準備:在此階段,將應用全部所需的更新,并且可能會重引導您的系統,
階段 1 — 發現:在此階段,通過Salt在客戶端安裝的salt minion, 將檢測群集中的所有硬體, 并收集 Ceph 配置所需的資訊,
階段 2 — 配置:您需要以特定的格式準備配置資料,(定義 salt 的pillar)
階段 3 — 部署:創建包含必要 Ceph 服務的基本 Ceph 群集,有關必要服務的串列
階段 4 — 服務:可在此階段安裝 Ceph 的其他功能,例如 iSCSI、RADOS 網關和CephFS,其中每個功能都是可選的,
階段 5 — 去除階段:此階段不是必需的,在初始設定期間,通常不需要此階段,在此階段,將會去除受控端的角色以及群集配置,如果您需要從群集中去除某個儲存節點,則需要運行此階段.
DeepSea CLI
DeepSea 還提供了一個 CLI 工具,供用戶監視或運行階段,同時實時將執行進度可視化,支持使用以下兩種模式來可視化階段的執行進度:
- 監視模式:可視化另一個終端會話中發出的 salt-run 命令所觸發 DeepSea 階段的執行進度,
- 獨立模式:運行 DeepSea 階段,并在該階段的構成步驟執行時提供相應的實時可視化效果,
監控模式 Monitor Mode
該程式監控提供一個詳細的,實時的可視化操作行為,當在執行運行salt-run state.orch時,監控執行期間運行了什么
# deepsea monitor

獨立模式 Stand-alone Mode
# deepsea stage run stage-name# salt-run state.orch ceph.stage.0# deepsea stage run ceph.stage.0

Deepsea幫助資訊
# man deepsea-monitorNAMEdeepsea-monitor - Starts the DeepSea stage execution progress monitor.# man deepsea-stage run

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/65570.html
標籤:其他
上一篇:來問一下古老的問題,雙網卡上網
下一篇:誰可以幫我分析一下這個抓包檔案,主要是分析主機192.168.0.117發送到網路列印機192.168.30.111的資料
