Top.Mail.Ru
Setting up replicasets | Tarantool
Tarantool
Check out the new release 2.8

Setting up replicasets

Setting up replicasets

The cartridge replicasets command is used to configure replica sets on local start.

cartridge replicasets [subcommand] [flags] [args]

The following flags work with any replicasets subcommand:

--name Application name.
--run-dir The directory where PID and socket files are stored. Defaults to ./tmp/run or the run-dir value in .cartridge.yml.
--cfg Instances’ configuration file. Defaults to ./instances.yml or the cfg value in .cartridge.yml.

Replicasets are configured using the Cartridge Lua API. All instances in the topology are described in a single file, instances.yml (see the --cfg flag). The instances receive their configuration through instance console sockets that can be found in the run directory.

First, all the running instances mentioned in instances.yml are organized into a membership network. In this way, Cartridge checks if there are any instances that have already joined the cluster. One of these instances is then used to perform cluster operations.

cartridge replicasets setup [flags]

Setup replica sets using a file.

Flags:

--file File with replica set configuration. Defaults to replicasets.yml.
--bootstrap-vshard Bootstrap vshard upon setup.

Example configuration:

router:
  instances:
  - router
  roles:
  - vshard-router
  - app.roles.custom
s-1:
  instances:
  - s1-master
  - s1-replica
  roles:
  - vshard-storage
  weight: 11
  all_rw: false
  vshard_group: default

All the instances should be described in instances.yml (or another file passed via --cfg).

cartridge replicasets save [flags]

Saves the current replica set configuration to a file.

Flags:

--file The file to save the configuration to. Defaults to replicasets.yml.

cartridge replicasets list [flags]

Lists the current cluster topology.

cartridge replicasets join [INSTANCE_NAME...] [flags]

Joins an instance to a cluster.

Flags:

--replicaset Name of the replica set

If a replica set with the specified alias isn’t found in cluster, it is created. Otherwise, instances are joined to an existing replica set.

To join an instance to a replica set, Cartridge requires the instance to have its advertise_uri specified in instances.yml.

cartridge replicasets list-roles [flags]

List the available roles. .. // what does this mean?

cartridge replicasets list-vshard-groups [flags]

List the available vshard groups.

cartridge replicasets add-roles [ROLE_NAME...] [flags]

Add roles to the replica set.

Flags:

--replicaset Name of the replica set
--vshard-group Vshard group for vshard-storage replica sets

cartridge replicasets remove-roles [ROLE_NAME...] [flags]

Remove roles from the replica set.

Flags:

--replicaset Name of the replica set

cartridge replicasets set-weight WEIGHT [flags]

Specify replica set weight.

Flags:

--replicaset Name of the replica set

cartridge replicasets set-failover-priority INSTANCE_NAME... [flags]

Configure replica set failover priority.

Flags:

--replicaset Name of the replica set

cartridge replicasets bootstrap-vshard [flags]

Bootstrap vshard.

cartridge replicasets expel [INSTANCE_NAME...] [flags]

Expel one or more instances from the cluster.

We’ll use an application created with cartridge create. Here is its instances.yml file:

---
myapp.router:
advertise_uri: localhost:3301
http_port: 8081

myapp.s1-master:
advertise_uri: localhost:3302
http_port: 8082

myapp.s1-replica:
advertise_uri: localhost:3303
http_port: 8083

# other instances are hidden in this example

cartridge replicasets join --replicaset s-1 s1-master s1-replica

    • Join instance(s) s1-master, s1-replica to replica set s-1
    • Instance(s) s1-master, s1-replica have been successfully joined to replica set s-1

cartridge replicasets join --replicaset router router

    • Join instance(s) router to replica set router
    • Instance(s) router have been successfully joined to replica set router

cartridge replicasets list-roles

    •   Available roles:
    •   failover-coordinator
    •   vshard-storage
    •   vshard-router
    •   metrics
    •   app.roles.custom

cartridge replicasets add-roles --replicaset s-1 vshard-storage

    • Add role(s) vshard-storage to replica set s-1
    • Replica set s-1 now has these roles enabled:
    •   vshard-storage (default)

cartridge replicasets add-roles \
  --replicaset router \
  vshard-router app.roles.custom failover-coordinator metrics

    • Add role(s) vshard-router, app.roles.custom, failover-coordinator, metrics to replica set router
    • Replica set router now has these roles enabled:
    •   failover-coordinator
    •   vshard-router
    •   metrics
    •   app.roles.custom

cartridge replicasets bootstrap-vshard

    • Vshard is bootstrapped successfully

cartridge replicasets list

    • Current replica sets:
• router
Role: failover-coordinator | vshard-router | metrics | app.roles.custom
    ★ router localhost:3301
• s-1                    default | 1
Role: vshard-storage
    ★ s1-master localhost:3302
    • s1-replica localhost:3303

cartridge replicasets expel s1-replica

    • Instance(s) s1-replica have been successfully expelled