Доброго времени суток!
Сегодня хотел бы рассказать как происходит процесс добавления новых узлов в кластер Oracle NoSQL Database. А точнее как происходит наращивание шардов. Это поможет нам решить 2 задачи:
- Увеличит емкость базы данных
- Увеличит пропускную способность на запись (мы помним, что один шард - один мастер, который пишет).
Предположим у нас есть двухшардовая конфигурация состоящая из 6 серверов (2х3), которая была раздеплоена следующим образом:
kv-> configure -name "FilDB"
kv-> plan deploy-datacenter -name "FilDC" -rf 3 -wait
kv-> plan deploy-sn -dc dc1 -host datanode1 -port 5011 -wait
kv-> plan deploy-admin -sn sn1 -port 5001 -wait
kv-> plan deploy-sn -dc dc1 -host datanode2 -port 5012 -wait
kv-> plan deploy-sn -dc dc1 -host datanode3 -port 5013 -wait
kv-> plan deploy-sn -dc dc1 -host datanode4 -port 5014 -wait
kv-> plan deploy-sn -dc dc1 -host datanode5 -port 5015 -wait
kv-> plan deploy-sn -dc dc1 -host datanode6 -port 5016 -wait
kv-> pool create -name FilPool
kv-> pool join -name FilPool -sn sn1
kv-> pool join -name FilPool -sn sn2
kv-> pool join -name FilPool -sn sn3
kv-> pool join -name FilPool -sn sn4
kv-> pool join -name FilPool -sn sn5
kv-> pool join -name FilPool -sn sn6
kv-> topology create -name topo -pool FilPool -partitions 300
kv-> plan deploy-topology -name topo -wait
Визуально это будет выглядеть как то так:
Если есть желание посмотреть подобное состояние из командной строки надо набрать команду ping из kvadmin:
[root@datanode1 ~]# kvadmin
kv-> ping
Pinging components of store FilDB based upon topology sequence #315
FilDB comprises 300 partitions and 6 Storage Nodes
Storage Node [sn1] on datanode1:5011 Datacenter: FilDC [dc1] Status: RUNNING Ver: 11gR2.2.0.26 2013-01-28 12:19:21 UTC Build id: 99ef986805a3
Rep Node [rg1-rn1] Status: RUNNING,MASTER at sequence number: 321 haPort: 8101
Storage Node [sn2] on datanode2:5012 Datacenter: FilDC [dc1] Status: RUNNING Ver: 11gR2.2.0.26 2013-01-28 12:19:21 UTC Build id: 99ef986805a3
Rep Node [rg1-rn2] Status: RUNNING,REPLICA at sequence number: 321 haPort: 8200
Storage Node [sn3] on datanode3:5013 Datacenter: FilDC [dc1] Status: RUNNING Ver: 11gR2.2.0.26 2013-01-28 12:19:21 UTC Build id: 99ef986805a3
Rep Node [rg1-rn3] Status: RUNNING,REPLICA at sequence number: 321 haPort: 8300
Storage Node [sn4] on datanode4:5014 Datacenter: FilDC [dc1] Status: RUNNING Ver: 11gR2.2.0.26 2013-01-28 12:19:21 UTC Build id: 99ef986805a3
Rep Node [rg2-rn1] Status: RUNNING,MASTER at sequence number: 321 haPort: 8400
Storage Node [sn5] on datanode5:5015 Datacenter: FilDC [dc1] Status: RUNNING Ver: 11gR2.2.0.26 2013-01-28 12:19:21 UTC Build id: 99ef986805a3
Rep Node [rg2-rn2] Status: RUNNING,REPLICA at sequence number: 321 haPort: 8500
Storage Node [sn6] on datanode6:5016 Datacenter: FilDC [dc1] Status: RUNNING Ver: 11gR2.2.0.26 2013-01-28 12:19:21 UTC Build id: 99ef986805a3
Rep Node [rg2-rn3] Status: RUNNING,REPLICA at sequence number: 321 haPort: 8600
kv->
Теперь возникла необходимость увеличить емкость базы данных путем добавления новых серверов.
Нет ничего проще для этого надо выполнить ряд команд в админской консоли (добавление серверов в пул и перебалансировка):
kv-> pool join -name FilPool -sn sn7
kv-> pool join -name FilPool -sn sn8
kv-> pool join -name FilPool -sn sn9
kv-> topology clone -current -name toponew
kv-> topology redistribute -name toponew -pool FilPool
kv-> plan deploy-topology -name toponew -wait
После чего начнется перебалансировка партиций (тех самых число которых не меняется).
То есть первоначально я создал 2 шарда и 300 партиций. Они равномерно распределились между партициями. Теперь я добавил 3 шард. Произошла перебалансировка партиций - у каждого шарда осталось по 100 партиций.
Для того что бы убедиться можно дать следующую команду:
kv-> show topology
............................
............................
shard=[rg1] num partitions=100
[rg1-rn1] sn=sn1
[rg1-rn2] sn=sn2
[rg1-rn3] sn=sn3
shard=[rg2] num partitions=100
[rg2-rn1] sn=sn4
[rg2-rn2] sn=sn5
[rg2-rn3] sn=sn6
shard=[rg3] num partitions=100
[rg3-rn1] sn=sn7
[rg3-rn2] sn=sn8
[rg3-rn3] sn=sn9
kv->
Любите технологии, не бойтесь экспериментировать и если у вас появятся какие-либо вопросы касаемо этого поста - не стеснятесь их задавать!
Комментариев нет:
Отправить комментарий