Расширяем Ceph кластер добавляя новые ресурсы в существующую инфраструктуру.
В этой статье мы добавим дополнительные OSD, а также мониторы для установки кворума Ceph мониторов.
Подготовим и создадим OSD на новом сервере.
ceph-deploy disk zap {osd-server-name}:{disk-name} |
Например:
ceph-deploy disk zap ceph-node-02:sdb ceph-node-02:sdc |
ceph-deploy osd prepare {node-name}:{data-disk}[:{journal-disk}] |
Например:
ceph-deploy osd prepare ceph-node-02:sdb ceph-node-02:sdc |
После успешной подготовки дисков активируем OSD. (Обратите внимание, что необходимо указать разделы диска.)
ceph-deploy osd activate {node-name}:{data-disk-partition}[:{journal-disk-partition}] |
Например:
ceph-deploy osd activate ceph-node-02:sdb1:/dev/sdb2 ceph-node-02:sdc1:/dev/sdc2 |
После того как мы добавили новую OSD, кластер начнет ребалансировку путем миграции плейсмент групп на новую OSD. Этот процесс можно наблюдать следующей командой:
ceph -w
|
Если появилось предупреждение о нехватке плейсмент групп на OSD
health HEALTH_WARN too few PGs per OSD (21 < min 30) |
При добавлении новых OSD необходимо пересчитать PG и перенастроить пулы. Всего у нас 6*100/2=300. Округляя вниз до степени 2, примем общее PG = 256.
Помня, что PG выставляется как степень 2, увеличим наш пул до 256.
ceph osd pool set POOL_NAME pg_num 256 ceph osd pool set POOL_NAME pgp_num 256 |
Проверяем состояние:
[ceph@ceph-node-admin ceph-admin]$ ceph -w cluster ca89dd68-e6d7-4f62-b947-62abcc111ac0 health HEALTH_OK monmap e1: 1 mons at {ceph-node-mon=192.168.2.68:6789/0} election epoch 2, quorum 0 ceph-node-mon osdmap e38: 7 osds: 6 up, 6 in flags sortbitwise pgmap v97: 256 pgs, 1 pools, 0 bytes data, 0 objects 208 MB used, 91885 MB / 92093 MB avail 256 active+clean 2016-02-29 15:15:02.835201 mon.0 [INF] pgmap v96: 256 pgs: 256 active+clean; 0 bytes data, 207 MB used, 91886 MB / 92093 MB avail 2016-02-29 15:15:03.846511 mon.0 [INF] pgmap v97: 256 pgs: 256 active+clean; 0 bytes data, 208 MB used, 91885 MB / 92093 MB avail 2016-02-29 15:15:04.858080 mon.0 [INF] pgmap v98: 256 pgs: 256 active+clean; 0 bytes data, 210 MB used, 91883 MB / 92093 MB avail 2016-02-29 15:17:02.838908 mon.0 [INF] pgmap v99: 256 pgs: 256 active+clean; 0 bytes data, 210 MB used, 91883 MB / 92093 MB avail 2016-02-29 15:17:03.846191 mon.0 [INF] pgmap v100: 256 pgs: 256 active+clean; 0 bytes data, 210 MB used, 91883 MB / 92093 MB avail 2016-02-29 15:17:04.851844 mon.0 [INF] pgmap v101: 256 pgs: 256 active+clean; 0 bytes data, 210 MB used, 91883 MB / 92093 MB avail |
Для обеспечения высокой доступности Ceph Storage Cluster работает с несколькими мониторами, на случай выхода из строя одного из мониторов. Для этого используется алгоритм Paxos, который требует наличие большинства мониторов для формирования кворума, в соотношении 1, 2:3, 3:4, 3:5, 4:6, и так далее.
Добавим дополнительный монитор к нашему кластеру.
ceph-deploy mon add {ceph-node} |
Например:
ceph-deploy mon add ceph-node-01 ceph-node-02 |
После того, как мы добавили новые Ceph мониторы, Ceph начнет синхронизацию мониторов и сформирует кворум. Проверить состояние кворума можно командой:
ceph quorum_status --format json-pretty
|
[ceph@ceph-node-admin ceph-admin]$ ceph quorum_status --format json-pretty { "election_epoch": 12, "quorum": [ 0, 1, 2 ], "quorum_names": [ "ceph-node-mon", "ceph-node-01", "ceph-node-02" ], "quorum_leader_name": "ceph-node-mon", "monmap": { "epoch": 3, "fsid": "ca89dd68-e6d7-4f62-b947-62abcc111ac0", "modified": "2016-03-16 12:54:53.061980", "created": "0.000000", "mons": [ { "rank": 0, "name": "ceph-node-mon", "addr": "192.168.2.68:6789\/0" }, { "rank": 1, "name": "ceph-node-01", "addr": "192.168.2.70:6789\/0" }, { "rank": 2, "name": "ceph-node-02", "addr": "192.168.2.71:6789\/0" } ] } } |
Проверяем статус:
clock skew detected on mon.ceph-node-01,ceph-node-02 Monitor clock skew detected |
mon.ceph-node-01 addr 192.168.2.70:6789/0 clock skew 502482s > max 0.15s (latency 0.716532s) mon.ceph-node-02 addr 192.168.2.71:6789/0 clock skew 502482s > max 0.15s (latency 0.716532s) |
При получении данной ошибки проверяем работу NTP на серверах.
Обязательно подправим конфиг ceph.conf
:
[global] mon initial members = ceph-node-mon,ceph-node-01,ceph-node-02 mon host = ceph-node-mon,ceph-node-01,ceph-node-02 mon addr = 192.168.2.68:6789,192.168.2.70:6789,192.168.2.71:6789 [mon.a] host = ceph-node-mon mon addr = 192.168.2.68:6789 [mon.b] host = ceph-node-01 mon addr = 192.168.2.70:6789 [mon.c] host = ceph-node-02 mon addr = 192.168.2.71:6789 |