Mun riga mun yi magana akai
Abin sha'awa? Sa'an nan don Allah, a ƙarƙashin yanke, za mu gaya muku kuma mu nuna muku komai.
Bari mu fara da misali
Za mu kalli wani bangare na ayyukan rawar mu ne kawai. Kuna iya samun cikakken bayanin duk iyawarsa da sigogin shigarwa a ciki
Tarantool Cartridge yana da api
и storage
, wanda za'a iya sanya shi zuwa lokuta.
Cartridge da kansa bai ce komai ba game da yadda ake ƙaddamar da matakai, kawai yana ba da ikon daidaita al'amuran da ke gudana. Dole ne mai amfani ya yi sauran da kansa: shirya fayilolin sanyi, fara sabis da saita topology. Amma ba za mu yi duk wannan ba; Mai yiwuwa ne zai yi mana.
Daga kalmomi zuwa ayyuka
Don haka, bari mu tura aikace-aikacenmu zuwa na'urori masu kama-da-wane guda biyu kuma mu kafa topology mai sauƙi:
- Replicaset
app-1
zai aiwatar da rawarapi
, wanda ya hada da rawarvshard-router
. Za a sami misali ɗaya kawai a nan. - Replicaset
storage-1
aiwatar da rawarstorage
(kuma a lokaci gudavshard-storage
), a nan za mu ƙara misalai biyu daga inji daban-daban.
Don gudanar da misalin da muke bukata
Rawar da kanta ke ciki
Bari mu rufe ma'ajiyar da misali:
$ git clone https://github.com/dokshina/deploy-tarantool-cartridge-app.git
$ cd deploy-tarantool-cartridge-app && git checkout 1.0.0
Muna haɓaka inji mai kama-da-wane:
$ vagrant up
Shigar da Tarantool Cartridge mai yiwuwa rawar:
$ ansible-galaxy install tarantool.cartridge,1.0.1
Kaddamar da aikin da aka shigar:
$ ansible-playbook -i hosts.yml playbook.yml
Muna jiran littafin wasan ya kammala aiwatarwa, je zuwa
Kuna iya loda bayanai. Sannu, dama?
Yanzu bari mu gano yadda za a yi aiki tare da wannan, kuma a lokaci guda ƙara wani saitin kwafi zuwa topology.
Bari mu fara gane shi
To me ya faru?
Mun kafa injuna guda biyu kuma muka ƙaddamar da littafin wasan kwaikwayo mai yiwuwa wanda ya daidaita tarin mu. Bari mu dubi abubuwan da ke cikin fayil ɗin 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
Babu wani abu mai ban sha'awa da ya faru a nan, bari mu ƙaddamar da rawar da ta dace da ake kira tarantool.cartridge
.
Dukkan abubuwan da suka fi mahimmanci (wato, tsarin cluster) suna cikin su 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:
Duk abin da muke buƙata shine mu koyi yadda ake sarrafa al'amura da kwafi ta hanyar canza abubuwan da ke cikin wannan fayil ɗin. Na gaba za mu ƙara sabbin sassa zuwa gare shi. Domin kar a ruɗe inda za a ƙara su, kuna iya duba sigar ƙarshe na wannan fayil ɗin, hosts.updated.yml
, wanda ke cikin ma'ajiyar misali.
Gudanar da misali
A cikin Mahimman sharuddan, kowane misali mai watsa shiri ne (kada a ruɗe shi da uwar garken hardware), watau. kullin abubuwan more rayuwa wanda Mai yiwuwa zai sarrafa. Ga kowane mai masaukin baki muna iya ƙayyade sigogin haɗi (kamar ansible_host
и ansible_user
), da kuma daidaitawar misali. Bayanin misalai yana cikin sashin hosts
.
Bari mu kalli tsarin daidaitawa storage-1
:
all:
vars:
...
# INSTANCES
hosts:
storage-1:
config:
advertise_uri: '172.19.0.2:3301'
http_port: 8181
...
A cikin m config
mun ayyana sigogin misali - advertise URI
и HTTP port
.
A ƙasa akwai sigogin misali app-1
и storage-1-replica
.
Muna buƙatar gaya wa Mai yiwuwa ma'aunin haɗi na kowane misali. Da alama yana da ma'ana don haɗa misalan cikin ƙungiyoyin injina. Don wannan dalili, ana haɗa al'amura zuwa rukuni host1
и host2
, kuma a kowace rukuni a cikin sashe vars
ana nuna dabi'u ansible_host
и ansible_user
don injin kama-da-wane. Kuma a cikin sashe hosts
- runduna (aka misalan) waɗanda ke cikin wannan rukunin:
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:
Mun fara canzawa hosts.yml
. Bari mu ƙara ƙarin misalai biyu, storage-2-replica
a kan na'ura mai mahimmanci na farko da storage-2
A na biyu:
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: # <==
...
Kaddamar da littafin wasa mai yiwuwa:
$ ansible-playbook -i hosts.yml
--limit storage-2,storage-2-replica
playbook.yml
Da fatan za a lura da zaɓi --limit
. Tun da kowane misalan gungu mai masaukin baki ne a cikin Mahimman sharuddan, za mu iya ƙayyadaddun takamaiman abubuwan da ya kamata a saita yayin aiwatar da littafin wasan.
Komawa zuwa Yanar Gizo UI
Kada mu tsaya nan mu kware wajen sarrafa topology.
Topology management
Bari mu haɗa sabbin abubuwan mu cikin saitin kwafi storage-2
. Bari mu ƙara sabon rukuni replicaset_storage_2
da kuma bayyana sigogin da aka sake maimaitawa a cikin masu canjin sa ta kwatankwacinsu replicaset_storage_1
. A cikin sashe hosts
Bari mu nuna waɗanne lokuta ne za a haɗa a cikin wannan rukunin (wato, saitin kwafin mu):
---
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:
Bari mu sake fara littafin wasan:
$ ansible-playbook -i hosts.yml
--limit replicaset_storage_2
--tags cartridge-replicasets
playbook.yml
Kowane zaɓi --limit
A wannan karon mun ƙaddamar da sunan ƙungiyar da ta dace da tsarin mu.
Bari mu yi la'akari da zabin tags
.
Matsayinmu yana aiwatar da ayyuka daban-daban a jere, waɗanda aka yi musu alama da alamun masu zuwa:
cartridge-instances
: gudanarwa na misali (tsari, haɗi zuwa mamba);cartridge-replicasets
: topology management (replicaset management da dindindin cire (kore) na lokuta daga tari);cartridge-config
: gudanar da wasu sigogin gungu (vshard bootstrapping, yanayin gazawar atomatik, sigogin izini da tsarin aikace-aikacen).
Za mu iya bayyana a fili wane ɓangaren aikin da muke so mu yi, to rawar za ta tsallake sauran ayyukan. A cikin yanayinmu, muna so muyi aiki kawai tare da topology, don haka muka ƙayyade cartridge-replicasets
.
Mu tantance sakamakon kokarinmu. Mun sami sabon kwafi akan
Hooray!
Gwaji tare da canza tsarin misalai da saitin kwafi kuma duba yadda tarin topology ke canzawa. Kuna iya gwada yanayin aiki daban-daban, misali. memtx_memory
. Matsayin zai yi ƙoƙarin yin hakan ba tare da sake farawa misali ba don rage yuwuwar lokacin faɗuwar aikace-aikacen ku.
Kar a manta da gudu vagrant halt
don dakatar da injunan kama-da-wane lokacin da kuka gama aiki da su.
Menene a ƙarƙashin hular?
Anan zan ba ku ƙarin bayani game da abin da ke faruwa a ƙarƙashin murfin rawar da za a iya ɗauka yayin gwaje-gwajenmu.
Bari mu kalli ƙaddamar da aikace-aikacen Cartridge mataki-mataki.
Shigar da kunshin da farawa
Da farko kuna buƙatar isar da kunshin zuwa uwar garken kuma shigar da shi. A halin yanzu rawar na iya aiki tare da fakitin RPM da DEB.
Na gaba za mu kaddamar da misalai. Komai yana da sauqi a nan: kowane misali daban ne systemd
- sabis. Zan ba ku misali:
$ systemctl start myapp@storage-1
Wannan umarnin zai ƙaddamar da misalin storage-1
apps myapp
. Misalin da aka kaddamar zai nemi ta /etc/tarantool/conf.d/
. Ana iya duba rajistan ayyukan ta amfani da su journald
.
Fayil na raka'a /etc/systemd/system/[email protected]
don sabis na tsarin za a ba da shi tare da kunshin.
Mai yiwuwa yana da na'urori masu gina jiki don shigar da fakiti da sarrafa ayyukan tsarin; ba mu ƙirƙira wani sabon abu a nan ba.
Kafa cluster topology
Anan ne ake fara jin daɗi. Yarda, zai zama abin ban mamaki a damu da rawar da za ta iya ta musamman don shigar da fakiti da gudana systemd
-aiki.
Kuna iya saita gungu da hannu:
- Zaɓin farko: buɗe UI na Yanar Gizo kuma danna maɓallan. Ya dace sosai don farawa sau ɗaya na lokuta da yawa.
- Zabi na biyu: zaka iya amfani da GraphQl API. Anan kun riga kun iya sarrafa wani abu, misali, rubuta rubutun a Python.
- Zabi na uku (ga masu ƙarfi): je zuwa uwar garken, haɗa zuwa ɗaya daga cikin abubuwan da ake amfani da su
tarantoolctl connect
da aiwatar da duk abubuwan da suka dace tare da tsarin Luacartridge
.
Babban aikin ƙirƙirar mu shine yin daidai wannan, ɓangaren mafi wahala na aikin a gare ku.
Mai yiwuwa yana ba ka damar rubuta naka tsarin kuma amfani da shi a cikin rawar. Matsayin namu yana amfani da irin waɗannan samfuran don sarrafa abubuwan tari daban-daban.
Ta yaya yake aiki? Kuna bayyana yanayin da ake so na gungu a cikin ƙayyadaddun tsari, kuma aikin yana samar da kowane tsari tare da sashin daidaitawarsa azaman shigarwa. Tsarin yana karɓar halin yanzu na gungu kuma yana kwatanta shi da abin da aka karɓa azaman shigarwa. Bayan haka, ana ƙaddamar da lambar ta hanyar soket na ɗaya daga cikin abubuwan, wanda ke kawo gungu zuwa yanayin da ake so.
Sakamakon
A yau mun fada kuma mun nuna yadda ake tura aikace-aikacenku zuwa Tarantool Cartridge da saita topology mai sauƙi. Don yin wannan, mun yi amfani da Mai yiwuwa - kayan aiki mai ƙarfi wanda ke da sauƙin amfani kuma yana ba ku damar daidaita kuɗaɗen ababen more rayuwa da yawa a lokaci guda (a cikin yanayinmu, misalan tari).
A sama mun kalli ɗayan hanyoyi masu yawa don kwatanta tsarin tari ta amfani da Mai yiwuwa. Da zarar kun ji shirye don ci gaba, bincika group_vars
и host_vars
.
Nan ba da jimawa ba za mu gaya muku yadda ake share (kore) har abada daga topology, bootstrap vshard, sarrafa yanayin gazawa ta atomatik, saita izini da facin saitin cluster. A halin yanzu, kuna iya yin karatu da kanku
Idan wani abu bai yi aiki ba, tabbas
source: www.habr.com