001.Ansible部署RHCS存儲集群

来源:https://www.cnblogs.com/itzgr/archive/2019/03/17/10546584.html
-Advertisement-
Play Games

一 前期準備1.1 前置條件至少有三個不同的主機運行monitor (MON)節點;至少三個直接存儲(非外部SAN硬體)的OSD節點主;至少兩個不同的manager (MGR)節點;如果使用CephFS,則至少有兩個完全相同配置的MDS節點;如果使用Ceph對象網關,則至少有兩個不同的RADOSGW... ...


一 前期準備

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 部署節點配置主機名

  1 [root@servera ~]# vi /etc/hosts
  2 172.25.250.10 servera
  3 172.25.250.12 serverc
  4 172.25.250.13 serverd
  5 172.25.250.14 servere

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

3.2 創建相關用戶

  1 [root@servera ~]# useradd student
  2 [root@servera ~]# echo student | passwd --stdin student		#創建非root的管理用戶
  3 [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用戶
  5 [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
  6 [root@servera ~]# for i in {a..e}; do echo "====server${i}====";ssh root@server${i} 'echo "student ALL = (root) NOPASSWD:ALL" > /etc/sudoers'; done
  7 [root@servera ~]# for i in {a..e}; do echo "====server${i}====";ssh root@server${i} 'chmod 0440 /etc/sudoers'; done

3.3 配置部署節點免密鑰

  1 [root@servera ~]# su - student
  2 [student@servera ~]$ ssh-keygen -f ~/.ssh/id_rsa -N ''
  3 [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

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

提示:Ansible預設使用/etc/ansible/hosts作為Inventory文件,也可使用-f參數手動指定其他文件。
  1 [student@servera ~]$ sudo vi /etc/ansible/hosts
  2 [mons]
  3 server[c:e]
  4 
  5 [mgrs]
  6 server[c:e]
  7 [student@servera ~]$ ansible mons -m ping		#測試mons組節點通信
  8 [student@servera ~]$ ansible mgrs -m ping		#測試mgrs組節點通信
  9 [student@servera ~]$ ansible mons -m command -a id	#通過命令測試mons組節點
 10 [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

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

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

3.6 創建all.yml

  1 [student@servera ~]$ cd /usr/share/ceph-ansible/group_vars/
  2 [student@servera group_vars]$ sudo cp all.yml.sample all.yml
  3 [student@servera group_vars]$ sudo vi all.yml
  4 ---
  5 dummy:
  6 ntp_service_enabled: false			#本實驗採用chrony進行時鐘同步
  7 ceph_origin: repository
  8 ceph_repository: rhcs
  9 ceph_rhcs_version: "3"
 10 ceph_repository_type: cdn
 11 rbd_cache: "true"				#開啟RBD回寫緩存
 12 rbd_cache_writethrough_until_flush: "false"	#在切換回寫之前,不從寫透開始。
 13 rbd_client_directories: false		#不要創建客戶機目錄(它們應該已經存在)。
 14 monitor_interface: eth0
 15 journal_size: 1024				#本環境存儲設備很小,OSD日誌比通常建議的要小
 16 public_network: 172.25.250.0/24
 17 cluster_network: "{{ public_network }}"
 18 ceph_conf_overrides:
 19   global:
 20     mon_osd_allow_primary_affinity: 1
 21     mon_clock_drift_allowed: 0.5		#允許MON時鐘間隔最多0.5秒
 22     osd_pool_default_size: 2
 23     osd_pool_default_min_size: 1		#降低存儲池複製大小的預設設置
 24     mon_pg_warn_min_per_osd: 0		#見提示一
 25     mon_pg_warn_max_per_osd: 0		#見提示二
 26     mon_pg_warn_max_object_skew: 0		#見提示三
 27   client:
 28     rbd_default_features: 1			#僅為以後的練習啟用一組特定的客戶機功能

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

3.7 正式部署Ceph集群

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

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

3.8 確認驗證Ceph集群

  1 [student@servera ~]$ ssh ceph@serverc ceph -s
002
  1 [student@servera ~]$ ssh ceph@serverc cat /etc/ceph/ceph.conf
003
  1 [student@servera ~]$ ssh ceph@serverc ps aux | grep ceph-mon
004

3.9 創建osds.yml

  1 [student@servera ~]$ cd /usr/share/ceph-ansible/group_vars/
  2 [student@servera group_vars]$ sudo cp osds.yml.sample osds.yml
  3 [student@servera group_vars]$ sudo vi osds.yml
  4 ---
  5 dummy:
  6 osd_scenario: "collocated"			#OSD使用併列的OSD形式
  7 devices:
  8   - /dev/vdb				#使用/dev/vdb作為後端存儲設備

3.10 配置Ansible Inventory

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 金三銀四是一年當中的招聘最旺盛的時期,即招聘高峰期,在這個期間內有非常多名企巨頭公司的放出大量的崗位信息。以博主幾年的工作經驗來看,在這期間找到稱心如意的工作的幾率大大提升,對於很多程式員來說,薪水高、環境好、離家近、不加班就是一個非常好的工作了。工作幾年,博主一開始畢業的時候待過小公司,後面也跳槽 ...
  • 簡介 grep (global search regular expression(RE) and print out the line,全面搜索正則表達式並把行列印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行列印出來。 Unix的grep家族包括grep、egrep和f ...
  • 使用LVS實現負載均衡原理及安裝配置詳解 負載均衡集群是 load balance 集群的簡寫,翻譯成中文就是負載均衡集群。常用的負載均衡開源軟體有nginx、lvs、haproxy,商業的硬體負載均衡設備F5、Netscale。這裡主要是學習 LVS 並對其進行了詳細的總結記錄。 一、負載均衡LV ...
  • Linux的文件關係: / 根最大的文件夾,存儲此台電腦的所有數據 /etc 存放電腦的配置文件 /var/log 存放電腦的日誌文件 /home 家的位置 路徑:相對路徑、絕對路徑(從根下開始) Linux的命令格式: 命令 -【選項】 【路徑或參數】 註: ls 查看當前目錄下的所有文件 - ...
  • 4、Linux的安裝(Windows環境下): 1)Windows環境需要藉助虛擬機來安裝Linux系統,這個推薦使用的軟體是VMWare,官網能下載到的最新版本是Workstation Pro15.0,下載地址:https://my.vmware.com/en/web/vmware/info/sl ...
  • DC端(feiquan.com): 已經在AD中創建了一個用戶Alice: Alice用戶的關鍵信息: 其中,\\win-quan\Domain是網路共用路徑。 為了訪問方便我在\\Win-quan上共用的路徑是: 其中C:\Domain\users\Alice 已經授予了Alice用戶對文件夾的完 ...
  • 從未寫過腳本我的最近接了倆腳本的需求,就在這分享一下我的我學到基礎知識主要就四部分內容 一、變數 變數的定義 字元串可以用單引號和雙引號包裹,也可不包裹。數字話不用引號包裹的話就是一個數值。 變數也可以用來接受語句給變數賦值 上面的語句是接收filepath 下的txt.txt文檔 數組的定義 程式 ...
  • 編寫腳本實現DHCP服務與DHCP中繼自動化執行 本腳本是在liunx搭建DHCP伺服器以及DHCP中繼伺服器實驗環境下實現的https://www.cnblogs.com/yuzly/p/10539317.html 源碼如下: 1.在dhcp server端執行腳本 2.測試dhcp server ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...