áá»áœááºáá±á¬áºááá¯á· ááŒá±á¬áá¬ážááŒá®ážáá¬ážáá«á
á áááºáááºá á¬ážá áá¬áá¬áž? á¡á²áá®á¡áá«áá»áá±á¬á· á¡á±á¬ááºááŸá¬ áá±ážááŒáá·áºáá±á¬á· ááŒááºááá¯ááºá
á¥ááá¬áá áºáá¯áá²á·á ááŒáá¡á±á¬ááº
áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·áá¡áááºážááá¹áá áá¯ááºáá±á¬ááºááá¯ááºá
áœááºážá áá
áºá
áááºáá
áºááá¯ááºážááá¯áᬠá¡áá»á¯á¶ážáááºáááºááŒá
áºáááºá áááºážáá¡ááºá¹áá«áááºáá»á¬áž ááŸáá·áº ááá·áºááœááºážááŸá¯áá±á¬ááºáá»á¬áž á ááŒá®ážááŒáá·áºá
á¯á¶áá±á¬ áá±á¬áºááŒáá»ááºááᯠá¡ááŒá²ááœá±á·ááá¯ááºáááºá
Tarantool Cartridge áá«ááŸááá«áááºá api
О storage
áááºážááᯠáá¬áááá»á¬ážááœáẠáááºááŸááºááá¯ááºáááºá
Cartridge ááá¯ááºááá¯ááºá áá¯ááºáááºážá ááºáá»á¬ážááᯠá áááºáá¯á¶ááŸáá·áº áááºáááºá áá¬á០áááŒá±á¬áá«á áááºážááẠáá¯ááºáá±á¬ááºáá±áá±á¬ áá¬áááá»á¬ážááᯠconfigure áá¯ááºááá¯ááºá áœááºážááᯠáá±ážá áœááºážáááºá á¡áá¯á¶ážááŒá¯áá°ááẠáá»ááºááá·áºá¡áá¬áá»á¬ážááᯠááá¯ááºááá¯ááºáá¯ááºáá±á¬ááºááá«áááº- ááœá²á·á ááºážááŸá¯ááá¯ááºáá»á¬ážááᯠááŒáá¯ááœá²á á±áᬠáááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá áááºáᬠtopology ááᯠá áá áºááá·áºááœááºážáá«á áá«áá±ááá·áº áá«ááœá±á¡á¬ážáá¯á¶ážááᯠáá«ááá¯á·ááá¯ááºáá°ážá Ansible á áá«ááá¯á·á¡ááœáẠáá¯ááºáá±ážáááá·áºáááºá
á áá¬ážá០á¡áá»áá·áº
ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·á application ááᯠvirtual machine ááŸá áºáá¯ááœáẠá¡áá¯á¶ážáá»ááŒá®áž ááá¯ážááŸááºážáá±á¬ topology ááᯠáááºááŸááºááŒáá«á áá¯á·á
- áá¯á¶á
á¶áá°
app-1
á¡áááºážááá¹áááŸáá«áááºáááºááŒá áºáááºáapi
á¡áááºážááá¹á áá«áááºáááºávshard-router
. á€áá±áá¬ááœáẠá¥ááá¬áá áºáá¯áᬠááŸááááá·áºáááºá - áá¯á¶á
á¶áá°
storage-1
á¡áááºážááá¹áááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáááºástorage
(áá áºáá»áááºáááºážááŸá¬áááºvshard-storage
) á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááẠááá°áá®áá±á¬ á ááºáá»á¬ážá០ááŒá áºáááºááŸá áºáá¯ááᯠááá·áºááœááºážáá¬ážáááºá
á¥ááá¬ááᯠrun áááºáá»áœááºá¯ááºááá¯á·ááá¯á¡ááºáááºá
áá°á·áá¬áá¬áá° á¡áááºážááá¹á
á¥ááá¬áá áºáá¯ááŒáá·áº repository ááá¯ááœá¬ážáá«-
$ git clone https://github.com/dokshina/deploy-tarantool-cartridge-app.git
$ cd deploy-tarantool-cartridge-app && git checkout 1.0.0
áá»áœááºá¯ááºááá¯á·ááẠvirtual á ááºáá»á¬ážááᯠááŒáŸáá·áºáááºáááº-
$ vagrant up
Tarantool Cartridge ááᯠansible á¡áááºážááá¹áááᯠááá·áºááœááºážáá«-
$ ansible-galaxy install tarantool.cartridge,1.0.1
ááá·áºááœááºážáá¬ážáá±á¬á¡áááºážááá¹áááᯠáá¯ááºáá±á¬ááºáá«-
$ ansible-playbook -i hosts.yml playbook.yml
áá«ááá¯á·ááẠplaybook áááœááºáá»ááºááŒááºážáá¡áá¯á¶ážááá¯á
á±á¬áá·áºááá¯ááºážáá±, ááá¯ááœá¬ážáá«á
áá±áá¬ááœá± áá±á¬ááºážááá¯ááºáááºá á¡á±áž áá¯ááºáá¬ážá
ááᯠá€á¡áá¬ááŸáá·áº áááºááá¯á·áá¯ááºáá±á¬ááºááááºááᯠá¡ááŒá±ááŸá¬ááŒáá·áºáá¡á±á¬ááºá áá áºáá»áááºáááºážááœáẠá¡ááŒá¬ážáá¯á¶á á¶áá°áá¯á¶á á¶áá°ááᯠtopology ááœáẠááá·áºááœááºážáá«á
áá»áœááºáá±á¬áºááá¯á· áá¬ážáááºáá¬áááºá
áá«ááᯠáá¬ááŒá áºáá¬áá²?
áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á á¡á
á¯á¡áá±ážááᯠá
áá
áºááá·áºááœááºážááẠVM ááŸá
áºáá¯ááᯠá
áááºáá¯ááºáá±á¬ááºááŒá®áž á¡áá¯á¶ážáááºáá±á¬ ááá±ážá
á¬á¡á¯ááºáá
áºá¡á¯ááºááᯠáá¯ááºáá±á¬ááºáá¬ážáá«áááºá ááá¯ááºáá²á· á¡ááŒá±á¬ááºážá¡áá¬ááœá±ááᯠááŒáá·áºáá¡á±á¬áẠplaybook.yml
:
---
- name: Deploy my Tarantool Cartridge app
hosts: all
become: true
become_user: root
tasks:
- name: Import Tarantool Cartridge role
import_role:
name: tarantool.cartridge
áá®áá±áá¬ááŸá¬ á
áááºáááºá
á¬ážá
áᬠáá¬ááŸáááŒá
áºáá«áá°ážá ááá¯á· áá±á«áºáá²á· ansible-role ááᯠá
ááá¯ááºáá«á tarantool.cartridge
.
á¡áá±ážá¡ááŒá®ážáá¯á¶áž (ááá¯ááá¯áááºááŸá¬á á¡á
á¯á¡áá±ážááœá²á·á
ááºážááŸá¯) ááœááºáááºááŸááááºá hosts.yml
:
---
all:
vars:
# common cluster variables
cartridge_app_name: getting-started-app
cartridge_package_path: ./getting-started-app-1.0.0-0.rpm # path to package
cartridge_cluster_cookie: app-default-cookie # cluster cookie
# common ssh options
ansible_ssh_private_key_file: ~/.vagrant.d/insecure_private_key
ansible_ssh_common_args: '-o IdentitiesOnly=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
# INSTANCES
hosts:
storage-1:
config:
advertise_uri: '172.19.0.2:3301'
http_port: 8181
app-1:
config:
advertise_uri: '172.19.0.3:3301'
http_port: 8182
storage-1-replica:
config:
advertise_uri: '172.19.0.3:3302'
http_port: 8183
children:
# GROUP INSTANCES BY MACHINES
host1:
vars:
# first machine connection options
ansible_host: 172.19.0.2
ansible_user: vagrant
hosts: # instances to be started on the first machine
storage-1:
host2:
vars:
# second machine connection options
ansible_host: 172.19.0.3
ansible_user: vagrant
hosts: # instances to be started on the second machine
app-1:
storage-1-replica:
# GROUP INSTANCES BY REPLICA SETS
replicaset_app_1:
vars: # replica set configuration
replicaset_alias: app-1
failover_priority:
- app-1 # leader
roles:
- 'api'
hosts: # replica set instances
app-1:
replicaset_storage_1:
vars: # replica set configuration
replicaset_alias: storage-1
weight: 3
failover_priority:
- storage-1 # leader
- storage-1-replica
roles:
- 'storage'
hosts: # replica set instances
storage-1:
storage-1-replica:
á€ááá¯ááºá á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠááŒá±á¬ááºážáá²ááŒááºážááŒáá·áº áá¬áááá»á¬ážááŸáá·áº áááºáá°ááŒá¯ááŸá¯áá»á¬ážááᯠá
á®áá¶ááá·áºááœá²áááºážááᯠáá»áœááºá¯ááºááá¯á· áá±á·áá¬ááẠááá¯á¡ááºáá«áááºá ááá¯á·áá±á¬áẠáááºážááœáẠááá¹áá¡áá
áºáá»á¬áž áááºááá·áºáá«áááºá áááºážááá¯á·ááᯠáááºááá·áºáá±áá¬ááœáẠááá·áºááááºááᯠáááŸá¯ááºááœá±ážá
á±áááºá áááºááẠá€ááá¯ááºá áá±á¬ááºáá¯á¶ážáá¬ážááŸááºážááá¯á· áááºáá±á¬ááºááŒáá·áºááŸá¯ááá¯ááºáááºá hosts.updated.yml
á¥ááᬠrepository ááœááºááŸááá±á¬á
á¥ááᬠá á®áá¶ááá·áºááœá²ááŸá¯
Ansible á á
ááºážáááºážáá»ááºáá»á¬ážá¡áá á¥ááá¬áá
áºáá¯á
á®ááẠhost áá
áºáᯠ(áá¶áá¬áá¬áá
áºáá¯ááŸáá·áº ááá±á¬ááœá±ážáááº)á ááá¯ááá¯áááºááŸá¬á Ansible á á
á®áá¶ááá·áºááœá²ááá·áº á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ áá¯á¶áá»ááºá host áá
áºáá¯á
á®á¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠconnection parameters (á¥ááᬠansible_host
О ansible_user
) á¡ááŒáẠinstance configuration á ááŒá
áºáááºáá»á¬ážááá±á¬áºááŒáá»ááºááẠááá¹áááœááºááŸááááºá hosts
.
instance configuration ááᯠá
ááºážá
á¬ážáá«á storage-1
:
all:
vars:
...
# INSTANCES
hosts:
storage-1:
config:
advertise_uri: '172.19.0.2:3301'
http_port: 8181
...
ááááºážááŸááºáá
áºáá¯ááœáẠconfig
áá»áœááºá¯ááºááá¯á·ááẠinstance parameters áá»á¬ážááá¯áááºááŸááºáá²á·ááẠ- advertise URI
О HTTP port
.
á¡á±á¬ááºááœáẠinstance parameters áá»á¬ážááŒá
áºáááºá app-1
О storage-1-replica
.
Instance áá
áºáá¯á
á®á¡ááœáẠáá»áááºáááºááŸá¯ parameters ááœá±ááᯠAnsible ááᯠááŒá±á¬ááŒááá¯á· ááá¯áá«áááºá á¡áá¯á¡áá±á¬ááºá
ááºá¡á¯ááºá
á¯áá»á¬ážááá¯á· áá¬áááá»á¬ážááᯠá¡á¯ááºá
á¯ááœá²á·ááŒááºážááẠáá¯áá¹ááááŸááá¯á¶ááááºá ááá¯ááá¯á·áá¯ááºáá±á¬ááºáááºá á¥ááá¬áá»á¬ážááᯠá¡á¯ááºá
á¯áá»á¬ážá¡ááŒá
Ạáá±á«ááºážá
ááºáá¬ážáááºá host1
О host2
ááŸáá·áº ááá¹ááá
áºáá¯á
á®á á¡á¯ááºá
ᯠvars
áááºááá¯ážáá»á¬áž ansible_host
О ansible_user
virtual machine áá
áºáá¯á¡ááœááºá á¡áááá¹áᬠhosts
- á€á¡ááœá²á·ááœááºáá«áááºááá·áº á¡áááºááŸááºáá»á¬áž (áááºážááá¯á·ááẠá¥ááá¬áá»á¬ážááŒá
áºáááº)
all:
vars:
...
hosts:
...
children:
# GROUP INSTANCES BY MACHINES
host1:
vars:
# first machine connection options
ansible_host: 172.19.0.2
ansible_user: vagrant
hosts: # instances to be started on the first machine
storage-1:
host2:
vars:
# second machine connection options
ansible_host: 172.19.0.3
ansible_user: vagrant
hosts: # instances to be started on the second machine
app-1:
storage-1-replica:
áá»áœááºáá±á¬áºááá¯á· á
áááºááŒá±á¬ááºážáá²áá±áá«ááŒá®á hosts.yml
. áá±á¬ááºááẠá¥ááᬠááŸá
áºáᯠáááºááá·áºááŒáá·áºáá¡á±á¬ááºá storage-2-replica
ááááá¯á¶áž virtual machine ááŸáá·áº storage-2
áá¯áááááœááº-
all:
vars:
...
# INSTANCES
hosts:
...
storage-2: # <==
config:
advertise_uri: '172.19.0.3:3303'
http_port: 8184
storage-2-replica: # <==
config:
advertise_uri: '172.19.0.2:3302'
http_port: 8185
children:
# GROUP INSTANCES BY MACHINES
host1:
vars:
...
hosts: # instances to be started on the first machine
storage-1:
storage-2-replica: # <==
host2:
vars:
...
hosts: # instances to be started on the second machine
app-1:
storage-1-replica:
storage-2: # <==
...
á¡áá¯á¶ážáááºáá±á¬ áá á¬ážá á¬á¡á¯ááºááᯠááœáá·áºáá«
$ ansible-playbook -i hosts.yml
--limit storage-2,storage-2-replica
playbook.yml
option ááá¯á¡á¬áá¯á¶á
áá¯ááºáá«á --limit
. á¡á
á¯ááá¯ááºá¡ááŒá¯á¶ááá¯ááºáá
áºáá¯á
á®ááẠAnsible á
ááºážáá»ááºážáá»á¬ážááœáẠhost áá
áºáá¯ááŒá
áºáá±á¬ááŒá±á¬áá·áºá playbook ááá¯ááœáá·áºáá±á¬á¡áá«ááœáẠáááºááá·áº instances áá»á¬ážááᯠconfigure áá¯ááºááá·áºáááºááᯠááŒááºáá¬ážá
áœá¬ áááºááŸááºááá¯ááºáá«áááºá
ááẠUI ááá¯á· ááŒááºááœá¬ážáááº
áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á laurels áá»á¬ážá¡áá±á«áºááœáẠá¡áá¬ážáá°áááºááá¯ááºáá² topology ááááºážáá»á¯ááºááŸá¯ááᯠáá»áœááºážáá»ááºáááºááŒá áºáááºá
Topology á á®áá¶ááá·áºááœá²ááŸá¯
áá»áœááºá¯ááºááá¯á·áááŒá
áºáááºáá
áºáá»á¬ážááᯠáá¯á¶áá°áá°ážáááºáá
áºáá¯á¡ááŒá
Ạáá±á«ááºážááá¯ááºááŒáá«á
áá¯á· storage-2
. á¡ááœá²á·á¡áá
áºáá
áºáá¯ááá·áºáá«á replicaset_storage_2
ááŸáá·áº ááŸááºááœá²á áááºáá°ááŒá¯ááŒááºážá áá±á¬ááºáá»á¬ážááᯠáááºážá ááááºážááŸááºáá»á¬ážááœáẠáá±á¬áºááŒáá«á replicaset_storage_1
. á¡ááá¯ááºáž hosts
á€á¡á¯ááºá
á¯ááœáẠáááºááá·áºá¡áá¬áá»á¬áž áá«áááºáááºááᯠáááºááŸááºáá« (ááá¯ááá¯áááºááŸá¬ áá»áœááºá¯ááºááá¯á·á áá¯á¶áá°á
á¯)
---
all:
vars:
...
hosts:
...
children:
...
# GROUP INSTANCES BY REPLICA SETS
...
replicaset_storage_2: # <==
vars: # replicaset configuration
replicaset_alias: storage-2
weight: 2
failover_priority:
- storage-2
- storage-2-replica
roles:
- 'storage'
hosts: # replicaset instances
storage-2:
storage-2-replica:
Playbook ááᯠááŒááºá ááŒáá«á áá¯á·á
$ ansible-playbook -i hosts.yml
--limit replicaset_storage_2
--tags cartridge-replicasets
playbook.yml
áááºááŸááºáá»ááºá¡ááá¯áẠ--limit
á€áá
áºááŒáááºááœáẠáá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á áá¯á¶á
á¶áá°áá¯á¶á
á¶ááŸáá·áº ááá¯ááºáá®áá±á¬ á¡ááœá²á·á¡áááºááᯠáá»á±á¬áºááŒááºáá²á·áá«áááºá
option ááá¯á
ááºážá
á¬ážáá«á tags
.
áá»áœááºá¯ááºááá¯á·áá¡áááºážááá¹áááẠá¡á±á¬ááºáá«áááºáá»á¬ážááŒáá·áº á¡ááŸááºá¡áá¬ážááŒá¯áá¬ážááá·áº á¡áá¯ááºá¡áá»áá¯ážáá»áá¯ážááᯠáááºááá¯ááºáá¯ááºáá±á¬ááºáááº-
cartridge-instances
: á¥ááᬠá á®áá¶ááá·áºááœá²ááŸá¯ (ááœá²á·á ááºážáá¯á¶á á¡ááœá²á·áááºá¡ááŒá Ạáá»áááºáááºááŸá¯);cartridge-replicasets
: topology á á®áá¶ááá·áºááœá²ááŸá¯ (áá¯á¶áá°á ᯠá á®áá¶ááá·áºááœá²ááŸá¯ááŸáá·áº á¡á á¯á¡áá±ážá០áá¬áááá»á¬ážááᯠá¡ááŒá²áááºáž áááºááŸá¬ážááŒááºáž (áá¯ááºáááºááŒááºáž));cartridge-config
: á¡ááŒá¬ážáá±á¬ á¡á á¯á¡áá±áž ááá·áºáááºáá±á¬ááºáá»á¬ážááᯠá á®áá¶áá« (vshard bootstrappingá á¡ááá¯á¡áá»á±á¬áẠáá»ááºááœááºááá·áºáá¯ááºá ááœáá·áºááŒá¯áá»áẠááá·áºáááºáá»ááºáá»á¬áž ááŸáá·áº á¡ááá®áá±ážááŸááºáž ááœá²á·á ááºážááŸá¯áá¯á¶á á¶) ááᯠá á®áá¶áá«á
áá»áœááºá¯ááºááá¯á· áá¯ááºááá¯ááá·áº á¡áá¯ááºá áááºááá·áºá¡ááá¯ááºážááᯠáá»áœááºá¯ááºááá¯á· ááŒááºáá¬ážá
áœá¬ áááºááŸááºááá¯ááºáááºá ááá¯á·áá±á¬áẠá¡áááºážááá¹áááẠáá»ááºá¡áá¯ááºáá»á¬ážááᯠáá»á±á¬áºááœá¬ážáá«áááºá áá»áœááºá¯ááºááá¯á·áááá
á¹á
ááœááºá áá»áœááºá¯ááºááá¯á·ááẠtopology ááŸáá·áºáá¬á¡áá¯ááºáá¯ááºááá¯áá±á¬ááŒá±á¬áá·áºáá»áœááºá¯ááºááá¯á·áááºááŸááºáá¬ážáááºá cartridge-replicasets
.
áá»áœááºáá±á¬áºááá¯á·áá²á· ááŒáá¯ážá
á¬ážááŸá¯ááááºááᯠá¡áá²ááŒááºááŒáá·áºáá¡á±á¬ááºá áá¯á¶á
á¶áá°á¡áá
áºáá
áºáá¯ááᯠááŸá¬ááœá±ááŒááºážá
áá°ážáá±áž!
á
á¶ááá°áá¬áá»á¬ážááŸáá·áº áááºáá°ááŒá¯ááŒááºážáá»á¬ážááᯠááŒááºáááºáááºááŸááºááŒááºážááŒáá·áº á
ááºážáááºááŒá®áž á¡á
á¯á¡áá±ážá ááááºááá¯ááºážáá±á ááŒá±á¬ááºážáá²áá¯á¶ááᯠááŒáá·áºááŸá¯áá«á áááºááẠááá°áá®áá±á¬ áá¯ááºáááºážáá±á¬ááºááœááºááŸá¯ á¡ááŒá±á¡áá±áá»á¬ážááᯠá
ááºážááŒáá·áºááá¯ááºááẠá¥ááá¬á memtx_memory
. ááá·áºá¡ááá®áá±ážááŸááºážá ááŒá
áºááá¯ááºáá»á±ááŸááá±á¬ á¡áá»áááºáá»á¬ážááᯠáá»áŸá±á¬á·áá»áááºá¡ááœáẠá¡áááºážááá¹áááẠáá¬ááááᯠááŒááºáááºá
áááºááŒááºážáááŸááá² áááºážááᯠáá¯ááºáá±á¬ááºááẠááŒáá¯ážá
á¬ážáááºááŒá
áºáááºá
ááŒá±ážááá¯á·ááá±á·áá«áá²á·á vagrant halt
áááºážááá¯á·ááŸáá·áº ááŒá®ážáá±á¬á¡áá«ááœáẠVM áá»á¬ážááᯠáááºááá·áºáááºá
áá«ážáá»ááºážá¡á±á¬ááºááŸá¬áá¬áá«áá²
á€ááœááºáá»áœááºá¯ááºááá¯á·áá ááºážáááºááŸá¯áá»á¬ážá¡ááœááºáž ansible á¡áááºážááá¹ááá¡áá¯á¶ážá¡á±á¬ááºááœááºááŒá áºáá»ááºáá²á·áááºáá»á¬ážá¡ááŒá±á¬ááºážááá¯ááá¯ááŒá±á¬ááá¯áá«áááºá
Cartridge á¡ááá®áá±ážááŸááºážááᯠá¡ááá·áºááá·áº ááŒáá·áºáá»ááºááŒáá·áºáá¡á±á¬ááºá
áááºáá±á·áá»áºááᯠáááºáááºááŒááºážááŸáá·áº á áááºááŒááºáž ááŒá áºáááºáá»á¬áž
ááááŠážá áœá¬áááºáááºá¡áá¯ááºááá¯áá¬áá¬ááá¯á·áá±ážááá¯á·ááŒá®ážáááºážááá¯ááá·áºááœááºážáááºááá¯á¡ááºáááºá ááᯠá¡áááºážááá¹áááẠRPM ááŸáá·áº DEB áááºáá±á·áá»áºáá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºááá¯ááºáá«ááŒá®á
ááá¯á·áá±á¬ááºá áá»áœááºá¯ááºááá¯á·ááẠáá¬áááá»á¬ážááᯠá
áááºáááºá á€áá±áá¬ááœáẠá¡áá¬á¡á¬ážáá¯á¶ážááẠá¡ááœááºááá¯ážááŸááºážáá«áááº- á¥ááá¬áá
áºáá¯á
á®ááẠáá®ážááŒá¬ážááŒá
áºáááºá systemd
- áááºáá±á¬ááºááŸá¯á á¥ááá¬áá
áºáá¯á¡ááŒá±á¬ááºážááŒá±á¬áá±áá¬áá«
$ systemctl start myapp@storage-1
ဠcommand ááẠinstance ááá¯á
áááºáááá·áºáááºá storage-1
apps áá»á¬áž myapp
. á
áááºááá¯ááºáá±á¬ áá¬ááááẠáááºážáááᯠááŸá¬ááœá±áááºááŒá
áºáááºá /etc/tarantool/conf.d/
. Instance ááŸááºáááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á ááŒáá·áºááŸá¯ááá¯ááºáá«áááºá journald
.
áá°áá
áºááá¯áẠ/etc/systemd/system/[email protected]
systemd áááºáá±á¬ááºááŸá¯á¡ááœáẠáááºáá±á·áá»áºááŸáá·áºá¡áá° ááá¯á·áá±á¬ááºáá±ážáá«áááºá
Ansible ááœáẠáááºáá±á·áá»áºáá»á¬áž ááá·áºááœááºážááŒááºážááŸáá·áº á áá áºáá»áá±á¬ áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá á®áá¶ááá·áºááœá²ááŒááºážá¡ááœáẠáá«áááºáá±á¬ áá±á¬áºáá»á°ážáá»á¬áž áá«ááŸááááºá
á¡á á¯á¡áá±ážá áá±á«áºáá á®ááᯠááŒááºáááºáááºááŸááºááŒááºážá
á€ááœáẠá
áááºáááºá
á¬ážá
áá¬á¡áá±á¬ááºážáá¯á¶ážá á
áááºáááºá ááá±á¬áá°áá«áááºá áááºáá±á·áá»áºáá»á¬ážááá·áºááœááºážááŒááºážááŸáá·áº áá¯ááºáá±á¬ááºááŒááºážá¡ááœáẠá¡áá°ážá¡áá¯á¶ážáá»á¬ážááá·áº á¡áááºážááá¹áááᯠááŸá±á¬ááºááŸááºááŒááºážááẠáá°ážáááºážáá±áááá·áºáááºá systemd
- áááºáá±á¬ááºááŸá¯á
á¡á á¯á¡áá±ážááᯠááá¯ááºááá¯áẠá áá áºááá·áºááœááºážááá¯ááºáááº-
- áááááœá±ážáá»ááºááŸá¯- ááẠUI ááá¯ááœáá·áºááŒá®áž ááá¯ááºáá»á¬ážááᯠááŸáááºáá«á á¡ááŒáááºáá±á«ááºážáá»á¬ážá áœá¬ááᯠáá áºááŒáááºáááºáž á áááºáááºá¡ááœááºá áááºážááẠá¡ááœááºááá·áºáá»á±á¬áºáááºá
- áá¯áááááœá±ážáá»ááºááŸá¯- GraphQl API ááᯠáááºáá¯á¶ážááá¯ááºáááºá á€ááœáẠáááºááẠáá áºáá¯áá¯ááᯠá¡ááá¯á¡áá»á±á¬ááºááŒááºáá¯ááºááá¯ááºáá±ááŒá®á á¥ááá¬á Python ááœáẠáá¬ááºááœáŸááºážáá±ážáá«á
- ááááááœá±ážáá»ááºááŸá¯ (á
áááºá¡á¬ážáááºáááºáá°áá»á¬ážá¡ááœááº): áá¬áá¬ááá¯á·ááœá¬ážáá«á á¡áá¯á¶ážááŒá¯ááá·áºá¡áá¬áá»á¬ážáá²á០áá
áºáá¯ááᯠáá»áááºáááºáá«á
tarantoolctl connect
Lua module ááŒáá·áº ááá¯á¡ááºáá±á¬ ááŒááºááŸááºááŸá¯áá»á¬ážá¡á¬ážáá¯á¶ážááᯠáá¯ááºáá±á¬ááºáá«ácartridge
.
áá»áœááºá¯ááºááá¯á·á áá®ááœááºááŸá¯á á¡ááááá¬áááºááŸá¬ ááá·áºá¡ááœáẠá¡áááºáá²áá¯á¶ážá¡áá¯ááºááŒá áºááá·áº á€á¡áá¬ááᯠáá¯ááºáá±á¬ááºáááºááŒá áºáááºá
Ansible ááẠááá·áºááá¯ááºááá¯áẠmodule ááá¯áá±ážááŒá®áž áááºážááᯠá¡áááºážááá¹ááá áºáá¯ááœáẠá¡áá¯á¶ážááŒá¯ááẠááœáá·áºááŒá¯áááºá áá»áœááºá¯ááºááá¯á·áá¡áááºážááá¹áááẠá¡á á¯á¡áá±ážá á¡á áááºá¡ááá¯ááºážá¡áá»áá¯ážáá»áá¯ážááᯠá á®áá¶ááá·áºááœá²ááẠဠmodule áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºá
áááºááá¯á¡áá¯ááºáá¯ááºáá²? áááºááẠááŒá±ááŒá¬ááœá²á·á ááºážááŸá¯áá¯á¶á á¶áá áºáá¯ááœáẠá¡á á¯á¡áá±ážáá¡ááá¯ááŸááá±á¬á¡ááŒá±á¡áá±á¡á¬áž áá±á¬áºááŒááŒá®áž á¡áááºážááá¹áááẠáá±á¬áºáá»á°ážáá áºáá¯á á®á¡á¬áž áááºážáááœá²á·á ááºážáá¯á¶áá¯á¶á á¶á¡ááá¯ááºážááᯠááá·áºááœááºážááŸá¯á¡ááŒá Ạáá±ážáááºá áá±á¬áºáá»á°ážááẠá¡á á¯á¡áá±ážá áááºááŸáá¡ááŒá±á¡áá±ááᯠáááºáá¶áááŸáááŒá®áž áááºážááᯠááá·áºááœááºážááŸá¯ááŒáá·áº ááŸáá¯ááºážááŸááºáááºá ááá¯á·áá±á¬ááºá áá¯ááºáá áºáá¯ááẠá¡á á¯á¡áá±ážááᯠá¡ááá¯ááŸááá±á¬ á¡ááŒá±á¡áá±ááá¯á· áá°áá±á¬ááºáá¬áá±ážááá·áº instance áá áºáá¯á socket ááŸáááá·áº áá¯ááºáá±á¬ááºáááºá
ááááºáá»á¬ážááá¯
ááá±á· áá»áœááºá¯ááºááá¯á·ááẠáááºááá»áŸá±á¬ááºááœáŸá¬ááᯠTarantool Cartridge ááœáẠáááºááá¯á·á¡áá¯á¶ážáá»ááááºááᯠááŒá±á¬ááŒááŒá®áž ááá¯ážááŸááºážáá±á¬ topology ááᯠá áá áºááá·áºááœááºážááẠááŒááá²á·áááºá áááºážááá¯áá¯ááºáá±á¬ááºááẠáá»áœááºá¯ááºááá¯á·ááẠá¡áá¯á¶ážááŒá¯áááœááºáá°ááŒá®áž á¡á áœááºážáááºáá±á¬áááááá¬ááŒá áºááá·áº Ansible ááá¯á¡áá¯á¶ážááŒá¯ááŒá®áž á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááá¯ááºáᬠnode á¡áá»á¬ážá¡ááŒá¬ážááᯠáá áºááŒáá¯ááºááẠconfigure áá¯ááºááœáá·áºááŒá¯ááẠ(áá»áœááºá¯ááºááá¯á·áá¡ááŒá±á¡áá±ááœááºá áááºážááá¯á·ááẠá¡á á¯á¡áá±ážááŒá áºáááºáá»á¬ážááŒá áºáááº)á
á¡áááºááœááºá Ansible ááᯠá¡áá¯á¶ážááŒá¯á á¡á
á¯á¡á
ááºážááœá²á·á
ááºážáá¯á¶ááᯠáá±á¬áºááŒááẠáááºážáááºážáá»á¬ážá
áœá¬áá²á០áá
áºáá¯ááᯠáá»áœááºá¯ááºááá¯á· ááŒá±ááŸááºážáá²á·áááºá ááŸá±á·áááºááá¯á· á¡áááºááá·áºááŒá
áºáá±ááŒá®ááá¯áᬠááááŒá®ážáá¬áá²á· áá±á·áá¬áá«á group_vars
О host_vars
.
áááŒá¬áá®ááœáẠáá»áœááºá¯ááºááá¯á·ááẠtopologyá bootstrap vshardá á¡ááá¯á¡áá»á±á¬ááºáá»ááºááœááºááŸá¯áá¯ááºááᯠá
á®áá¶áááºá ááœáá·áºááŒá¯áá»ááºáááºááŸááºááŒááºážááŸáá·áº á¡á
á¯á¡áá±ážááᯠáá¬áá±ážááŒááºážá០á¡ááŒá®ážá¡ááá¯ááºáááºááŸá¬ážáááºáž (áá¯ááºáááºááŒááºáž) ááᯠááá·áºá¡á¬áž ááŒá±á¬ááŒáá«áááºá áá®ááŒá¬ážáá²ááŸá¬ ááá¯áá·áºáá¬áᬠáá±á·áá¬ááá¯á·ááááºá
áá
áºáá¯áá¯á¡áááºáááŒá±ááẠáá±áá»á¬áá«á
á±á
source: www.habr.com