Mametraka fampiharana mora sy voajanahary amin'ny Tarantool Cartridge (fizarana 1)

Mametraka fampiharana mora sy voajanahary amin'ny Tarantool Cartridge (fizarana 1)

Efa niresaka momba izany isika Tarantool Cartridge, izay ahafahanao mamolavola rindranasa zaraina sy mametaka azy ireo. Ny hany sisa tavela dia ny mianatra ny fomba fametrahana ireo fampiharana ireo sy ny fitantanana azy ireo. Aza manahy fa efa vitanay daholo izany! Nanangona ny fomba fanao tsara indrindra amin'ny fiaraha-miasa amin'ny Tarantool Cartridge izahay ary nanoratra anjara-ansible, izay hizara ny fonosana amin'ny mpizara, manomboka ny tranga, mampiray azy ireo ho cluster, manamboatra ny fanomezan-dàlana, bootstrap vshard, mamela ny failover mandeha ho azy ary mametaka ny config cluster.

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 tahirin-kevitra. Saingy tsara kokoa ny manandrana indray mandeha toy izay mahita azy in-jato, ka andao hametraka fampiharana kely.

Tarantool Cartridge dia manana fampianarana mba hamoronana fampiharana Cartridge kely izay mitahiry vaovao momba ny mpanjifa banky sy ny kaontiny, ary koa manome API ho an'ny fitantanana angona amin'ny alàlan'ny HTTP. Mba hahatratrarana izany, ny appendix dia mamaritra andraikitra roa mety: 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 andraikitra api, izay ahitana ny anjara vshard-router. Tsy hisy afa-tsy ohatra iray eto.
  • Replicaset storage-1 mampihatra ny anjara storage (ary miaraka amin'izay koa vshard-storage), eto isika dia hanampy tranga roa avy amin'ny milina samihafa.

Mametraka fampiharana mora sy voajanahary amin'ny Tarantool Cartridge (fizarana 1)

Mba hampandehanana ny ohatra ilaintsika vagrant и Ansible (dikan-teny 2.8 na mihoatra).

Ny anjara asa mihitsy no ao Galaxy Ansible. Ity dia fitahirizana ahafahanao mizara ny asanao sy mampiasa ny andraikitra efa vita.

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 http://localhost:8181/admin/cluster/dashboard ary ankafizo ny vokatra:

Mametraka fampiharana mora sy voajanahary amin'ny Tarantool Cartridge (fizarana 1)

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 lisitra-rakitra 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 http://localhost:8181/admin/cluster/dashboard ary jereo ny tranga vaovao misy antsika:

Mametraka fampiharana mora sy voajanahary amin'ny Tarantool Cartridge (fizarana 1)

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 http://localhost:8181/admin/cluster/dashboard.

Mametraka fampiharana mora sy voajanahary amin'ny Tarantool Cartridge (fizarana 1)

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. fanavaozana mihodina na mitombo 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 halthampitsahatra 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 fanahafana в /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 Lua cartridge.

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 tsara indrindra amin'ny fanoratana boky filalaovana. Mety ho mora kokoa aminao ny mitantana ny topolojia amin'ny fampiasanao 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 tahirin-kevitra ary manandrana manova ny masontsivana cluster.

Raha misy zavatra tsy mandeha dia ataovy izay hampahafantarana antsika momba ny olana. Handamina haingana ny zava-drehetra izahay!

Source: www.habr.com

Add a comment