Efa niresaka momba izany isika
Mahaliana? Avy eo azafady, eo ambanin'ny fanapahana, holazainay aminao sy hasehonay anao ny zava-drehetra.
Andeha isika hanomboka amin'ny ohatra iray
Ny ampahany amin'ny fampandehanan-draharahan'ny anjarantsika ihany no hojerentsika. Azonao atao foana ny mahita famaritana feno momba ny fahaiza-manaony sy ny mari-pamantarana fampidirana ao
Tarantool Cartridge dia manana api
и storage
, izay azo apetraka amin'ny ohatra.
Ny Cartridge mihitsy dia tsy milaza na inona na inona momba ny fomba fanombohana ny dingana, fa manome fahafahana manitsy ireo tranga efa mandeha. Ny mpampiasa dia tsy maintsy manao ny sisa amin'ny tenany: mandamina ny fisie fisie, manomboka ny serivisy ary manamboatra ny topolojia. Saingy tsy hanao izany rehetra izany izahay; Ansible no hanao izany ho antsika.
Avy amin'ny teny ka hatramin'ny asa
Noho izany, andao hametraka ny fampiharana ataontsika amin'ny milina virtoaly roa ary hametraka topolojia tsotra:
- Replicaset
app-1
hampihatra ny andraikitraapi
, izay ahitana ny anjaravshard-router
. Tsy hisy afa-tsy ohatra iray eto. - Replicaset
storage-1
mampihatra ny anjarastorage
(ary miaraka amin'izay koavshard-storage
), eto isika dia hanampy tranga roa avy amin'ny milina samihafa.
Mba hampandehanana ny ohatra ilaintsika
Ny anjara asa mihitsy no ao
Andao hatao clone ny tahiry miaraka amin'ny ohatra iray:
$ git clone https://github.com/dokshina/deploy-tarantool-cartridge-app.git
$ cd deploy-tarantool-cartridge-app && git checkout 1.0.0
Manangana milina virtoaly izahay:
$ vagrant up
Mametraka ny anjara asan'ny Tarantool Cartridge:
$ ansible-galaxy install tarantool.cartridge,1.0.1
Alefaso ny andraikitra napetraka:
$ ansible-playbook -i hosts.yml playbook.yml
Miandry ny playbook hamita ny famonoana isika, mandehana mankany
Afaka mampakatra angona ianao. Cool, sa tsy izany?
Andeha hojerentsika ny fomba fiasa amin'izany, ary miaraka amin'izay koa, ampio kopia hafa napetraka amin'ny topolojia.
Andeha isika hanomboka hamantatra izany
Dia inona no nitranga?
Nanangana milina virtoaly roa izahay ary namoaka boky filalaovana ansible izay nanamboatra ny cluster. Andeha hojerentsika ny votoatin'ny rakitra 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
Tsy misy zavatra mahaliana mitranga eto, andao isika hanomboka ny anjara asa azo atao tarantool.cartridge
.
Ny zavatra manan-danja indrindra (izany hoe, ny fanamafisana cluster) dia hita ao 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:
Ny hany ilaintsika dia ny mianatra ny fomba fitantanana ny tranga sy ny kopia amin'ny alàlan'ny fanovana ny votoatin'ity rakitra ity. Manaraka izany dia hanampy fizarana vaovao amin'izany isika. Mba tsy ho very hevitra hoe aiza no hampidirana azy ireo dia azonao jerena ny dikan-teny farany amin'ity rakitra ity, hosts.updated.yml
, izay ao amin'ny tahiry ohatra.
Fitantanana ohatra
Amin'ny teny Ansible, ny tranga tsirairay dia mpampiantrano (tsy tokony hafangaro amin'ny mpizara hardware), i.e. ny fotodrafitrasa izay hotantanan'ny Ansible. Ho an'ny mpampiantrano tsirairay dia afaka mamaritra ny mari-pamantarana fifandraisana (toy ny ansible_host
и ansible_user
), ary koa ny fanamafisana ohatra. Ny famaritana ny tranga dia ao amin'ny fizarana hosts
.
Andeha hojerentsika ny fanamafisana ohatra storage-1
:
all:
vars:
...
# INSTANCES
hosts:
storage-1:
config:
advertise_uri: '172.19.0.2:3301'
http_port: 8181
...
In variable config
nofaritanay ny paramètre ohatra - advertise URI
и HTTP port
.
Ireto ambany ireto ny paramètre ohatra app-1
и storage-1-replica
.
Mila milaza amin'ny Ansible ny mari-pamantarana fifandraisana amin'ny tranga tsirairay. Toa mitombina ny manambatra ny tranga ho vondrona milina virtoaly. Ho an'ity tanjona ity dia atambatra ho vondrona ny tranga host1
и host2
, ary isaky ny vondrona ao amin'ny fizarana vars
tondroina ny soatoavina ansible_host
и ansible_user
ho an'ny milina virtoaly iray. Ary amin'ny fizarana hosts
- mpampiantrano (aka instance) izay tafiditra ao anatin'ity vondrona ity:
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:
Manomboka miova isika hosts.yml
. Andeha isika hanampy ohatra roa hafa, storage-2-replica
amin'ny milina virtoaly voalohany ary storage-2
Amin'ny faharoa:
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: # <==
...
Alefaso ny playbook ansible:
$ ansible-playbook -i hosts.yml
--limit storage-2,storage-2-replica
playbook.yml
Mariho azafady ny safidy --limit
. Satria ny ohatra cluster tsirairay dia mpampiantrano amin'ny teny Ansible, dia azontsika atao ny mamaritra mazava tsara hoe iza no tokony hamboarina rehefa manatanteraka ny playbook.
Miverina amin'ny Web UI
Aoka tsy hijanona eo ary hahafehy ny fitantanana topologie.
Fitantanana topologie
Andao hanambatra ireo tranga vaovao ataontsika ho andiana dika mitovy storage-2
. Andeha isika hanampy vondrona vaovao replicaset_storage_2
ary mamaritra ny masontsivana replicaset amin'ny fari-piadiny amin'ny alàlan'ny analogy amin'ny replicaset_storage_1
. Ao amin'ny fizarana hosts
Andeha hojerentsika hoe iza avy ireo ohatra no ampidirina amin'ity vondrona ity (izany hoe, ny replica set):
---
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:
Andeha isika hanomboka indray ny playbook:
$ ansible-playbook -i hosts.yml
--limit replicaset_storage_2
--tags cartridge-replicasets
playbook.yml
Isaky ny parameter --limit
Tamin'ity indray mitoraka ity dia nandalo ny anaran'ny vondrona izay mifanandrify amin'ny replicasey izahay.
Andeha hodinihintsika ny safidy tags
.
Manatanteraka asa isan-karazany ny andraikitsika, izay voamarika amin'ireto marika manaraka ireto:
cartridge-instances
: fitantanana ohatra (fandrindrana, fifandraisana amin'ny maha-mpikambana);cartridge-replicasets
: fitantanana topologie (fitantanana replicaset sy fanesorana maharitra (fandroahana) ireo tranga avy amin'ny cluster);cartridge-config
: fitantanana ny masontsivana kluster hafa (vshard bootstrapping, mode failover mandeha ho azy, mari-pamantarana fanomezan-dàlana ary fandrindrana fampiharana).
Afaka mamaritra mazava izay ampahany amin'ny asa tiantsika hatao isika, dia handalo ny asa sisa ny anjara. Amin'ny toe-javatra misy antsika dia tsy te-hiasa afa-tsy amin'ny topologie izahay, ka nofaritanay cartridge-replicasets
.
Andeha hojerentsika ny vokatry ny ezaka ataontsika. Mahita kopia vaovao izahay
Hooray!
Manandrama amin'ny fanovana ny fandrindrana ny tranga sy ny replika ary jereo ny fiovan'ny topolojia cluster. Azonao atao ny manandrana sehatra fiasa samihafa, ohatra. memtx_memory
. Ny anjara dia hiezaka ny hanao izany nefa tsy manomboka indray ny ohatra mba hampihenana ny mety ho fiatoana ny fampiharana.
Aza adino ny mihazakazaka vagrant halt
hampitsahatra ny milina virtoaly rehefa vita ny asa miaraka aminy.
Inona no ao ambanin'ny hood?
Eto aho dia hilaza aminao bebe kokoa momba ny zava-nitranga teo ambanin'ny saron'ny anjara asa azo atao nandritra ny andrana nataontsika.
Andeha hojerentsika ny fametrahana tsikelikely ny fampiharana Cartridge.
Fametrahana ny fonosana sy ny fanombohana tranga
Voalohany dia mila mandefa ny fonosana amin'ny mpizara ianao ary mametraka izany. Amin'izao fotoana izao dia afaka miasa miaraka amin'ny fonosana RPM sy DEB ny andraikitra.
Manaraka izany dia manomboka ny tranga. Tsotra ny zava-drehetra eto: misaraka ny tsirairay systemd
- fanompoana. Omeko ohatra ianao:
$ systemctl start myapp@storage-1
Ity baiko ity dia hanomboka ny ohatra storage-1
Apps myapp
. Ny ohatra natomboka dia hitady azy /etc/tarantool/conf.d/
. Ny logs instance dia azo jerena amin'ny fampiasana journald
.
rakitra unit /etc/systemd/system/[email protected]
ho an'ny serivisy systemd dia halefa miaraka amin'ny fonosana.
Ansible dia manana môdely namboarina ho an'ny fametrahana fonosana sy fitantanana serivisy systemd; tsy namorona zava-baovao izahay eto.
Fametrahana topolojia cluster
Eo no manomboka ny fahafinaretana. Ekeo, ho hafahafa ny manelingelina ny anjara asan'ny Ansible manokana amin'ny fametrahana fonosana sy ny fandehanana systemd
-serivisy.
Azonao atao ny manamboatra ny cluster amin'ny tananao:
- Safidy voalohany: sokafy ny Web UI ary tsindrio ny bokotra. Tena mety amin'ny fanombohana indray mandeha amin'ny tranga maromaro.
- Safidy faharoa: azonao ampiasaina ny API GraphQl. Eto ianao dia afaka manamboatra zavatra, ohatra, manoratra script amin'ny Python.
- Safidy fahatelo (ho an'ireo mahery fo): mandehana any amin'ny mpizara, mifandray amin'ny iray amin'ireo tranga mampiasa
tarantoolctl connect
ary tanteraho ny fanodinkodinana rehetra ilaina amin'ny Module Luacartridge
.
Ny asa lehibe indrindra amin'ny famoronana anay dia ny manao izany marina, ny ampahany sarotra indrindra amin'ny asa ho anao.
Ny Ansible dia ahafahanao manoratra ny môdelinao manokana ary mampiasa azy io amin'ny andraikitra iray. Ny anjarantsika dia mampiasa maody toy izany hitantana ireo singa cluster isan-karazany.
Ahoana ny fandehany? Manoritsoritra ny toetry ny cluster ianao amin'ny config declarative, ary ny anjara dia manome ny mody tsirairay miaraka amin'ny sehatra fanamafisam-peo ho fampidirana. Ny maody dia mandray ny toetry ny kluster amin'izao fotoana izao ary mampitaha izany amin'izay voaray ho fampidirana. Avy eo, misy kaody atomboka amin'ny alàlan'ny socket amin'ny iray amin'ireo tranga, izay mitondra ny cluster ho any amin'ny fanjakana tiana.
vokatra
Androany dia nilaza sy nasehonay ny fomba fametrahana ny fampiharana anao amin'ny Tarantool Cartridge ary manangana topolojia tsotra. Mba hanaovana izany dia nampiasa Ansible izahay - fitaovana mahery vaika mora ampiasaina ary ahafahanao manamboatra fotodrafitrasa maro miaraka amin'ny fotodrafitrasa (amin'ny tranga misy antsika, ohatra cluster).
Etsy ambony dia nijery ny iray amin'ireo fomba maro hamaritana ny fanamafisana cluster mampiasa Ansible. Raha vao tsapanao fa vonona ny handroso ianao dia tadiavo group_vars
и host_vars
.
Tsy ho ela dia holazainay aminao ny fomba famafana (fandroahana) ireo tranga avy amin'ny topology, bootstrap vshard, mitantana ny mode failover mandeha ho azy, manamboatra ny fanomezan-dàlana ary mametaka ny config cluster. Mandra-pahatongan'izany dia afaka mianatra samirery ianao
Raha misy zavatra tsy mandeha dia ataovy izay
Source: www.habr.com