1

I have an application developed on Tarantool Cartridge. My cluster consists of 12 Tarantool instances divided through 4 replica sets (some are routers, some are storages). Now starting setup this cluster from scratch, I configure this cluster manually on Web UI admin application: create replica sets, bootstrap storages, configure failover mode. How can I do this configuration automatically? What is the best way?

peneksglazami
  • 52
  • 1
  • 7

2 Answers2

2

There are such tools:

Rosik
  • 324
  • 1
  • 5
1

You can start all tarantool instances that should be included in the cluster, connect to one of them via tarantoolctl and execute a script that determines the cluster topology, initialize sharding via vshard, and configure the failover mode (in the example, via etcd).

cartridge = require('cartridge')
replicasets = { {
                    alias = 'router1',
                    roles = { 'router', 'vshard-router', 'failover-coordinator' },
                    join_servers = { { uri = '172.20.0.2:3301' } }
                }, {
                    alias = 'router2',
                    roles = { 'router', 'vshard-router', 'failover-coordinator' },
                    join_servers = { { uri = '172.20.0.3:3301' } }
                }, {
                    alias = 'router3',
                    roles = { 'router', 'vshard-router', 'failover-coordinator' },
                    join_servers = { { uri = '172.20.0.4:3301' } }
                }, {
                    alias = 'storage1',
                    roles = { 'storage', 'vshard-storage' },
                    join_servers = { { uri = '172.20.0.2:3302' },
                                     { uri = '172.20.0.3:3302' },
                                     { uri = '172.20.0.4:3302' } }
                }, {
                    alias = 'storage2',
                    roles = { 'storage', 'vshard-storage' },
                    join_servers = { { uri = '172.20.0.3:3303' },
                                     { uri = '172.20.0.2:3303' },
                                     { uri = '172.20.0.4:3303' } }
                }, {
                    alias = 'storage3',
                    roles = { 'storage', 'vshard-storage' },
                    join_servers = { { uri = '172.20.0.4:3304' },
                                     { uri = '172.20.0.2:3304' },
                                     { uri = '172.20.0.3:3304' } }
                } }

cartridge.admin_edit_topology({ replicasets = replicasets })
cartridge.admin_bootstrap_vshard()
cartridge.failover_set_params({
    mode = 'stateful',
    state_provider = 'etcd2',
    etcd2_params = {
        prefix = '/',
        lock_delay = 10,
        endpoints = { '172.20.0.2:2379', '172.20.0.3:2379', '172.20.0.4:2379' }
    }
})

peneksglazami
  • 52
  • 1
  • 7