====== Расширение 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 |