中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ceph 集群部署

發布時間:2020-04-07 22:55:50 來源:網絡 閱讀:2567 作者:酥心糖 欄目:云計算

參考文檔:https://wiki.deimos.fr/Ceph_:_performance,_reliability_and_scalability_storage_solution

Ceph 版本選擇

1. Ceph的版本發布周期

Ceph 當前的最新的LTS版本為 mimic 13.2.x 和 luminous12.2.x, 通過release信息可以查看到相關發布信息.在具體的版本中會說明是否是LTS版本。

每年大約會發布三到四個穩定版,每個穩定版都有個名字(如 ‘Firefly’ ),并且會一直提供缺陷修復,至少持續到下一個穩定版發布。

其它穩定版都是 LTS ( Long Term Stable ,長期穩定)的,而且會持續更新,直到發布了兩個 LTS 。比如 Hammer 發布之后 Dumpling 才隱退, Jewel 發布之后 Firefly 才隱退,以此類推。基本原理就是,為了修復缺陷和移植某些重要功能,對 LTS (如 Dumpling )的移植會一直持續到下一個 LTS 發布( Firefly 就是 Dumpling 之后的一個 LTS )。下一個 LTS 發布后,還有可能移植缺陷修正,主要取決于這些問題是否會妨礙升級到下一個 LTS (這里有個實例, Firefly 發布后還在修復 Dumpling ,一直持續到 Hammer 發布,主要是確保 Dumpling 可以平滑地遷移到 Firefly )。

  • LTS (長期穩定):直到后續兩個 LTS 發布
  • 穩定版:直到下一個穩定版發布
  • 開發、或測試版:不會給它移植
2. 版本約定

第一個 Ceph 版本是 0.1 ,要回溯到 2008 年 1 月。多年來,版本號方案一直沒變,直到 2015 年 4 月 0.94.1 ( Hammer 的第一個修正版)發布后,為了避免 0.99 (以及 0.100 或 1.00 ?),我們制定了新策略。

  • x.0.z - 開發版(給早期測試者和勇士們)
  • x.1.z - 候選版(用于測試集群、高手們)
  • x.2.z - 穩定、修正版(給用戶們)

x 將從 9 算起,它代表 Infernalis ( I 是第九個字母),這樣我們第九個發布周期的第一個開發版就是 9.0.0 ;后續的開發版依次是 9.0.1 、 9.0.2 等等。

3. 硬件推薦和系統要求

具體介紹可以參考官方文檔:
硬件需求說明: http://docs.ceph.com/docs/master/start/hardware-recommendations/
系統需求說明:http://docs.ceph.com/docs/master/start/os-recommendations/

4. 部署說明

Ceph有兩種安裝方式: 手動部署和使用 ceph-deploy工具部署。
手動部署比較繁瑣,但是對于初學者而言更加容易理解。 ceph-deploy部署工具的方式適用于大規模集群的部署。
這里會分別演示兩種部署方式。

ceph-12 luminous版本rpm包地址:https://download.ceph.com/rpm-luminous

ceph-13 mimic版本rpm包地址:https://download.ceph.com/rpm-mimic

使用ceph-deploy部署集群

官方文檔

0. 部署前的準備

在部署之前需要準備好三臺CentOS主機,我這里使用的是CentOS7.5,并將系統內核升級到4.x長期支持版本,相關的配置信息如下:

  1. 節點主機名和IP信息
local-node-1: 10.0.0.1
local-node-2: 10.0.0.2
local-node-3: 10.0.0.3
  1. 配置hosts解析三臺節點的主機名,并將三臺節點配置為無密碼認證模式。

  2. 關閉防火墻和Selinux

  3. 每臺主機節點至少添加一塊磁盤用于ceph存儲,在實際的生產中可以將多塊盤做raid,ceph 在添加磁盤時會自動格式化,所以此處不需要格式化。

  4. ceph對節點之間時間的要求很高,需要安裝ntp并做好時間同步,配置好epel源。
1. 所有節點安裝依賴包
yum install snappy  leveldb gdisk python-argparse gperftools-libs  -y

添加yum 源,導入key,這里我使用最新的mimic版本:

rpm --import 'https://download.ceph.com/keys/release.asc'
su -c 'rpm -Uvh https://download.ceph.com/rpm-mimic/el7/noarch/ceph-release-1-0.el7.noarch.rpm'

由于國內的網絡問題,這里可以選擇使用阿里云的源,修改repo文件如下:

[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
2. 僅在部署節點安裝 ceph-deploy工具
yum install ceph-deploy -y
3. 使用ceph-deploy部署節點
1).創建存放ceph配置文件的目錄:
mkdir /opt/ceph-cluster
2). 進入配置文件目錄,初始化node-1節點:
[root@local-node-1 ~]# cd /opt/ceph-cluster/
[root@local-node-1 ceph-cluster]# ceph-deploy  new local-node-1

==提示==:如果在執行ceph-deploy命令時出現如下錯誤,則需要安裝pyhon2-pip

# ceph-deploy new local-node-1

Traceback (most recent call last):
  File "/usr/bin/ceph-deploy", line 18, in <module>
    from ceph_deploy.cli import main
  File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 1, in <module>
    import pkg_resources
ImportError: No module named pkg_resources

# 解決辦法,安裝python2-pip
yum install python2-pip* -y

命令執行成功后會在當前目錄生成多個配置文件。

[root@local-node-1 ceph-cluster]# ll
total 12
-rw-r--r-- 1 root root  198 Feb 15 15:37 ceph.conf
-rw-r--r-- 1 root root 2993 Feb 15 15:37 ceph-deploy-ceph.log
-rw------- 1 root root   73 Feb 15 15:37 ceph.mon.keyring

如果有多個不同的網絡接口(通常ceph集群會分公共網絡為和集群網絡,也稱為public network和Cluster network),在生產環境中都會將這兩個網絡分開使用不同的網絡接口,可以在ceph.conf配置文件的[global]區域添加如下參數:

public network = {ip-address}/{netmask}    # 公共網絡,用于集群中訪問ceph存儲數據和ceph自身的監控和控制數據
cluster network = {cluster-network/netmask}  # 集群網絡,用于ceph osd之間互相同步復制ceph集群數據

如果不進行配置,默認只會使用公共網絡(public network),生產環境嚴禁這樣做。

3). 安裝ceph到各個節點,各個節點執行:
yum install ceph ceph-radosgw -y

在網絡正常的情況下也可以使用ceph-deploy來批量部署,實際效果和上述yum安裝軟件一樣:

ceph-deploy install --release mimic local-node-1 local-node-2 local-node-3

在國內網絡不好的情況下,不推薦這么做,執行此命令之后,我們通過前臺輸出,可以發現這步操作做了如下工作:

  • 移除安裝節點上已經存在的yum源
  • 更新主機節點上的yum源,這個源是官方源,由于網絡原因有可能會造成安裝不成功
  • 執行yum -y install ceph ceph-radosgw 命令安裝ceph
4). 檢查各個節點是否安裝成功:
[root@local-node-1 ~]# ceph -v
ceph version 13.2.4 (b10be4d44915a4d78a8e06aa31919e74927b142e) mimic (stable)

查看節點狀態發現屬于不健康的狀態:

[root@local-node-1 ~]# ceph status
2019-02-15 16:59:28.897 7f8a67b8c700 -1 auth: unable to find a keyring on /etc/ceph/ceph.client.admin.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin,: (2) No such file or directory
2019-02-15 16:59:28.897 7f8a67b8c700 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication
[errno 2] error connecting to the cluster
5). 在node-1節點上創建monitor,會在當前目錄生成幾個key:
[root@local-node-1 ceph-cluster]# ceph-deploy  mon create-initial
6). 分發key
[root@local-node-1 ceph-cluster]# ceph-deploy admin local-node-1 local-node-2 local-node-3
7). 創建一個管理進程(只有在luminous+ 以上版本才有此功能 >= 12.x版本)
[root@local-node-1 ceph-cluster]# ceph-deploy mgr create local-node-1
8). 查看節點上的可用磁盤,排除系統盤
# ceph-deploy disk list local-node-1
...
[local-node-1][INFO  ] Disk /dev/sda: 10.7 GB, 10737418240 bytes, 20971520 sectors
[local-node-1][INFO  ] Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
9).格式化node-1節點用于ceph存儲的磁盤

使用disk zap命令會抹掉磁盤上的分區和數據

[root@local-node-1 ceph-cluster]# ceph-deploy disk zap local-node-1 /dev/sdb

創建OSD磁盤,添加三個節點的三個磁盤:

[root@local-node-1 ceph-cluster]# ceph-deploy osd create --data /dev/sdb local-node-1
[root@local-node-1 ceph-cluster]# ceph-deploy osd create --data /dev/sdb local-node-2
[root@local-node-1 ceph-cluster]# ceph-deploy osd create --data /dev/sdb local-node-3

==注意:== 如果使用LVM邏輯卷來添加OSD,應該使用參數 --data volume_group/lv_name 而不是直接使用邏輯卷的路徑。

10). 查看集群狀態是否正常
[root@local-node-1 ceph-cluster]# ceph health
HEALTH_OK

[root@local-node-1 ceph-cluster]# ceph -s
  cluster:
    id:     6a4812f7-83cb-43e5-abac-f2b8e37db127
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum local-node-1
    mgr: local-node-1(active)
    osd: 3 osds: 3 up, 3 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   3.0 GiB used, 27 GiB / 30 GiB avail
    pgs:     

檢查節點端口信息:

[root@local-node-1 ceph-cluster]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      859/sshd            
tcp        0      0 10.0.0.1:6789           0.0.0.0:*               LISTEN      2893/ceph-mon       
tcp        0      0 0.0.0.0:6800            0.0.0.0:*               LISTEN      3815/ceph-osd       
tcp        0      0 0.0.0.0:6801            0.0.0.0:*               LISTEN      3815/ceph-osd       
tcp        0      0 0.0.0.0:6802            0.0.0.0:*               LISTEN      3815/ceph-osd       
tcp        0      0 0.0.0.0:6803            0.0.0.0:*               LISTEN      3815/ceph-osd       
tcp        0      0 0.0.0.0:6804            0.0.0.0:*               LISTEN      4049/ceph-mgr       
tcp6       0      0 :::22                   :::*                    LISTEN      859/sshd         

[root@local-node-2 /]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      860/sshd            
tcp        0      0 0.0.0.0:6800            0.0.0.0:*               LISTEN      2439/ceph-osd       
tcp        0      0 0.0.0.0:6801            0.0.0.0:*               LISTEN      2439/ceph-osd       
tcp        0      0 0.0.0.0:6802            0.0.0.0:*               LISTEN      2439/ceph-osd       
tcp        0      0 0.0.0.0:6803            0.0.0.0:*               LISTEN      2439/ceph-osd       
tcp6       0      0 :::22                   :::*                    LISTEN      860/sshd 

[root@local-node-3 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      861/sshd            
tcp        0      0 0.0.0.0:6800            0.0.0.0:*               LISTEN      2352/ceph-osd       
tcp        0      0 0.0.0.0:6801            0.0.0.0:*               LISTEN      2352/ceph-osd       
tcp        0      0 0.0.0.0:6802            0.0.0.0:*               LISTEN      2352/ceph-osd       
tcp        0      0 0.0.0.0:6803            0.0.0.0:*               LISTEN      2352/ceph-osd       
tcp6       0      0 :::22                   :::*                    LISTEN      861/sshd           

至此,ceph 基礎存儲集群部署完成。

http://docs.ceph.com/docs/master/start/quick-ceph-deploy/#

擴展集群

當我們有了以上基礎的ceph集群后,可以通過ceph-deploy來擴展集群。
為了實現mon組件的高可用,我們可以在node2和node3上也部署上mon(monitor的數量必須為奇數個,1,3,5等,以便在節點出現故障時進行選舉),同時,我們還需要在node1上添加Matedata Server(mds)組件。

ceph 集群部署

1. 添加Metadata Server

要使用CephFS,我們就必須至少安裝一個metadata sever,執行如下命令安裝 metadata server:

[root@local-node-1 ceph-cluster]# ceph-deploy  mds create local-node-1

根據輸出提示可以發現ceph-mds@local-node-1服務已經啟動。

# netstat -lntp|grep mds
tcp        0      0 0.0.0.0:6805            0.0.0.0:*               LISTEN      4549/ceph-mds 
2. 添加Monitors

在添加第二個mon或者更多mon時,必須先修改admin節點和將要部署mon節點的ceph.conf的配置文件,修改mon_initial_members, mon_hostpublic_network的相關配置:

[root@local-node-1 ceph-cluster]# cat ceph.conf 

[global]
fsid = 6a4812f7-83cb-43e5-abac-f2b8e37db127
mon_initial_members = local-node-1,local-node-2,local-node-3
mon_host = 10.0.0.1,10.0.0.2,10.0.0.3
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public_network = 10.0.0.0/24

下發配置到集群中的所有節點:

[root@local-node-1 ceph-cluster]# ceph-deploy --overwrite-conf config push local-node-2  local-node-3

更新新的配置到所有的 monitor節點上:

ceph-deploy --overwrite-conf config push local-node-1 local-node-2  local-node-3

添加mon到local-node-2和local-node-3節點上:

ceph-deploy mon add local-node-2
ceph-deploy mon add local-node-3

新增 Monitor 后,Ceph 會自動開始同步并形成法定人數。你可以用下面的命令檢查法定人數狀態:

# ceph quorum_status --format json-pretty

{
    "election_epoch": 14,
    "quorum": [
        0,
        1,
        2
    ],
    "quorum_names": [
        "local-node-1",
        "local-node-2",
        "local-node-3"
    ],
    "quorum_leader_name": "local-node-1",
    "monmap": {
        "epoch": 3,
        "fsid": "6a4812f7-83cb-43e5-abac-f2b8e37db127",
        "modified": "2019-02-18 13:39:00.705952",
        "created": "2019-02-15 17:38:09.329589",
        "features": {
            "persistent": [
                "kraken",
                "luminous",
                "mimic",
                "osdmap-prune"
            ],
            "optional": []
        },
        "mons": [
            {
                "rank": 0,
                "name": "local-node-1",
                "addr": "10.0.0.1:6789/0",
                "public_addr": "10.0.0.1:6789/0"
            },
            {
                "rank": 1,
                "name": "local-node-2",
                "addr": "10.0.0.2:6789/0",
                "public_addr": "10.0.0.2:6789/0"
            },
            {
                "rank": 2,
                "name": "local-node-3",
                "addr": "10.0.0.3:6789/0",
                "public_addr": "10.0.0.3:6789/0"
            }
        ]
    }
}

==注意:== 當你的 Ceph 集群運行著多個 monitor 時,各 monitor 主機上都應該配置 NTP ,而且要確保這些 monitor 位于 NTP 服務的同一級。

3. 添加 Managers

Ceph Manager守護進程以活動/備用的模式運行。 部署其他管理器(Manager)守護程序可確保在一個守護程序或主機發生故障時,另一個守護程序或主機可以在不中斷服務的情況下接管。

為 其它兩臺節點添加Manager:

[root@local-node-1 ceph-cluster]# ceph-deploy mgr create local-node-2 local-node-3

查看狀態,已經添加了三個mgr:

[root@local-node-1 ceph-cluster]# ceph -s
  cluster:
    id:     6a4812f7-83cb-43e5-abac-f2b8e37db127
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum local-node-1,local-node-2,local-node-3
    mgr: local-node-1(active), standbys: local-node-2, local-node-3
    osd: 3 osds: 3 up, 3 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   3.0 GiB used, 27 GiB / 30 GiB avail
    pgs:     
4. 添加RGW 實例

使用ceph的 Ceph Object Gateway,還需要部署一個RGW的實例,使用如下命令創建一個新的RGW實例:

[root@local-node-1 ceph-cluster]# ceph-deploy rgw create local-node-1

默認情況下RGW會監聽7480端口,如果想修改此默認端口可以通過編輯運行RGW節點上的ceph.conf文件:

[client]
rgw frontends = civetweb port=80

使用IPv6的情況:

[client]
rgw frontends = civetweb port=[::]:80

使用瀏覽器訪問此端口能獲取到如下信息:

# curl 10.0.0.1:7480
<?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucketsResult>

存儲/檢索對象數據

如果要存儲對象數據到ceph集群中,ceph的客戶必須滿足以下條件:

  • 設置對象名稱
  • 指定資源池

Ceph客戶端檢索最新的集群映射,CRUSH算法計算如何將對象映射到放置組,然后計算如何動態地將放置組分配給Ceph OSD守護進程。 要查找對象位置,您只需要對象名稱和池名稱。例如:

ceph osd map {poolname} {object-name}
練習: 定位某個對象

作為練習,我們創建一個對象,指定對象的名稱,并指定一個文件路徑,此文件包含了對象數據,并使用rados put 命令指定存儲池名稱:

echo {Test-data} > testfile.txt
ceph osd pool create mytest 8
rados put {object-name} {file-path} --pool=mytest

# 示例:
echo testdata > testfile.txt

# ceph osd pool create mytest 8
pool 'mytest' created

rados put test-object-1 testfile.txt --pool=mytest

驗證ceph存儲了此對象:

# rados -p mytest ls
test-object-1

定位對象:

ceph osd map {pool-name} {object-name}

# ceph osd map mytest test-object-1
osdmap e34 pool 'mytest' (5) object 'test-object-1' -> pg 5.74dc35e2 (5.2) -> up ([1,0,2], p1) acting ([1,0,2], p1)
刪除對象和存儲池

刪除對象:

rados rm test-object-1 --pool=mytest

刪除存儲池:

ceph osd pool rm mytest

使用上面的刪除命令會提示確認信息,正常刪除使用如下命令:

# ceph osd pool rm mytest mytest --yes-i-really-really-mean-it 
Error EPERM: pool deletion is disabled; you must first set the mon_allow_pool_delete config option to true before you can destroy a pool

如果是上述報錯需要修改ceph.conf配置文件,并重啟mon服務:

[mon]
mon allow pool delete = true

重啟ceph-mon:

systemctl restart ceph-mon.target

然后再執行刪除,即可成功:

[root@local-node-1 ceph-cluster]# ceph osd pool rm mytest mytest --yes-i-really-really-mean-it 
pool 'mytest' removed

[root@local-node-1 ceph-cluster]# rados df
POOL_NAME              USED OBJECTS CLONES COPIES MISSING_ON_PRIMARY UNFOUND DEGRADED RD_OPS      RD WR_OPS    WR 
.rgw.root           1.1 KiB       4      0     12                  0       0        0     12   8 KiB      4 4 KiB 
default.rgw.control     0 B       8      0     24                  0       0        0      0     0 B      0   0 B 
default.rgw.log         0 B     175      0    525                  0       0        0  10251 9.8 MiB   6834   0 B 
default.rgw.meta        0 B       0      0      0                  0       0        0      0     0 B      0   0 B 

total_objects    187
total_used       3.0 GiB
total_avail      27 GiB
total_space      30 GiB

清除配置

如果在配置的過程中出現問題想要重新配置,可以執行下面的命令來清除配置和ceph軟件:

// 清除節點ceph軟件和數據,如果運行了purge命令,必須重新安裝ceph
ceph-deploy purge {ceph-node} [{ceph-node}]
ceph-deploy purgedata {ceph-node} [{ceph-node}]

// 清除配置:
ceph-deploy forgetkeys

// 清除當前目錄的配置文件
rm ceph.*

確認集群狀態

如果集群是處于 active + clean 狀態,則說明集群正常:

[root@local-node-1 ceph-cluster]# ceph -s
  cluster:
    id:     6a4812f7-83cb-43e5-abac-f2b8e37db127
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum local-node-1,local-node-2,local-node-3
    mgr: local-node-1(active), standbys: local-node-2, local-node-3
    osd: 3 osds: 3 up, 3 in
    rgw: 1 daemon active

  data:
    pools:   4 pools, 32 pgs
    objects: 187  objects, 1.1 KiB
    usage:   3.0 GiB used, 27 GiB / 30 GiB avail
    pgs:     32 active+clean
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沂南县| 关岭| 武定县| 新野县| 诏安县| 萨嘎县| 津南区| 巴塘县| 石渠县| 兴和县| 开封县| 明水县| 祁东县| 台东市| 桓台县| 宽甸| 阳山县| 崇左市| 宽城| 扶风县| 布尔津县| 南涧| 白银市| 同江市| 巴林右旗| 三河市| 都兰县| 五家渠市| 江孜县| 阳新县| 平邑县| 黑龙江省| 汪清县| 曲麻莱县| 鄂州市| 商都县| 浦县| 石林| 镇江市| 监利县| 罗平县|