Введение в шардирование
Чтобы получить инструкции по установке, обратитесь к руководству по установке vshard.
For a pre-configured development cluster, check out the example/
directory in
the vshard repository.
This example includes 5 Tarantool instances and 2 replica sets:
router_1
– экземпляр роутера (router
)storage_1_a
– экземпляр хранилища (storage
), мастер первого набора репликstorage_1_b
– экземпляр хранилища (storage
), реплика из первого набора репликstorage_2_a
– экземпляр хранилища (storage
), мастер второго набора репликstorage_2_b
– экземпляр хранилища (storage
), реплика из второго набора реплик
All instances are managed using the tt administrative utility.
Измените директорию example/
и используйте команду make
для запуска кластера:
$ cd example/
$ make
Необходимо знать следующие команды make
:
make start
– запуск всех экземпляров Tarantoolmake stop
– остановка всех экземпляров Tarantoolmake logcat
– вывод журналов всех экземпляровmake enter
– вход в административную консоль на роутереrouter_1
make clean
– очистка всех персистентных данныхmake test
– запуск набора тестов (можно также выполнитьtest-run.py
в директории с тестамиtest
)make
– выполнитьmake stop
,make clean
,make start
иmake enter
Например, для запуска всех экземпляров используйте make start
:
$ make start
$ ps x|grep tarantool
46564 ?? Ss 0:00.34 tarantool storage_1_a.lua <running>
46566 ?? Ss 0:00.19 tarantool storage_1_b.lua <running>
46568 ?? Ss 0:00.35 tarantool storage_2_a.lua <running>
46570 ?? Ss 0:00.20 tarantool storage_2_b.lua <running>
46572 ?? Ss 0:00.25 tarantool router_1.lua <running>
Для выполнения команд в административной консоли, используйте общедоступный API:
unix/:./data/router_1.control> vshard.router.info()
---
- replicasets:
ac522f65-aa94-4134-9f64-51ee384f1a54:
replica: &0
network_timeout: 0.5
status: available
uri: storage@127.0.0.1:3303
uuid: 1e02ae8a-afc0-4e91-ba34-843a356b8ed7
uuid: ac522f65-aa94-4134-9f64-51ee384f1a54
master: *0
cbf06940-0790-498b-948d-042b62cf3d29:
replica: &1
network_timeout: 0.5
status: available
uri: storage@127.0.0.1:3301
uuid: 8a274925-a26d-47fc-9e1b-af88ce939412
uuid: cbf06940-0790-498b-948d-042b62cf3d29
master: *1
bucket:
unreachable: 0
available_ro: 0
unknown: 0
available_rw: 3000
status: 0
alerts: []
...
Конфигурация простого сегментированного кластера может выглядеть следующим образом:
local cfg = {
memtx_memory = 100 * 1024 * 1024,
bucket_count = 10000,
rebalancer_disbalance_threshold = 10,
rebalancer_max_receiving = 100,
sharding = {
['cbf06940-0790-498b-948d-042b62cf3d29'] = {
replicas = {
['8a274925-a26d-47fc-9e1b-af88ce939412'] = {
uri = 'storage:storage@127.0.0.1:3301',
name = 'storage_1_a',
master = true
},
['3de2e3e1-9ebe-4d0d-abb1-26d301b84633'] = {
uri = 'storage:storage@127.0.0.1:3302',
name = 'storage_1_b'
}
},
},
['ac522f65-aa94-4134-9f64-51ee384f1a54'] = {
replicas = {
['1e02ae8a-afc0-4e91-ba34-843a356b8ed7'] = {
uri = 'storage:storage@127.0.0.1:3303',
name = 'storage_2_a',
master = true
},
['001688c3-66f8-4a31-8e19-036c17d489c2'] = {
uri = 'storage:storage@127.0.0.1:3304',
name = 'storage_2_b'
}
},
},
},
}
Данный кластер включает в себя один роутер (router
) и два хранилища (storage
). Каждое хранилище storage
включает в себя один мастер и одну реплику. Поле sharding
(шардинг) определяет логическую топологию сегментированного кластера Tarantool. Все остальные поля передаются в box.cfg()
в неизменном виде. Для получения подробной информации см. раздел Справочник по настройке.
На роутерах вызовите vshard.router.cfg(cfg)
:
cfg.listen = 3300
-- Запуск базы данных с шардингом
vshard = require('vshard')
vshard.router.cfg(cfg)
На хранилищах вызовите vshard.storage.cfg(cfg, uuid_экземпляра)
:
-- Получение имени экземпляра
local MY_UUID = "de0ea826-e71d-4a82-bbf3-b04a6413e417"
-- Вызов поставщика конфигурации
local cfg = require('localcfg')
-- Запуск базы данных с шардингом
vshard = require('vshard')
vshard.storage.cfg(cfg, MY_UUID)
vshard.storage.cfg()
автоматически вызывает box.cfg()
и настраивает порт для прослушивания и параметры репликации.
Образец конфигурации можно посмотреть в файлах router.lua
и storage.lua
в директории example/
репозитория vshard.