====== Расширение Ceph кластера ======
Расширяем Ceph кластер добавляя новые ресурсы в существующую инфраструктуру.
В этой статье мы добавим дополнительные OSD, а также мониторы для установки кворума Ceph мониторов.
==== Добавляем OSD ====
Подготовим и создадим OSD на новом сервере.
=== Затираем данные на дисках: ===
|ceph-deploy disk zap {osd-server-name}:{disk-name}
|
Например:
|ceph-deploy disk zap ceph-node-02:sdb ceph-node-02:sdc
|
=== Выполняем подготовку OSD (файловая система XFS): ===
|ceph-deploy osd prepare {node-name}:{data-disk}[:{journal-disk}]
|
Например:
|ceph-deploy osd prepare ceph-node-02:sdb ceph-node-02:sdc
|
=== Активируем OSD ===
После успешной подготовки дисков активируем 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 Monitor ====
Для обеспечения высокой доступности Ceph Storage Cluster работает с несколькими мониторами, на случай выхода из строя одного из мониторов.
Для этого используется [[https://ru.wikipedia.org/wiki/Алгоритм_Паксос|алгоритм 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
|