{"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\/sq\/blog\/administrirovanie\/legko-i-neprinuzhdenno-deploim-prilozheniya-na-tarantool-cartridge-chast-1","title":{"rendered":"Leht\u00eb dhe qet\u00ebsisht n\u00eb deploy aplikacione n\u00eb Tarantool Cartridge (pjesa 1)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Leht\u00eb dhe qet\u00ebsisht n\u00eb deploy aplikacione n\u00eb Tarantool Cartridge (pjesa 1)\" src=\"\/wp-content\/uploads\/2019\/12\/0493b6c8d60253352bc971b216e9b63e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ne kemi folur tashm\u00eb p\u00ebr <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/465503\/\">Tarantool Cartridge<\/a><\/noindex>, i cili lejon zhvillimin e aplikacioneve t\u00eb shp\u00ebrndara dhe paketimin e tyre. Ka mbetur vet\u00ebm nj\u00eb hap: t\u00eb m\u00ebsoni si t\u00eb depozitoni k\u00ebto aplikacione dhe t'i menaxhoni ato. Mos u shqet\u00ebsoni, ne e kemi parashikuar gjith\u00e7ka! Kemi mbledhur s\u00eb bashku t\u00eb gjitha praktikat m\u00eb t\u00eb mira p\u00ebr pun\u00ebn me Tarantool Cartridge dhe kemi shkruar <noindex><a rel=\"nofollow\" href=\"https:\/\/galaxy.ansible.com\/tarantool\/cartridge\">ansible-rolin<\/a><\/noindex>, i cili do t\u00eb shp\u00ebrndaj\u00eb paket\u00ebn n\u00eb servera, do t\u00eb nxis\u00eb instancat, do t'i bashkoj\u00eb ato n\u00eb nj\u00eb klaster, do t\u00eb konfiguroj\u00eb autorizimin, do t\u00eb zbatoj\u00eb vshard, do t\u00eb aktivizoj\u00eb automatizmin e d\u00ebshtimit dhe do t\u00eb p\u00ebrdit\u00ebsoj\u00eb konfigurimin e klasterit.<\/p>\n<p><\/p>\n<p>Interesant? At\u00ebher\u00eb ju lutem vijoni posht\u00eb, ne do t'ju tregojm\u00eb gjith\u00e7ka.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"nachnem-s-primera\">Le t\u00eb fillojm\u00eb me nj\u00eb shembull<\/h1>\n<p><\/p>\n<p>Do t\u00eb shqyrtojm\u00eb vet\u00ebm nj\u00eb pjes\u00eb t\u00eb funksionalitetit t\u00eb rolit ton\u00eb. P\u00ebrshkrimi i plot\u00eb i t\u00eb gjitha mund\u00ebsive dhe parametrave t\u00eb tij hyr\u00ebs mund t\u00eb gjendet gjithmon\u00eb n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tarantool\/ansible-cartridge#ansible-role-tarantool-cartridge\">dokumentacion<\/a><\/noindex>. Por \u00ebsht\u00eb m\u00eb mir\u00eb ta provoni nj\u00eb her\u00eb sesa ta shihni nj\u00ebqind her\u00eb, prandaj le t\u00eb depozojm\u00eb nj\u00eb aplikacion t\u00eb vog\u00ebl.<\/p>\n<p><\/p>\n<p>Tarantool Cartridge ka <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tarantool\/cartridge-cli\/tree\/master\/examples\/getting-started-app#application-example-based-on-tarantool-cartridge\">tutorialin<\/a><\/noindex> p\u00ebr krijimin e nj\u00eb aplikacioni t\u00eb vog\u00ebl Cartridge, i cili ruan informacion n\u00eb lidhje me klient\u00ebt e bank\u00ebs dhe llogarit\u00eb e tyre, si dhe ofron API p\u00ebr menaxhimin e t\u00eb dh\u00ebnave p\u00ebrmes HTTP. P\u00ebr k\u00ebt\u00eb, aplikacioni p\u00ebrshkruan dy role t\u00eb mundshme: <code>api<\/code> dhe <code>storage<\/code>, t\u00eb cilat mund t\u00eb caktohen p\u00ebr instancat.<\/p>\n<p><\/p>\n<p>Cartridge nuk nuk thot\u00eb se si t\u00eb nisin proceset, ai thjesht ofron mund\u00ebsin\u00eb p\u00ebr t\u00eb konfigurimin e instancave t\u00eb tashme. Pjesa tjet\u00ebr p\u00ebrdoruesi duhet ta b\u00ebj\u00eb vet\u00eb: t\u00eb vendos\u00eb skedar\u00ebt e konfigurimit, t\u00eb nisin sh\u00ebrbimet dhe t\u00eb konfiguroj\u00eb topologjin\u00eb. Por ne nuk do t\u00eb angazhohemi n\u00eb k\u00ebt\u00eb, do ta b\u00ebj\u00eb Ansible p\u00ebr ne.<\/p>\n<p><\/p>\n<h3 id=\"ot-slov-k-delu\">Nga fjal\u00ebt n\u00eb veprim<\/h3>\n<p><\/p>\n<p>Tani, do ta vendosim aplikacionin ton\u00eb n\u00eb dy virtuale dhe do t\u00eb konfigurojm\u00eb nj\u00eb topologji t\u00eb thjesht\u00eb:<\/p>\n<p><\/p>\n<ul>\n<li>Replicaset <code>app-1<\/code> do t\u00eb realizoj\u00eb rolin <code>api<\/code>, q\u00eb p\u00ebrfshin rolin <code>vshard-router<\/code>. K\u00ebtu do t\u00eb ket\u00eb vet\u00ebm nj\u00eb instanc\u00eb.<\/li>\n<li>Replicaset <code>storage-1<\/code> realizon rolin <code>storage<\/code> (dhe nj\u00ebkoh\u00ebsisht <code>vshard-storage<\/code>), k\u00ebtu do t\u00eb shtojm\u00eb dy instanca nga makina t\u00eb ndryshme.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Leht\u00eb dhe qet\u00ebsisht n\u00eb deploy aplikacione n\u00eb Tarantool Cartridge (pjesa 1)\" src=\"\/wp-content\/uploads\/2019\/12\/62d20050e2d7a6358002ecd758222f1f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebr t\u00eb filluar shembullin, do t\u00eb na duhen <noindex><a rel=\"nofollow\" href=\"https:\/\/www.vagrantup.com\/\">Vagrant<\/a><\/noindex> dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/www.ansible.com\">Ansible<\/a><\/noindex> (versionet 2.8 ose m\u00eb t\u00eb vjetra).<\/p>\n<p><\/p>\n<p>Roli vet\u00eb ndodhet n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/galaxy.ansible.com\/docs\/\">Ansible Galaxy<\/a><\/noindex>. Ky \u00ebsht\u00eb nj\u00eb depo q\u00eb lejon ndarjen e pun\u00ebve t\u00eb tua dhe p\u00ebrdorimin e rol\u00ebve t\u00eb gatshme.<\/p>\n<p><\/p>\n<p>Klonojm\u00eb depozitat me shembullin:<\/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>Nisim virtualet:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ vagrant up<\/code><\/pre>\n<p><\/p>\n<p>Instalojm\u00eb ansible-rolin 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>Nisim rolin e instaluar:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ ansible-playbook -i hosts.yml playbook.yml<\/code><\/pre>\n<p><\/p>\n<p>Presim t\u00eb p\u00ebrfundoj\u00eb ekzekutimi i playbook-ut, kalojm\u00eb n\u00eb <noindex><a rel=\"nofollow\" href=\"http:\/\/localhost:8181\/admin\/cluster\/dashboard\">http:\/\/localhost:8181\/admin\/cluster\/dashboard<\/a><\/noindex> dhe shijojm\u00eb rezultatin:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Leht\u00eb dhe qet\u00ebsisht n\u00eb deploy aplikacione n\u00eb Tarantool Cartridge (pjesa 1)\" src=\"\/wp-content\/uploads\/2019\/12\/6563ddf2f2bfc85714f327c8d6b2d1c4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mund t\u00eb fillojm\u00eb t\u00eb d\u00ebrgojm\u00eb t\u00eb dh\u00ebna. Super, apo jo?<\/p>\n<p><\/p>\n<p>Tani le t\u00eb kuptojm\u00eb si t\u00eb punojm\u00eb me k\u00ebt\u00eb dhe nj\u00ebkoh\u00ebsisht t\u00eb shtojm\u00eb nj\u00eb replikaset n\u00eb topologji.<\/p>\n<p><\/p>\n<h3 id=\"nachinaem-razbiratsya\">Nisim t\u00eb kuptojm\u00eb<\/h3>\n<p><\/p>\n<p>Pra, \u00e7far\u00eb ndodhi?<\/p>\n<p><\/p>\n<p>Ne ngrit\u00ebm dy makina virtuale dhe e \u00e7eluam playbook-un ansible, i cili konfiguronte klasterin ton\u00eb. Le t\u00eb shikojm\u00eb p\u00ebrmbajtjen e skedarit <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>K\u00ebtu nuk ndodh asgj\u00eb interesante, nisim rolin ansible, i cili quhet <code>tarantool.cartridge<\/code>.<\/p>\n<p><\/p>\n<p>T\u00eb gjitha gj\u00ebrat m\u00eb t\u00eb r\u00ebnd\u00ebsishme (n\u00eb ve\u00e7anti, konfigurimi i klasterit) ndodhen n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/intro_inventory.html\">inventory<\/a><\/noindex>-skedarin <code>hosts.yml<\/code>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">---\nall:\n  vars:\n    # variablat e zakonshme t\u00eb klastrit\n    cartridge_app_name: getting-started-app\n    cartridge_package_path: .\/getting-started-app-1.0.0-0.rpm  # rruga drejt paket\u00ebs\n\n    cartridge_cluster_cookie: app-default-cookie  # cookies e klastrit\n\n    # opsionet e zakonshme ssh\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  # INSTANCET\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    # GRUPONI INSTANCET SIPAS MASHINAVE\n    host1:\n      vars:\n        # opsionet e lidhjes p\u00ebr makin\u00ebn e par\u00eb\n        ansible_host: 172.19.0.2\n        ansible_user: vagrant\n\n      hosts:  # instancat q\u00eb do t\u00eb fillojn\u00eb n\u00eb makin\u00ebn e par\u00eb\n        storage-1:\n\n    host2:\n      vars:\n        # opsionet e lidhjes p\u00ebr makin\u00ebn e dyt\u00eb\n        ansible_host: 172.19.0.3\n        ansible_user: vagrant\n\n      hosts:  # instancat q\u00eb do t\u00eb fillojn\u00eb n\u00eb makin\u00ebn e dyt\u00eb\n        app-1:\n        storage-1-replica:\n\n    # GRUPONI INSTANCET SIPAS SETEVE TE REPLIKAVE\n    replicaset_app_1:\n      vars:  # konfigurimi i grupit t\u00eb replikave\n        replicaset_alias: app-1\n        failover_priority:\n          - app-1  # lideri\n        roles:\n          - 'api'\n\n      hosts:  # instancat e grupit t\u00eb replikave\n        app-1:\n\n    replicaset_storage_1:\n      vars:  # konfigurimi i grupit t\u00eb replikave\n        replicaset_alias: storage-1\n        weight: 3\n        failover_priority:\n          - storage-1  # lideri\n          - storage-1-replica\n        roles:\n          - 'storage'\n\n      hosts:   # instancat e grupit t\u00eb replikave\n        storage-1:\n        storage-1-replica:<\/code><\/pre>\n<p><\/p>\n<p>E gjith\u00eb \u00e7ka q\u00eb na nevojitet \u00ebsht\u00eb t\u00eb m\u00ebsojm\u00eb si t\u00eb menaxhojm\u00eb instancat dhe replikaset, duke ndryshuar p\u00ebrmbajtjen e k\u00ebtij skedari. M\u00eb pas do t\u00eb shtojm\u00eb seksione t\u00eb reja n\u00eb t\u00eb. P\u00ebr t\u00eb mos u confuzuar se ku t'i shtojm\u00eb, mund t\u00eb shikoni n\u00eb versionin p\u00ebrfundimtar t\u00eb k\u00ebtij skedari, <code>hosts.updated.yml<\/code>, i cili ndodhet n\u00eb depozitat e shembujve.<\/p>\n<p><\/p>\n<h3 id=\"upravlenie-instansami\">Menaxhimi i instancave<\/h3>\n<p><\/p>\n<p>N\u00eb terminologjin\u00eb e Ansible, \u00e7do instanc\u00eb \u00ebsht\u00eb nj\u00eb host (mos e ngat\u00ebrroni me serverin fizik), dmth. nj\u00eb nyje infrastrukturore, t\u00eb cilin Ansible do ta menaxhoj\u00eb. P\u00ebr \u00e7do host, ne mund t\u00eb specifikojm\u00eb parametrat e lidhjes (si\u00e7 jan\u00eb <code>ansible_host<\/code> dhe <code>ansible_user<\/code>), si dhe konfigurimin e instanc\u00ebs. P\u00ebrshkrimi i instancave ndodhet n\u00eb seksionin <code>hosts<\/code>.<\/p>\n<p><\/p>\n<p>Le t\u00eb shqyrtojm\u00eb konfigurimin e instanc\u00ebs <code>storage-1<\/code>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">all:\n  vars:\n    ...\n\n  # INSTANCAT\n  hosts:\n    storage-1:\n      config:\n        advertise_uri: '172.19.0.2:3301'\n        http_port: 8181\n\n  ...<\/code><\/pre>\n<p><\/p>\n<p>N\u00eb variabl\u00ebn <code>config<\/code> ne kemi specifikuar parametrat e instanc\u00ebs \u2014 <code>advertise URI<\/code> dhe <code>HTTP port<\/code>.<br \/>\nM\u00eb posht\u00eb ndodhen parametrat e instancave <code>app-1<\/code> dhe <code>storage-1-replica<\/code>.<\/p>\n<p><\/p>\n<p>Na nevojitet t\u00eb njoftojm\u00eb Ansible parametrat e lidhjes p\u00ebr secil\u00ebn instanc\u00eb. Duket logjike t\u00eb grupojm\u00eb instancat sipas makinerive virtuale. P\u00ebr k\u00ebt\u00eb, instancat jan\u00eb bashkuar n\u00eb grupe <code>host1<\/code> dhe <code>host2<\/code>, dhe n\u00eb \u00e7do grup n\u00eb seksionin <code>vars<\/code> jan\u00eb specifikuar vlerat <code>ansible_host<\/code> dhe <code>ansible_user<\/code> p\u00ebr nj\u00eb virtuale. Dhe n\u00eb seksionin <code>hosts<\/code> \u2014 hostet (ato jan\u00eb instanca) q\u00eb p\u00ebrfshihen n\u00eb k\u00ebt\u00eb grup:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">all:\n  vars:\n    ...\n  hosts:\n    ...\n  children:\n    # GRUPONI INSTANCAT SIPAS MASHINAVE\n    host1:\n      vars:\n        # mund\u00ebsit\u00eb e lidhjes p\u00ebr makin\u00ebn e par\u00eb\n        ansible_host: 172.19.0.2\n        ansible_user: vagrant\n       hosts:  # instancat q\u00eb do t\u00eb nisin n\u00eb makin\u00ebn e par\u00eb\n        storage-1:\n\n     host2:\n      vars:\n        # mund\u00ebsit\u00eb e lidhjes p\u00ebr makin\u00ebn e dyt\u00eb\n        ansible_host: 172.19.0.3\n        ansible_user: vagrant\n       hosts:  # instancat q\u00eb do t\u00eb nisin n\u00eb makin\u00ebn e dyt\u00eb\n        app-1:\n        storage-1-replica:<\/code><\/pre>\n<p><\/p>\n<p>T\u00eb fillojm\u00eb t\u00eb ndryshojm\u00eb <code>hosts.yml<\/code>. Le t\u00eb shtojm\u00eb edhe dy instanca, <code>storage-2-replica<\/code> n\u00eb virtualen e par\u00eb dhe <code>storage-2<\/code> n\u00eb t\u00eb dyt\u00ebn:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">all:\n  vars:\n    ...\n\n  # INSTANCAT\n  hosts:\n    ...\n    storage-2:  # &lt;==\n      config:\n        advertise_uri: '172.19.0.3:3303'\n        http_port: 8184\n\n    storage-2-replica:  # &lt;==\n      config:\n        advertise_uri: '172.19.0.2:3302'\n        http_port: 8185\n\n  children:\n    # GRUPONI INSTANCAT SIPAS MASHINAVE\n    host1:\n      vars:\n        ...\n      hosts:  # instancat q\u00eb do t\u00eb nisin n\u00eb makin\u00ebn e par\u00eb\n        storage-1:\n        storage-2-replica:  # &lt;==\n\n    host2:\n      vars:\n        ...\n      hosts:  # instancat q\u00eb do t\u00eb nisin n\u00eb makin\u00ebn e dyt\u00eb\n        app-1:\n        storage-1-replica:\n        storage-2:  # &lt;==\n  ...<\/code><\/pre>\n<p><\/p>\n<p>Po nisim 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>Kujdesi p\u00ebr opsionin <code>--limit<\/code>. Duke \u00e7do instanc\u00eb e grupit \u00ebsht\u00eb nj\u00eb host n\u00eb kuptimin e Ansible, ne mund ta spesifikojm\u00eb me qart\u00eb se cilat instanca duhet t\u00eb konfigurohen gjat\u00eb ekzekutimit t\u00eb playbook-ut.<\/p>\n<p><\/p>\n<p>P\u00ebrs\u00ebri hyjm\u00eb n\u00eb Web UI <noindex><a rel=\"nofollow\" href=\"http:\/\/localhost:8181\/admin\/cluster\/dashboard\">http:\/\/localhost:8181\/admin\/cluster\/dashboard<\/a><\/noindex> dhe v\u00ebzhgojm\u00eb instancat tona t\u00eb reja:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Leht\u00eb dhe qet\u00ebsisht n\u00eb deploy aplikacione n\u00eb Tarantool Cartridge (pjesa 1)\" src=\"\/wp-content\/uploads\/2019\/12\/6181c359e4e5ec4adaee8737600a27e4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nuk do t\u00eb ndalemi k\u00ebtu dhe do t\u00eb m\u00ebsojm\u00eb si t\u00eb menaxhojm\u00eb topologjin\u00eb.<\/p>\n<p><\/p>\n<h3 id=\"upravlenie-topologiey\">Menaxhimi i topologjis\u00eb<\/h3>\n<p><\/p>\n<p>T\u00eb bashkojm\u00eb instancat tona t\u00eb reja n\u00eb nj\u00eb replicas\u00ebt <code>storage-2<\/code>. T\u00eb shtojm\u00eb nj\u00eb grup t\u00eb ri <code>replicaset_storage_2<\/code> dhe ta p\u00ebrshkruajm\u00eb n\u00eb variablat e saj parametrat e replicas\u00ebt n\u00eb m\u00ebnyr\u00eb t\u00eb ngjashme me <code>replicaset_storage_1<\/code>. N\u00eb seksionin <code>hosts<\/code> t\u00eb tregojm\u00eb se cilat instanca do t\u00eb p\u00ebrfshihen n\u00eb k\u00ebt\u00eb grup (dmth replicas\u00ebt ton\u00eb):<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">---\nall:\n  vars:\n    ...\n  hosts:\n    ...\n  children:\n    ...\n    # GRUPONI INSTANCAT SIPAS REPLICA SETS\n    ...\n    replicaset_storage_2:  # &lt;==\n      vars:  # konfigurimi i replicas\u00ebt\n        replicaset_alias: storage-2\n        weight: 2\n        failover_priority:\n          - storage-2\n          - storage-2-replica\n        roles:\n          - 'storage'\n\n      hosts:   # instancat e replicas\u00ebt\n        storage-2:\n        storage-2-replica:<\/code><\/pre>\n<p><\/p>\n<p>P\u00ebrs\u00ebri e nis\u00ebm playbook-un:<\/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>N\u00eb parametrin <code>--limit<\/code> k\u00ebt\u00eb her\u00eb kemi kaluar emrin e grupit q\u00eb korrespondon me replicas\u00ebt ton\u00eb.<\/p>\n<p><\/p>\n<p>Le t\u00eb shqyrtojm\u00eb opsionin <code>tags<\/code>.<\/p>\n<p><\/p>\n<p>Roli yn\u00eb p\u00ebrmbush vazhdimisht detyra t\u00eb ndryshme q\u00eb sh\u00ebnohen me etiketat e m\u00ebposhtme:<\/p>\n<p><\/p>\n<ul>\n<li><code>cartridge-instances<\/code>: menaxhimi i instancave (konfigurimi, lidha me an\u00ebtar\u00ebsimin);<\/li>\n<li><code>cartridge-replicasets<\/code>: menaxhimi i topologjis\u00eb (menaxhimi i replika grupeve dhe heqja e pakthyeshme (expel) e instancave nga klasteri);<\/li>\n<li><code>cartridge-config<\/code>: menaxhimi i parametrave t\u00eb tjer\u00eb t\u00eb klasterit (vshard bootstrapping, moda e automatik t\u00eb d\u00ebshtimit, parametrat e autorizimit dhe konfigurimi i aplikacionit).<\/li>\n<\/ul>\n<p><\/p>\n<p>Mund t\u00eb specifikojm\u00eb qart\u00eb se cil\u00ebn pjes\u00eb t\u00eb pun\u00ebs d\u00ebshirojm\u00eb t\u00eb b\u00ebjm\u00eb, at\u00ebher\u00eb roli do t\u00eb kaloj\u00eb p\u00ebrpara n\u00eb realizimin e detyrave t\u00eb tjera. N\u00eb rastin ton\u00eb, duam t\u00eb punojm\u00eb vet\u00ebm me topologjin\u00eb, prandaj kemi sh\u00ebnuar <code>cartridge-replicasets<\/code>.<\/p>\n<p><\/p>\n<p>Le t\u00eb vler\u00ebsojm\u00eb rezultatin e p\u00ebrpjekjeve tona. Gjejm\u00eb nj\u00eb grup t\u00eb ri replika n\u00eb <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=\"Leht\u00eb dhe qet\u00ebsisht n\u00eb deploy aplikacione n\u00eb Tarantool Cartridge (pjesa 1)\" src=\"\/wp-content\/uploads\/2019\/12\/20da99480df519b1ee239cd81f67b786.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hurrah!<\/p>\n<p><\/p>\n<p>Eksperimentoni me ndryshimin e konfigurimeve t\u00eb instancave dhe grupeve replika dhe shihni se si ndryshon topologjia e klasterit. Mund t\u00eb provoni skenar\u00eb t\u00eb ndrysh\u00ebm operativ\u00eb, si p.sh. <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/playbooks_delegation.html#rolling-update-batch-size\">p\u00ebrdit\u00ebsim t\u00eb vazhduesh\u00ebm<\/a><\/noindex> ose rritje <code>memtx_memory<\/code>. Roli do t\u00eb p\u00ebrpiqet ta b\u00ebj\u00eb k\u00ebt\u00eb pa rinisjen e instanc\u00ebs, p\u00ebr t\u00eb zvog\u00ebluar mund\u00ebsin\u00eb e downtime-it t\u00eb aplikacionit tuaj.<\/p>\n<p><\/p>\n<p>Mos harroni t\u00eb filloni <code>vagrant halt<\/code>, p\u00ebr t\u00eb ndaluar virtualet kur p\u00ebrfundoni me to.<\/p>\n<p><\/p>\n<h1 id=\"a-chto-pod-kapotom\">\u00c7far\u00eb ndodhet n\u00ebn kapak?<\/h1>\n<p><\/p>\n<p>K\u00ebtu do t\u00eb flas m\u00eb shum\u00eb rreth asaj q\u00eb ndodhte n\u00ebn kapak gjat\u00eb eksperimenteve tona me rolin ansible.<\/p>\n<p><\/p>\n<p>Le t\u00eb shqyrtojm\u00eb hapat e zhvillimit t\u00eb aplikacionit Cartridge.<\/p>\n<p><\/p>\n<h3 id=\"ustanovka-paketa-i-start-instansov\">Instalimi i paket\u00ebs dhe fillimi i instancave<\/h3>\n<p><\/p>\n<p>S\u00eb pari, duhet t\u00eb d\u00ebrgoni paket\u00ebn n\u00eb server dhe ta instaloni at\u00eb. Tani roli di t\u00eb punoj\u00eb me paketat RPM dhe DEB.<\/p>\n<p><\/p>\n<p>Pastaj, fillojm\u00eb instancat. K\u00ebtu gj\u00ebrat jan\u00eb shum\u00eb t\u00eb thjeshta: \u00e7do instanc\u00eb \u00ebsht\u00eb nj\u00eb <code>systemd<\/code>-sh\u00ebrbim. Po jap nj\u00eb shembull:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ systemctl start myapp@storage-1<\/code><\/pre>\n<p><\/p>\n<p>Kjo komand\u00eb do t\u00eb nis\u00eb instanc\u00ebn <code>storage-1<\/code> aplikacione <code>myapp<\/code>. Instanca e nisur do t\u00eb k\u00ebrkoj\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tarantool.io\/ru\/doc\/2.2\/book\/cartridge\/cartridge_dev\/#configuring-instances\">konfigurimit<\/a><\/noindex> n\u00eb <code>\/etc\/tarantool\/conf.d\/<\/code>. Logs e instanc\u00ebs mund t\u00eb shihen p\u00ebrmes <code>journald<\/code>.<\/p>\n<p><\/p>\n<p>Skedari i nj\u00ebsis\u00eb <code>\/etc\/systemd\/system\/myapp@.sevice<\/code> p\u00ebr sh\u00ebrbimin systemd do t\u00eb d\u00ebrgohet s\u00eb bashku me paket\u00ebn.<\/p>\n<p><\/p>\n<p>Ansible ka module t\u00eb nd\u00ebrtuara p\u00ebr instalimin e paketave dhe menaxhimin e sh\u00ebrbimeve systemd, k\u00ebtu nuk kemi shpikur asgj\u00eb t\u00eb re.<\/p>\n<p><\/p>\n<h3 id=\"nastroyka-topologii-klastera\">Konfigurimi i topologjis\u00eb s\u00eb klasterit<\/h3>\n<p><\/p>\n<p>K\u00ebtu fillon e gjith\u00eb arg\u00ebtimi. Priteni, do t\u00eb ishte \u00e7uditshme t\u00eb keni nj\u00eb rol t\u00eb ve\u00e7ant\u00eb ansible p\u00ebr instalimin e paketave dhe fillimin e <code>systemd<\/code>-sh\u00ebrbimeve.<\/p>\n<p><\/p>\n<p>Klasterin mund ta konfiguroni manualisht:<\/p>\n<p><\/p>\n<ul>\n<li>Opsioni i par\u00eb: hapim Web UI dhe shtypim butonat. P\u00ebr nj\u00eb fillim t\u00eb vet\u00ebm t\u00eb disa instancave, \u00ebsht\u00eb plot\u00ebsisht i p\u00ebrshtatsh\u00ebm.<\/li>\n<li>Opsioni i dyt\u00eb: mund t\u00eb p\u00ebrdorim GraphQL API. K\u00ebtu mund t\u00eb automatizojm\u00eb di\u00e7ka, p\u00ebr shembull, t\u00eb shkruajm\u00eb nj\u00eb skript n\u00eb Python.<\/li>\n<li>Opsioni i tret\u00eb (p\u00ebr ata m\u00eb t\u00eb fort\u00ebt): hyjm\u00eb n\u00eb server, lidhemi me nj\u00eb nga instancat p\u00ebrmes <code>tarantoolctl connect<\/code> dhe b\u00ebjm\u00eb t\u00eb gjitha manipulimet e nevojshme me modulin Lua <code>cartridge<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<p>Detyra kryesore e shpikjes son\u00eb \u00ebsht\u00eb t\u00eb b\u00ebjm\u00eb p\u00ebr ju k\u00ebt\u00eb pjes\u00eb t\u00eb pun\u00ebs, m\u00eb t\u00eb v\u00ebshtir\u00ebn.<\/p>\n<p><\/p>\n<p>Ansible lejon t\u00eb shkruhet moduli juaj dhe ta p\u00ebrdorni at\u00eb n\u00eb rolin tuaj. Roli yn\u00eb p\u00ebrdor k\u00ebta module p\u00ebr t\u00eb menaxhuar komponent\u00ebt e ndrysh\u00ebm t\u00eb klasterit.<\/p>\n<p><\/p>\n<p>Si funksionon kjo? Ju p\u00ebrshkruani gjendjen e d\u00ebshiruar t\u00eb klasterit n\u00eb nj\u00eb konfigurim deklarativ, dhe roli u jep secilit moduli seksionin e tij t\u00eb konfigurimit. Moduli merr gjendjen aktuale t\u00eb klasterit dhe e krahasohet me at\u00eb q\u00eb ka ardhur n\u00eb input. Pastaj, p\u00ebrmes socket-it t\u00eb nj\u00ebrit prej instancave, fillohet kodi q\u00eb e \u00e7on klasterin n\u00eb gjendjen e d\u00ebshiruar.<\/p>\n<p><\/p>\n<h1 id=\"itogi\">P\u00ebrfundimet<\/h1>\n<p><\/p>\n<p>Sot treguam dhe treguam se si t\u00eb vendosni aplikacionin tuaj n\u00eb Tarantool Cartridge dhe t\u00eb konfiguroni nj\u00eb topologji t\u00eb thjesht\u00eb. P\u00ebr k\u00ebt\u00eb, p\u00ebrdor\u00ebm Ansible \u2014 nj\u00eb mjet t\u00eb fuqish\u00ebm, i njohur p\u00ebr thjesht\u00ebsin\u00eb e tij t\u00eb p\u00ebrdorimit dhe lejon konfigurimin e shum\u00eb nyjeve t\u00eb infrastruktur\u00ebs n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb (n\u00eb rastin ton\u00eb, k\u00ebto jan\u00eb instancat e klas\u00ebs).<\/p>\n<p><\/p>\n<p>M\u00eb sip\u00ebr, e shqyrtuam nj\u00eb nga shum\u00eb m\u00ebnyrat e p\u00ebrshkrimit t\u00eb konfiguracionit t\u00eb klas\u00ebs p\u00ebrmes Ansible. Sa her\u00eb q\u00eb t\u00eb kuptoni se jeni gati t\u00eb shkoni p\u00ebrpara, shqyrtoni <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/playbooks_best_practices.html\">praktikat m\u00eb t\u00eb mira<\/a><\/noindex> p\u00ebr t\u00eb shkruar playbooks. Ndoshta do t'ju jet\u00eb m\u00eb leht\u00eb t\u00eb menaxhoni topologjin\u00eb me an\u00eb t\u00eb <code>group_vars<\/code> dhe <code>host_vars<\/code>.<\/p>\n<p><\/p>\n<p>Shum\u00eb shpejt do t'ju tregojm\u00eb se si t\u00eb fshini pa kthim (expel) instancat nga topologjia, si t\u00eb bootstroni vshard, si t\u00eb menaxhoni modalitetin e automatik t\u00eb failover-it, t\u00eb konfiguroni autorizimin dhe t\u00eb patch-oni konfigurimin e klas\u00ebs. Nd\u00ebrkoh\u00eb, mund t\u00eb eksploroni dhe t\u00eb eksperimentoni me ndryshimin e parameter\u00ebve t\u00eb klas\u00ebs. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tarantool\/ansible-cartridge#ansible-role-tarantool-cartridge\">dokumentacioni<\/a><\/noindex> \u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<p><\/p>\n<p>N\u00ebse di\u00e7ka nuk funksionon, sigurohuni q\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tarantool\/ansible-cartridge\/issues\/new\">t\u00eb na njoftoni<\/a><\/noindex> p\u00ebr problem. Ne do ta zgjidhim shpejt!<\/p>\n<p>Burimi: <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 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\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\" \/>\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\/sq\/blog\/administrirovanie\/legko-i-neprinuzhdenno-deploim-prilozheniya-na-tarantool-cartridge-chast-1\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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 \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/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\udd47 Leht\u00ebsisht dhe pa mundim implantojm\u00eb aplikacione n\u00eb Tarantool Cartridge (cakto 1) | ProHoster","description":"Ne kemi folur tashm\u00eb p\u00ebr Tarantool Cartridge, i cili lejon zhvillimin e aplikacioneve t\u00eb shp\u00ebrndara dhe paketimin e tyre. Tani mbetet vet\u00ebm t\u00eb m\u00ebsoni si t\u00eb b\u00ebni implementimin e k\u00ebtyre aplikacioneve dhe t'i menaxhoni ato. Mos u shqet\u00ebsoni, kemi parashikuar gjith\u00e7ka! Kemi mbledhur s\u00eb bashku t\u00eb gjitha praktikat m\u00eb t\u00eb mira p\u00ebr pun\u00ebn me Tarantool Cartridge dhe kemi shkruar nj\u00eb rol ansible q\u00eb do t\u00eb shp\u00ebrndaj\u00eb paket\u00ebn n\u00eb servera, do t\u00eb niste instancat, do t'i bashkonte ato n\u00eb nj\u00eb grumbull dhe do t\u00eb konfiguronte.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/legko-i-neprinuzhdenno-deploim-prilozheniya-na-tarantool-cartridge-chast-1","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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 \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","og:url":"https:\/\/prohoster.info\/sq\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/53611","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=53611"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/53611\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=53611"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=53611"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=53611"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}