{"id":53611,"date":"2019-12-06T00:00:00","date_gmt":"2019-12-05T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/legko-i-neprinuzhdenno-deploim-prilozheniya-na-tarantool-cartridge-chast-1"},"modified":"2020-02-18T14:01:32","modified_gmt":"2020-02-18T11:01:32","slug":"legko-i-neprinuzhdenno-deploim-prilozheniya-na-tarantool-cartridge-chast-1","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/legko-i-neprinuzhdenno-deploim-prilozheniya-na-tarantool-cartridge-chast-1","title":{"rendered":"Lihtsalt ja mugavalt deponeerime rakendusi Tarantool Cartridge'ile (osa 1)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Lihtsalt ja mugavalt deponeerime rakendusi Tarantool Cartridge&#039;ile (osa 1)\" src=\"\/wp-content\/uploads\/2019\/12\/0493b6c8d60253352bc971b216e9b63e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Oleme juba r\u00e4\u00e4kinud <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/465503\/\">Tarantool Cartridge<\/a><\/noindex>, mis v\u00f5imaldab arendada ja pakkida jaotatud rakendusi. J\u00e4\u00e4nud on veel vaid \u00f5ppida, kuidas neid rakendusi juurutada ja nendega t\u00f6\u00f6tada. \u00c4rge muretsege, me oleme k\u00f5ik ette n\u00e4inud! Oleme kokku kogunud k\u00f5ik parimad tavad Tarantool Cartridge'i kasutamiseks ja kirjutanud <noindex><a rel=\"nofollow\" href=\"https:\/\/galaxy.ansible.com\/tarantool\/cartridge\">ansible-rolle<\/a><\/noindex>, mis paigaldab paketi serveritele, k\u00e4ivitab instantsid, \u00fchendab need klastriks, seadistab autoriseerimise, bootstrab vshard'i, lubab automaatse viivituse ja v\u00e4rskendab klastri konfiguratsiooni.<\/p>\n<p><\/p>\n<p>Huvitav? Siis tulge edasi, r\u00e4\u00e4gime ja n\u00e4itame k\u00f5ike.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"nachnem-s-primera\">Alustame n\u00e4itest<\/h1>\n<p><\/p>\n<p>K\u00e4sitleme ainult osa meie rolli funktsionaalsusest. T\u00e4ieliku kirjelduse k\u00f5ikidest selle v\u00f5imalustest ja sisendparameetritest leiate alati <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tarantool\/ansible-cartridge#ansible-role-tarantool-cartridge\">dokumentatsioon<\/a><\/noindex>. Kuid parem on kord proovida, kui sada korda n\u00e4ha, seega l\u00e4hme ja juurutame v\u00e4ikese rakenduse.<\/p>\n<p><\/p>\n<p>Tarantool Cartridge'il on <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tarantool\/cartridge-cli\/tree\/master\/examples\/getting-started-app#application-example-based-on-tarantool-cartridge\">tutvustus<\/a><\/noindex> n\u00e4ide v\u00e4ikese Cartridge-rakenduse loomiseks, mis salvestab teavet panga klientide ja nende kontode kohta ning pakub API-t andmete haldamiseks l\u00e4bi HTTP. Selleks kirjeldatakse rakenduses kahte v\u00f5imalikku rolle: <code>api<\/code> ja <code>salvestusruum<\/code>, mis v\u00f5ivad omistada instantsidele.<\/p>\n<p><\/p>\n<p>Ise Cartridge ei \u00fctle midagi protsesside k\u00e4ivitamise kohta, ta ainult v\u00f5imaldab juba k\u00e4ivitatud instantside seadistamist. \u00dclej\u00e4\u00e4nud peab kasutaja ise tegema: konfigureerimisfailid paigutama, teenuseid k\u00e4ivitama ja topoloogiat seadistama. Kuid me ei pea selle k\u00f5igega tegelema, Ansible teeb meie eest.<\/p>\n<p><\/p>\n<h3 id=\"ot-slov-k-delu\">Tegemist on asjadega<\/h3>\n<p><\/p>\n<p>Nii et juurutame meie rakenduse kahele virtuaalmasinale ja seadistame lihtsa topoloogia:<\/p>\n<p><\/p>\n<ul>\n<li>Replikasett <code>app-1<\/code> rakendab rolli <code>api<\/code>, mis sisaldab rolli <code>vshard-router<\/code>. Siin on ainult \u00fcks instants.<\/li>\n<li>Replikasett <code>storage-1<\/code> rakendab rolli <code>salvestusruum<\/code> (ja samal ajal <code>vshard-storage<\/code>), siia lisame kaks instantsit erinevatelt masinatelt.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Lihtsalt ja mugavalt deponeerime rakendusi Tarantool Cartridge&#039;ile (osa 1)\" src=\"\/wp-content\/uploads\/2019\/12\/62d20050e2d7a6358002ecd758222f1f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e4ite k\u00e4ivitamiseks vajame <noindex><a rel=\"nofollow\" href=\"https:\/\/www.vagrantup.com\/\">Vagrant<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/www.ansible.com\">Ansible<\/a><\/noindex> (versioon 2.8 v\u00f5i vanem).<\/p>\n<p><\/p>\n<p>Ise roll asub <noindex><a rel=\"nofollow\" href=\"https:\/\/galaxy.ansible.com\/docs\/\">Ansible Galaxy<\/a><\/noindex>. See on hoidla, mis v\u00f5imaldab jagada oma arengut\u00f6id ja kasutada valmis rolle.<\/p>\n<p><\/p>\n<p>Kloonime n\u00e4idise hoidla:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ git clone https:\/\/github.com\/dokshina\/deploy-tarantool-cartridge-app.git\n$ cd deploy-tarantool-cartridge-app &amp;&amp; git checkout 1.0.0<\/code><\/pre>\n<p><\/p>\n<p>K\u00e4ivitame virtuaalmasinad:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ vagrant up<\/code><\/pre>\n<p><\/p>\n<p>Paigaldame ansible-rolle Tarantool Cartridge:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ ansible-galaxy install tarantool.cartridge,1.0.1<\/code><\/pre>\n<p><\/p>\n<p>K\u00e4ivitame paigaldatud rolli:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ ansible-playbook -i hosts.yml playbook.yml<\/code><\/pre>\n<p><\/p>\n<p>Ootame m\u00e4nguplaani t\u00e4itmise l\u00f5ppu, liikume edasi <noindex><a rel=\"nofollow\" href=\"http:\/\/localhost:8181\/admin\/cluster\/dashboard\">http:\/\/localhost:8181\/admin\/cluster\/dashboard<\/a><\/noindex> ja naudime tulemust:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Lihtsalt ja mugavalt deponeerime rakendusi Tarantool Cartridge&#039;ile (osa 1)\" src=\"\/wp-content\/uploads\/2019\/12\/6563ddf2f2bfc85714f327c8d6b2d1c4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Saame andmeid voolata. Lahe, eks?<\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd hakkame aru saama, kuidas sellega t\u00f6\u00f6tada, ja lisame samal ajal veel \u00fche replikaatsarja topoloogiasse.<\/p>\n<p><\/p>\n<h3 id=\"nachinaem-razbiratsya\">Hakkame uurima<\/h3>\n<p><\/p>\n<p>Niisiis, mis juhtus?<\/p>\n<p><\/p>\n<p>Me t\u00f5stsime \u00fcles kaks virtuaalmasinat ja jooksutasime ansiblei m\u00e4ngu, mis seadistab meie klastrit. Vaatame faili sisu <code>playbook.yml<\/code>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">---\n- name: Deploy my Tarantool Cartridge app\n  hosts: all\n  become: true\n  become_user: root\n  tasks:\n  - name: Import Tarantool Cartridge role\n    import_role:\n      name: tarantool.cartridge<\/code><\/pre>\n<p><\/p>\n<p>Siin ei toimub midagi huvitavat, k\u00e4ivitame ansiblei rolli, mis nimetatakse <code>tarantool.cartridge<\/code>.<\/p>\n<p><\/p>\n<p>K\u00f5ik t\u00e4htsam (nimelt, klastrikonfiguratsioon) asub <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/intro_inventory.html\">inventory<\/a><\/noindex>-failis <code>hosts.yml<\/code>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">---\nall:\n  vars:\n    # common cluster variables\n    cartridge_app_name: getting-started-app\n    cartridge_package_path: .\\\/getting-started-app-1.0.0-0.rpm  # path to package\n\n    cartridge_cluster_cookie: app-default-cookie  # cluster cookie\n\n    # common ssh options\n    ansible_ssh_private_key_file: ~\\\/\\.vagrant.d\\\/insecure_private_key\n    ansible_ssh_common_args: '-o IdentitiesOnly=yes -o UserKnownHostsFile=\\\/dev\\\/null -o StrictHostKeyChecking=no'\n\n  # INSTANCES\n  hosts:\n    storage-1:\n      config:\n        advertise_uri: '172.19.0.2:3301'\n        http_port: 8181\n\n    app-1:\n      config:\n        advertise_uri: '172.19.0.3:3301'\n        http_port: 8182\n\n    storage-1-replica:\n      config:\n        advertise_uri: '172.19.0.3:3302'\n        http_port: 8183\n\n  children:\n    # GROUP INSTANCES BY MACHINES\n    host1:\n      vars:\n        # first machine connection options\n        ansible_host: 172.19.0.2\n        ansible_user: vagrant\n\n      hosts:  # instances to be started on the first machine\n        storage-1:\n\n    host2:\n      vars:\n        # second machine connection options\n        ansible_host: 172.19.0.3\n        ansible_user: vagrant\n\n      hosts:  # instances to be started on the second machine\n        app-1:\n        storage-1-replica:\n\n    # GROUP INSTANCES BY REPLICA SETS\n    replicaset_app_1:\n      vars:  # replica set configuration\n        replicaset_alias: app-1\n        failover_priority:\n          - app-1  # leader\n        roles:\n          - 'api'\n\n      hosts:  # replica set instances\n        app-1:\n\n    replicaset_storage_1:\n      vars:  # replica set configuration\n        replicaset_alias: storage-1\n        weight: 3\n        failover_priority:\n          - storage-1  # leader\n          - storage-1-replica\n        roles:\n          - 'storage'\n\n      hosts:   # replica set instances\n        storage-1:\n        storage-1-replica:<\/code><\/pre>\n<p><\/p>\n<p>K\u00f5ik, mida vajame, on \u00f5ppida hallata instantsse ja replikaatsarju, muutes selle faili sisu. Edasi lisame sellesse uusi sektsioone. Et mitte segadusse minna, kuhu neid lisada, v\u00f5ite piiluda selle faili l\u00f5ppversiooni <code>hosts.updated.yml<\/code>, mis asub n\u00e4idisrepozitarius.<\/p>\n<p><\/p>\n<h3 id=\"upravlenie-instansami\">Instantside haldamine<\/h3>\n<p><\/p>\n<p>Ansible'i terminoloogias on iga instants host (mitte segi ajada f\u00fc\u00fcsilise serveriga), st infrastruktuuri s\u00f5lme, mida Ansible haldab. Iga hosti puhul saame m\u00e4\u00e4rata \u00fchendusparameetrid (nt <code>ansible_host<\/code> ja <code>ansible_user<\/code>), ja ka instantsi konfiguratsioon. Instantside kirjeldus asub jaotises <code>hostid<\/code>.<\/p>\n<p><\/p>\n<p>Vaadakem instantsi konfiguratsiooni <code>storage-1<\/code>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">k\u00f5ik:\n  muutuja:\n    ...\n\n  # INSTANSDID\n  hostid:\n    storage-1:\n      konfiguratsioon:\n        advertise_uri: '172.19.0.2:3301'\n        http_port: 8181\n\n  ...<\/code><\/pre>\n<p><\/p>\n<p>Mu variables <code>failist, saadab need andmed serverisse<\/code> oleme m\u00e4\u00e4ranud instantsi parameetrid \u2014 <code>advertise URI<\/code> ja <code>HTTP port<\/code>.<br \/>\nAllpool on instantside parameetrid <code>app-1<\/code> ja <code>storage-1-replica<\/code>.<\/p>\n<p><\/p>\n<p>Peame Ansiblele edastama \u00fchenduse parameetrid iga instantsi jaoks. Tundub loogiline gruppida instantsid virtuaalmasinate kaupa. Selle jaoks on instantsid grupeeritud <code>host1<\/code> ja <code>host2<\/code>, ja igas grupis jaotises <code>muutuja<\/code> on m\u00e4\u00e4ratud v\u00e4\u00e4rtused <code>ansible_host<\/code> ja <code>ansible_user<\/code> \u00fche virtuaalmasina jaoks. Ja jaotises <code>hostid<\/code> \u2014 hostid (mis on ka instantsid), mis kuuluvad sellesse gruppi:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">k\u00f5ik:\n  muutuja:\n    ...\n  hostid:\n    ...\n  lapsed:\n    # GRUPPEERI INSTANSDID MASINATE KAUPA\n    host1:\n      muutuja:\n        # esimese masina \u00fchendamise v\u00f5imalused\n        ansible_host: 172.19.0.2\n        ansible_user: vagrant\n       hostid:  # instantsid, mis k\u00e4ivitatakse esimesel masinal\n        storage-1:\n\n     host2:\n      muutuja:\n        # teise masina \u00fchendamise v\u00f5imalused\n        ansible_host: 172.19.0.3\n        ansible_user: vagrant\n       hostid:  # instantsid, mis k\u00e4ivitatakse teisel masinal\n        app-1:\n        storage-1-replica:<\/code><\/pre>\n<p><\/p>\n<p>Alustame muutmist <code>hosts.yml<\/code>. Lisame veel kaks instantsi, <code>storage-2-replica<\/code> esimesel virtuaalmasinal ja <code>storage-2<\/code> teisel:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">k\u00f5ik:\n  muutuja:\n    ...\n\n  # INSTANSDID\n  hostid:\n    ...\n    storage-2:  # &lt;==\n      konfiguratsioon:\n        advertise_uri: '172.19.0.3:3303'\n        http_port: 8184\n\n    storage-2-replica:  # &lt;==\n      konfiguratsioon:\n        advertise_uri: '172.19.0.2:3302'\n        http_port: 8185\n\n  lapsed:\n    # GRUPPEERI INSTANSDID MASINATE KAUPA\n    host1:\n      muutuja:\n        ...\n      hostid:  # instantsid, mis k\u00e4ivitatakse esimesel masinal\n        storage-1:\n        storage-2-replica:  # &lt;==\n\n    host2:\n      muutuja:\n        ...\n      hostid:  # instantsid, mis k\u00e4ivitatakse teisel masinal\n        app-1:\n        storage-1-replica:\n        storage-2:  # &lt;==\n  ...<\/code><\/pre>\n<p><\/p>\n<p>K\u00e4ivitage ansible-playbook:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ ansible-playbook -i hosts.yml \n                   --limit storage-2,storage-2-replica \n                   playbook.yml<\/code><\/pre>\n<p><\/p>\n<p>P\u00f6\u00f6rake t\u00e4helepanu valikule <code>--limit<\/code>. Kuna iga klastrite instants on Ansible'i m\u00f5isted host, v\u00f5ime selgelt n\u00e4idata, milliseid instantsse tuleb seadistada playbooki k\u00e4itamisel.<\/p>\n<p><\/p>\n<p>Siseneme taas Web UI-sse <noindex><a rel=\"nofollow\" href=\"http:\/\/localhost:8181\/admin\/cluster\/dashboard\">http:\/\/localhost:8181\/admin\/cluster\/dashboard<\/a><\/noindex> ja vaatame meie uusi instantsse:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Lihtsalt ja mugavalt deponeerime rakendusi Tarantool Cartridge&#039;ile (osa 1)\" src=\"\/wp-content\/uploads\/2019\/12\/6181c359e4e5ec4adaee8737600a27e4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c4rme j\u00e4\u00e4ge saavutatu juurde ja \u00f5ppigem tutvustama topoloogiat.<\/p>\n<p><\/p>\n<h3 id=\"upravlenie-topologiey\">Topoloogia haldamine<\/h3>\n<p><\/p>\n<p>Kombineerime meie uued instantsid replikakomplekti <code>storage-2<\/code>. Lisame uue grupi <code>replicaset_storage_2<\/code> ja kirjeldame tema muutujates replikakomplekti parameetreid sarnaselt <code>replicaset_storage_1<\/code>. Sektsioonis <code>hostid<\/code> m\u00e4\u00e4ra, millised instantsid kuuluvad sellesse gruppi (st meie replikakomplekti):<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">---\nall:\n  vars:\n    ...\n  hosts:\n    ...\n  children:\n    ...\n    # R\u00dcHMA INSTANTSID KLOONIDE KAUDEL\n    ...\n    replicaset_storage_2:  # &lt;==\n      vars:  # replikaseti konfiguratsioon\n        replicaset_alias: storage-2\n        weight: 2\n        failover_priority:\n          - storage-2\n          - storage-2-replica\n        roles:\n          - &#039;storage&#039;\n\n      hosts:   # replikaseti instantsid\n        storage-2:\n        storage-2-replica:<\/code><\/pre>\n<p><\/p>\n<p>K\u00e4ivitame m\u00e4nguaktiivi uuesti:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ ansible-playbook -i hosts.yml \n                   --limit replicaset_storage_2 \n                   --tags cartridge-replicasets \n                   playbook.yml<\/code><\/pre>\n<p><\/p>\n<p>Parameeter <code>--limit<\/code> sellel korral edastame grupi nime, mis vastab meie replikasetile.<\/p>\n<p><\/p>\n<p>Vaatame valikut <code>tags<\/code>.<\/p>\n<p><\/p>\n<p>Meie roll t\u00e4idab j\u00e4rjest erinevaid \u00fclesandeid, millel on j\u00e4rgmised sildid:<\/p>\n<p><\/p>\n<ul>\n<li><code>cartridge-instances<\/code>: instantside haldamine (seadistamine, \u00fchendamine membershipiga);<\/li>\n<li><code>cartridge-replicasets<\/code>: topoloogia haldamine (replikasettide haldamine ja instantside p\u00f6\u00f6rdumatud eemaldamine (expel) klastrist);<\/li>\n<li><code>cartridge-config<\/code>: teiste klastriparametrite haldamine (vshard bootstrapping, automaatse failoveri re\u017eiim, autentimise parameetrid ja rakenduse konfiguratsioon).<\/li>\n<\/ul>\n<p><\/p>\n<p>Me saame selges\u00f5naliselt m\u00e4\u00e4rata, millist osa t\u00f6\u00f6st tahame teha, siis roll j\u00e4tab t\u00e4itmata \u00fclej\u00e4\u00e4nud \u00fclesanded. Meie juhul tahame t\u00f6\u00f6tada ainult topoloogiaga, seega m\u00e4\u00e4rasime <code>cartridge-replicasets<\/code>.<\/p>\n<p><\/p>\n<p>Hinnakem meie pingutuste tulemust. Otsime uut replikaseti <noindex><a rel=\"nofollow\" href=\"http:\/\/localhost:8181\/admin\/cluster\/dashboard\">http:\/\/localhost:8181\/admin\/cluster\/dashboard<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Lihtsalt ja mugavalt deponeerime rakendusi Tarantool Cartridge&#039;ile (osa 1)\" src=\"\/wp-content\/uploads\/2019\/12\/20da99480df519b1ee239cd81f67b786.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Jee!<\/p>\n<p><\/p>\n<p>Katsuge muuta instantside ja replikasettide konfiguratsiooni ja vaadake, kuidas klassi topoloogia muutub. Saate proovida erinevaid operatsiooniskeeme, n\u00e4iteks <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/playbooks_delegation.html#rolling-update-batch-size\">rolling update<\/a><\/noindex> v\u00f5i suurendamine <code>memtx_memory<\/code>. Roll p\u00fc\u00fcab seda teha ilma instantsi taask\u00e4ivitamiseta, et v\u00e4hendada teie rakenduse v\u00f5imaliku seisaku aega.<\/p>\n<p><\/p>\n<p>\u00c4rge unustage k\u00e4ivitada <code>vagrant halt<\/code>, et peatada virtuaalmasinad, kui olete nendega t\u00f6\u00f6tamise l\u00f5petanud.<\/p>\n<p><\/p>\n<h1 id=\"a-chto-pod-kapotom\">Aga mis on kapoti all?<\/h1>\n<p><\/p>\n<p>Siin kirjeldan l\u00e4hemalt, mis toimus ansible-rolli all meie katsete ajal.<\/p>\n<p><\/p>\n<p>Vaatame samm-sammult, kuidas Cartridge-rakendust paigaldada.<\/p>\n<p><\/p>\n<h3 id=\"ustanovka-paketa-i-start-instansov\">Paketi installimine ja instantside k\u00e4ivitamine<\/h3>\n<p><\/p>\n<p>Esiteks tuleb pakett serverisse toimetada ja see installida. Praegu oskab roll t\u00f6\u00f6tada RPM- ja DEB-pakettidega.<\/p>\n<p><\/p>\n<p>Seej\u00e4rel k\u00e4ivitame instantsid. Siin on k\u00f5ik v\u00e4ga lihtne: iga instants on eraldi <code>systemd<\/code>-teenus. Selgitan n\u00e4ite abil:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ systemctl start myapp@storage-1<\/code><\/pre>\n<p><\/p>\n<p>See k\u00e4sk k\u00e4ivitab instantsi <code>storage-1<\/code> rakenduse <code>myapp<\/code>. K\u00e4ivitatud instants otsib oma <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tarantool.io\/ru\/doc\/2.2\/book\/cartridge\/cartridge_dev\/#configuring-instances\">konfiguratsiooni<\/a><\/noindex> ja <code>\/etc\/tarantool\/conf.d\/<\/code>. Instantsi logisid saab vaadata abil <code>journald<\/code>.<\/p>\n<p><\/p>\n<p>Unit-fail <code>\/etc\/systemd\/system\/myapp@.sevice<\/code> systemd-teenuse jaoks toimetatakse koos paketiga.<\/p>\n<p><\/p>\n<p>Ansible'il on integreeritud moodulid pakettide installimiseks ja systemd teenuste haldamiseks, siin me ei ole midagi uut v\u00e4lja m\u00f5elnud.<\/p>\n<p><\/p>\n<h3 id=\"nastroyka-topologii-klastera\">Klastri topoloogia seadistamine<\/h3>\n<p><\/p>\n<p>Siit hakkab k\u00f5ige huvitavam osa pihta. Oli ju kummaline kasutada erilist ansible-rolli pakettide installimiseks ja k\u00e4ivitamiseks <code>systemd<\/code>-teenustest.<\/p>\n<p><\/p>\n<p>Klastri saab seadistada k\u00e4sitsi:<\/p>\n<p><\/p>\n<ul>\n<li>Esimene variant: avame Veebi kasutajaliidese ja vajutame nuppudele. \u00dche korraga mitme instantsi k\u00e4ivitamiseks sobib t\u00e4iesti.<\/li>\n<li>Teine variant: saate kasutada GraphQl API-d. Siin saab automatiseerida n\u00e4iteks kirjutada Pythonis skripti.<\/li>\n<li>Kolmas variant (v\u00f5imsatele vaimudele): logime sisse serverisse, \u00fchendame \u00fche instantsiga kasutades <code>tarantoolctl connect<\/code> ja teeme k\u00f5ik vajalikud manipulatsioonid Lua mooduliga <code>cartridge<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<p>Meie leiutamise peamine eesm\u00e4rk on teha just see, k\u00f5ige keerulisem osa t\u00f6\u00f6st, teie eest.<\/p>\n<p><\/p>\n<p>Ansible v\u00f5imaldab kirjutada oma mooduli ja kasutada seda rollis. Meie roll kasutab selliseid mooduleid klastrite erinevate komponentide haldamiseks.<\/p>\n<p><\/p>\n<p>Kuidas see t\u00f6\u00f6tab? Te kirjeldate soovitud klastriseisundit deklaratiivselt konfigureerimises, ja roll edastab igale moodulile vastava konfiguratsioonisegmendi. Moodul saab klastrist hetkeseisundi ja v\u00f5rdleb seda selle sisendiga. Seej\u00e4rel k\u00e4ivitab \u00fche instantsi socketi kaudu koodi, mis viib klastrit soovitud seisundisse.<\/p>\n<p><\/p>\n<h1 id=\"itogi\">Summary<\/h1>\n<p><\/p>\n<p>T\u00e4na r\u00e4\u00e4kisime ja n\u00e4itasime, kuidas teie rakendust Tarantool Cartridge'il kasutada ja seadistada lihtne topoloogia. Selleks kasutasime Ansible't - v\u00f5imekat t\u00f6\u00f6riista, mis on kasutamise poolest lihtne ja v\u00f5imaldab korraga seadistada palju infrastruktuuri s\u00f5lmi (meie puhul on need klastrite instantsid).<\/p>\n<p><\/p>\n<p>\u00dclal oleme tutvunud \u00fche paljude viisidega klastrikonfiguratsiooni kirjeldamiseks Ansible abil. Niipea kui olete valmis edasi liikuma, uurige <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/playbooks_best_practices.html\">best practices<\/a><\/noindex> pleikide kirjutamiseks. V\u00f5imalik, et teil on mugavam hallata topoloogiat kasutades <code>group_vars<\/code> ja <code>host_vars<\/code>.<\/p>\n<p><\/p>\n<p>K\u00e4esoleval ajal r\u00e4\u00e4gime, kuidas alates klastrist j\u00e4\u00e4davalt eemaldada (expel) instantsid topoloogiast, bootstrappida vshard, hallata automaatse failover'i re\u017eiimi, seadistada autoriseerimist ja patchida klastrikonfi. Ja seni v\u00f5ite iseseisvalt uurida. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tarantool\/ansible-cartridge#ansible-role-tarantool-cartridge\">dokumentatsioon<\/a><\/noindex> ja katsetada klastriparameetrite muutmist.<\/p>\n<p><\/p>\n<p>Kui midagi ei t\u00f6\u00f6ta, kindlasti <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tarantool\/ansible-cartridge\/issues\/new\">teatage<\/a><\/noindex> meile probleemist. Lahendame selle kiiresti!<\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/478710\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u044b \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043f\u0440\u043e Tarantool Cartridge, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0438\u0445. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435\u0433\u043e \u043d\u0438\u0447\u0435\u0433\u043e: \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0434\u0435\u043f\u043b\u043e\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c\u0438. \u041d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0439\u0442\u0435\u0441\u044c, \u043c\u044b \u0432\u0441\u0451 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438! \u041c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0432\u0441\u0435 best practices \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Tarantool Cartridge \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 ansible-\u0440\u043e\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u0442 \u043f\u0430\u043a\u0435\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u0441\u0442\u0430\u0440\u0442\u0430\u043d\u0435\u0442 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442 \u0438\u0445 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-53611","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u044b \u0443\u0436\u0435.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/legko-i-neprinuzhdenno-deploim-prilozheniya-na-tarantool-cartridge-chast-1\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041b\u0435\u0433\u043a\u043e \u0438 \u043d\u0435\u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0435\u043d\u043d\u043e \u0434\u0435\u043f\u043b\u043e\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Tarantool Cartridge (\u0447\u0430\u0441\u0442\u044c 1) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u044b \u0443\u0436\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/legko-i-neprinuzhdenno-deploim-prilozheniya-na-tarantool-cartridge-chast-1\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-05T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:01:32+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Lihtsalt ja muretult deploime rakendusi Tarantool Cartridge'ile (osa 1) | ProHoster","description":"Me juba.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/legko-i-neprinuzhdenno-deploim-prilozheniya-na-tarantool-cartridge-chast-1","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041b\u0435\u0433\u043a\u043e \u0438 \u043d\u0435\u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0435\u043d\u043d\u043e \u0434\u0435\u043f\u043b\u043e\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Tarantool Cartridge (\u0447\u0430\u0441\u0442\u044c 1) | ProHoster","og:description":"\u041c\u044b \u0443\u0436\u0435.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/legko-i-neprinuzhdenno-deploim-prilozheniya-na-tarantool-cartridge-chast-1","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-05T21:00:00+00:00","article:modified_time":"2020-02-18T11:01:32+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"53611","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 08:06:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:22:49","updated":"2026-01-24 08:06:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/53611","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=53611"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/53611\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=53611"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=53611"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=53611"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}