Tarantool Cartridge рдорд╛ рд╕рдЬрд┐рд▓реИ рд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдкрдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рддреИрдирд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН (рднрд╛рдЧ 1)

Tarantool Cartridge рдорд╛ рд╕рдЬрд┐рд▓реИ рд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдкрдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рддреИрдирд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН (рднрд╛рдЧ 1)

рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдХреБрд░рд╛ рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫреМрдВ Tarantool рдХрд╛рд░рддреВрд╕, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╡рд┐рддрд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрди рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкреНрдпрд╛рдХреЗрдЬ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпреА рд╕рдмреИ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдХрд╕рд░реА рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреЗ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╕рд┐рдХреНрди рдмрд╛рдБрдХреА рдЫред рдЪрд┐рдиреНрддрд╛ рдирдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╣рд╛рдореАрд▓реЗ рдпреЛ рд╕рдмреИ рдХрднрд░ рдЧрд░реЗрдХрд╛ рдЫреМрдВ! рд╣рд╛рдореАрд▓реЗ Tarantool Cartridge рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╕рдмреИ рдЙрддреНрддрдо рдЕрднреНрдпрд╛рд╕рд╣рд░реВ рд╕рдБрдЧреИ рд░рд╛рдЦреНрдпреМрдВ рд░ рд▓реЗрдЦреНрдпреМрдВ рдЙрддреНрддрд░рджрд╛рдпреА рднреВрдорд┐рдХрд╛, рдЬрд╕рд▓реЗ рд╕рд░реНрднрд░рд╣рд░реВрдорд╛ рдкреНрдпрд╛рдХреЗрдЬ рд╡рд┐рддрд░рдг рдЧрд░реНрдиреЗрдЫ, рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд╕реБрд░реБ рдЧрд░реНрдиреЗрдЫ, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдПрдХрдЬреБрдЯ рдЧрд░реНрдиреЗрдЫ, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗрдЫ, рдмреБрдЯрд╕реНрдЯреНрд░реНрдпрд╛рдк vshard, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлреЗрд▓рдУрднрд░ рд╕рдХреНрд╖рдо рдЧрд░реНрдиреЗрдЫ рд░ рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрдпрд╛рдЪ рдЧрд░реНрдиреЗрдЫред

рд░реЛрдЪрдХ? рддреНрдпрд╕реЛрднрдП, рдХреГрдкрдпрд╛, рдХрд╛рдЯ рдЕрдиреНрддрд░реНрдЧрдд, рд╣рд╛рдореА рддрдкрд╛рдИрдВрд▓рд╛рдИ рдмрддрд╛рдЙрдиреЗрдЫреМрдВ рд░ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рдмреИ рдХреБрд░рд╛ рджреЗрдЦрд╛рдЙрдиреЗрдЫреМрдВред

рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдгрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реМрдВ

рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рднреВрдорд┐рдХрд╛рдХреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдХреЛ рдЕрдВрд╢ рдорд╛рддреНрд░ рд╣реЗрд░реНрдиреЗрдЫреМрдВред рддрдкрд╛рдИрдВ рд╕рдзреИрдВ рдпрд╕рдХреЛ рд╕рдмреИ рдХреНрд╖рдорддрд╛рд╣рд░реВ рд░ рдЗрдирдкреБрдЯ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рдкрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд╛рдЧрдЬрд╛рддред рддрд░ рдпрд╕рд▓рд╛рдИ рд╕рдп рдкрдЯрдХ рд╣реЗрд░реНрдиреБ рднрдиреНрджрд╛ рдПрдХ рдкрдЯрдХ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБ рд░рд╛рдореНрд░реЛ рд╣реЛ, рддреНрдпрд╕реИрд▓реЗ рдПрдЙрдЯрд╛ рд╕рд╛рдиреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рдпреЛрдЧ рдЧрд░реМрдВред

Tarantool рдХрд╛рд░реНрдЯреНрд░рд┐рдЬ рдЫ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдПрдЙрдЯрд╛ рд╕рд╛рдиреЛ рдХрд╛рд░реНрдЯреНрд░рд┐рдЬ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЬрд╕рд▓реЗ рдмреИрдВрдХ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВ рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЦрд╛рддрд╛рд╣рд░реВ рдмрд╛рд░реЗ рдЬрд╛рдирдХрд╛рд░реА рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрджрдЫ, рд░ HTTP рдорд╛рд░реНрдлрдд рдбрд╛рдЯрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирдХреЛ рд▓рд╛рдЧрд┐ API рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдпреЛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди, рдкрд░рд┐рд╢рд┐рд╖реНрдЯрд▓реЗ рджреБрдИ рд╕рдореНрднрд╛рд╡рд┐рдд рднреВрдорд┐рдХрд╛рд╣рд░реВ рд╡рд░реНрдгрди рдЧрд░реНрджрдЫ: api ╨╕ storage, рдЬрд╕рд▓рд╛рдИ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдорд╛ рддреЛрдХреНрди рд╕рдХрд┐рдиреНрдЫред

рдХрд╛рд░реНрдЯреНрд░рд┐рдЬ рдЖрдлреИрд▓реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдХрд╕рд░реА рд╕реБрд░реВ рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдХреЗрд╣реА рдмреЛрд▓реНрджреИрди, рдпрд╕рд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рдмрд╛рдБрдХреА рдЖрдлреИрдВ рдЧрд░реНрдиреБрдкрд░реНрдЫ: рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╕реЗрд╡рд╛рд╣рд░реВ рд╕реБрд░реВ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдЯреЛрдкреЛрд▓реЛрдЬреА рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рддрд░ рд╣рд╛рдореА рдпреЛ рд╕рдмреИ рдЧрд░реНрджреИрдиреМрдВ; рдЙрддреНрддрд░рджрд╛рдпреАрд▓реЗ рдпреЛ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдЧрд░реНрдиреЗрдЫред

рд╢рдмреНрдж рджреЗрдЦрд┐ рдХрд░реНрдо рд╕рдореНрдо

рддреНрдпрд╕реЛрднрдП, рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рджреБрдИ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВрдорд╛ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реМрдВ рд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯреЛрдкреЛрд▓реЛрдЬреА рд╕реЗрдЯ рдЕрдк рдЧрд░реМрдВ:

  • рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ app-1 рднреВрдорд┐рдХрд╛рд▓рд╛рдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗрдЫ api, рдЬрд╕рдорд╛ рднреВрдорд┐рдХрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЫ vshard-routerред рдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рдорд╛рддреНрд░ рдЙрджрд╛рд╣рд░рдг рд╣реБрдиреЗрдЫред
  • рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ storage-1 рднреВрдорд┐рдХрд╛ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ storage (рд░ рдПрдХреИ рд╕рдордпрдорд╛ vshard-storage), рдпрд╣рд╛рдБ рд╣рд╛рдореА рд╡рд┐рднрд┐рдиреНрди рдореЗрд╕рд┐рдирд╣рд░реВрдмрд╛рдЯ рджреБрдИ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдердкреНрдиреЗрдЫреМрдВред

Tarantool Cartridge рдорд╛ рд╕рдЬрд┐рд▓реИ рд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдкрдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рддреИрдирд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН (рднрд╛рдЧ 1)

рд╣рд╛рдореАрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдЙрди рдмреНрдпрд╡рд╣рд╛рд░ ╨╕ рдЕрдЬреНрдЮрд╛рдд (рд╕рдВрд╕реНрдХрд░рдг реи.рео рд╡рд╛ рдкреБрд░рд╛рдиреЛ)ред

рднреВрдорд┐рдХрд╛ рдЖрдлреИрдорд╛ рдЫ рдЙрддреНрддрд░рджрд╛рдпреА рдЧреНрдпрд╛рд▓реЗрдХреНрд╕реАред рдпреЛ рдПрдХ рднрдгреНрдбрд╛рд░ рд╣реЛ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЖрдлреНрдиреЛ рдХрд╛рдо рд╕рд╛рдЭрд╛ рдЧрд░реНрди рд░ рддрдпрд╛рд░ рднреВрдорд┐рдХрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдгрдХреЛ рд╕рд╛рде рднрдгреНрдбрд╛рд░ рдХреНрд▓реЛрди рдЧрд░реМрдВ:

$ git clone https://github.com/dokshina/deploy-tarantool-cartridge-app.git
$ cd deploy-tarantool-cartridge-app && git checkout 1.0.0

рд╣рд╛рдореА рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ рдмрдврд╛рдЙрдБрдЫреМрдВ:

$ vagrant up

Tarantool рдХрд╛рд░рддреВрд╕ рдЙрддреНрддрд░рджрд╛рдпреА рднреВрдорд┐рдХрд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

$ ansible-galaxy install tarantool.cartridge,1.0.1

рд╕реНрдерд╛рдкрд┐рдд рднреВрдорд┐рдХрд╛ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

$ ansible-playbook -i hosts.yml playbook.yml

рд╣рд╛рдореА рдкреНрд▓реЗрдмреБрдХрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреВрд░рд╛ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреНрдЫреМрдВ, рдЬрд╛рдиреБрд╣реЛрд╕реН http://localhost:8181/admin/cluster/dashboard рд░ рдкрд░рд┐рдгрд╛рдордХреЛ рдЖрдирдиреНрдж рд▓рд┐рдиреБрд╣реЛрд╕реН:

Tarantool Cartridge рдорд╛ рд╕рдЬрд┐рд▓реИ рд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдкрдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рддреИрдирд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН (рднрд╛рдЧ 1)

рддрдкрд╛рдИрдВ рдбрд╛рдЯрд╛ рдЕрдкрд▓реЛрдб рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд░рд╛рдореНрд░реЛ, рд╕рд╣реА?

рдЕрдм рдпрд╕рд╕рдБрдЧ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреБрд╣реЛрд╕реН, рд░ рдПрдХреИ рд╕рдордпрдорд╛ рдЯреЛрдкреЛрд▓реЛрдЬреАрдорд╛ рдЕрд░реНрдХреЛ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ рдердкреНрдиреБрд╣реЛрд╕реНред

рдпрд╕рд▓рд╛рдИ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕реБрд░реБ рдЧрд░реМрдВ

рддреНрдпрд╕реЛрднрдП рдХреЗ рднрдпреЛ?

рд╣рд╛рдореАрд▓реЗ рджреБрдИрд╡рдЯрд╛ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ рд╕реЗрдЯрдЕрдк рдЧрд░реНрдпреМрдВ рд░ рдПрдЙрдЯрд╛ рдЙрддреНрддрд░рджрд╛рдпреА рдкреНрд▓реЗрдмреБрдХ рд╕реБрд░реВ рдЧрд░реНтАНрдпреМрдВ рдЬрд╕рд▓реЗ рд╣рд╛рдореНрд░реЛ рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНтАНрдпреЛред рдлрд╛рдЗрд▓рдХрд╛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рд╣реЗрд░реМрдВ 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

рдпрд╣рд╛рдБ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдХреЗрд╣реА рд╣реБрдБрджреИрди, рднрдирд┐рдиреНрдЫ рдЬрд╡рд╛рдлрджреЗрд╣реА рднреВрдорд┐рдХрд╛ рд╕реБрд░реБ рдЧрд░реМрдВ tarantool.cartridge.

рд╕рдмреИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЪреАрдЬрд╣рд░реВ (рдЕрд░реНрдерд╛рддреН, рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди) рдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдЫрдиреН рд╕реВрдЪреА-рдлрд╛рдЗрд▓ 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:

рд╣рд╛рдореАрд▓реЗ рдпрд╕ рдлрд╛рдЗрд▓рдХреЛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрд░ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд░ рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВ рдХрд╕рд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╕рд┐рдХреНрдиреБ рдЖрд╡рд╢реНрдпрдХ рдЫред рдЕрд░реНрдХреЛ рд╣рд╛рдореА рдпрд╕рдорд╛ рдирдпрд╛рдБ рдЦрдгреНрдбрд╣рд░реВ рдердкреНрдиреЗрдЫреМрдВред рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдХрд╣рд╛рдБ рдердкреНрдиреЗ рднреНрд░рдордорд╛ рдирдкрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдлрд╛рдЗрд▓рдХреЛ рдЕрдиреНрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, hosts.updated.yml, рдЬреБрди рдЙрджрд╛рд╣рд░рдг рднрдгреНрдбрд╛рд░рдорд╛ рдЫред

рдЙрджрд╛рд╣рд░рдг рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди

рдЙрддреНрддрд░рджрд╛рдпреА рд╕рд░реНрддрд╣рд░реВрдорд╛, рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╣реЛрд╕реНрдЯ рд╣реЛ (рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рд░реНрднрд░рд╕рдБрдЧ рднреНрд░рдорд┐рдд рд╣реБрдиреБ рд╣реБрдБрджреИрди), рдЕрд░реНрдерд╛рддреНред рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдиреЛрдб рдЬреБрди Ansible рд▓реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреЗрдЫред рдкреНрд░рддреНрдпреЗрдХ рд╣реЛрд╕реНрдЯрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рдЬрдбрд╛рди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ (рдЬрд╕реНрддреИ ansible_host ╨╕ ansible_user), рд╕рд╛рдереИ рдЙрджрд╛рд╣рд░рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдиред рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдХреЛ рд╡рд┐рд╡рд░рдг рдЦрдгреНрдбрдорд╛ рдЫ hosts.

рдЙрджрд╛рд╣рд░рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╣реЗрд░реМрдВ storage-1:

all:
  vars:
    ...

  # INSTANCES
  hosts:
    storage-1:
      config:
        advertise_uri: '172.19.0.2:3301'
        http_port: 8181

  ...

рдЪрд░ рдорд╛ config рд╣рд╛рдореАрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реЗрдХрд╛ рдЫреМрдВ - advertise URI ╨╕ HTTP port.
рддрд▓ рдЙрджрд╛рд╣рд░рдг рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдЫрдиреН app-1 ╨╕ storage-1-replica.

рд╣рд╛рдореАрд▓реЗ Ansible рд▓рд╛рдИ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдЬрдбрд╛рди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдмрддрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рд╕рдореВрд╣рд╣рд░реВрдорд╛ рд╕рдореВрд╣ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рддрд╛рд░реНрдХрд┐рдХ рджреЗрдЦрд┐рдиреНрдЫред рдпрд╕ рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐, рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд╕рдореВрд╣рд╣рд░реВрдорд╛ рд╕рдВрдпреБрдХреНрдд рдЫрдиреН host1 ╨╕ host2, рд░ рдЦрдгреНрдбрдорд╛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣рдорд╛ vars рдорд╛рдирд╣рд░реВ рд╕рдВрдХреЗрдд рдЧрд░рд┐рдПрдХреЛ рдЫ ansible_host ╨╕ ansible_user рдПрдЙрдЯрд╛ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдХреЛ рд▓рд╛рдЧрд┐ред рд░ рдЦрдгреНрдбрдорд╛ hosts тАФ рд╣реЛрд╕реНрдЯрд╣рд░реВ (рдЙрд░реНрдл рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ) рдЬреБрди рдпрд╕ рд╕рдореВрд╣рдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН:

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:

рд╣рд╛рдореА рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдерд╛рд▓реНрдЫреМрдВ hosts.ymlред рдЕрдЭ рджреБрдИрд╡рдЯрд╛ рдЙрджрд╛рд╣рд░рдг рдердкреМрдВ, storage-2-replica рдкрд╣рд┐рд▓реЛ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдорд╛ рд░ storage-2 рджреЛрд╕реНрд░реЛ рдорд╛:

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:  # <==
  ...

рдЙрддреНрддрд░рджрд╛рдпреА рдкреНрд▓реЗрдмреБрдХ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

$ ansible-playbook -i hosts.yml 
                   --limit storage-2,storage-2-replica 
                   playbook.yml

рдХреГрдкрдпрд╛ рд╡рд┐рдХрд▓реНрдк рдиреЛрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН --limitред рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╕реНрдЯрд░ рдЙрджрд╛рд╣рд░рдг рдЙрддреНрддрд░рджрд╛рдпреА рд╕рд░реНрддрд╣рд░реВрдорд╛ рд╣реЛрд╕реНрдЯ рднрдПрдХреЛ рд╣реБрдирд╛рд▓реЗ, рд╣рд╛рдореА рдкреНрд▓реЗрдмреБрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджрд╛ рдХреБрди рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБрдкрд░реНрдЫ рднрдиреЗрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред

рд╡реЗрдм UI рдорд╛ рдлрд░реНрдХрд┐рдБрджреИ http://localhost:8181/admin/cluster/dashboard рд░ рд╣рд╛рдореНрд░реЛ рдирдпрд╛рдБ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН:

Tarantool Cartridge рдорд╛ рд╕рдЬрд┐рд▓реИ рд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдкрдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рддреИрдирд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН (рднрд╛рдЧ 1)

рддреНрдпрд╣рд╛рдБ рдирд░реЛрдХреМрдВ рд░ рдорд╛рд╕реНрдЯрд░ рдЯреЛрдкреЛрд▓реЛрдЬреА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдиред

рдЯреЛрдкреЛрд▓реЛрдЬреА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди

рд╣рд╛рдореНрд░реЛ рдирдпрд╛рдБ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯрдорд╛ рдЬреЛрдбреМрдВ storage-2ред рдирдпрд╛рдБ рд╕рдореВрд╣ рдердкреМрдВ replicaset_storage_2 рд░ рдпрд╕рдХреЛ рдЪрд░рд╣рд░реВрдорд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд╕рдБрдЧ рд╕рдорд╛рдирддрд╛рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрди рдЧрд░реНрдиреБрд╣реЛрд╕реН replicaset_storage_1ред рдЦрдгреНрдбрдорд╛ hosts рдпрд╕ рд╕рдореВрд╣рдорд╛ рдХреБрди-рдХреБрди рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреЗрдЫрдиреН рднрдиреНрдиреЗ рд╕рдВрдХреЗрдд рдЧрд░реМрдВ (рдЕрд░реНрдерд╛рдд, рд╣рд╛рдореНрд░реЛ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ):

---
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:

рдкреНрд▓реЗрдмреБрдХ рдлреЗрд░рд┐ рд╕реБрд░реБ рдЧрд░реМрдВ:

$ ansible-playbook -i hosts.yml 
                   --limit replicaset_storage_2 
                   --tags cartridge-replicasets 
                   playbook.yml

рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдорд╛ --limit рдпрд╕ рдкрдЯрдХ рд╣рд╛рдореАрд▓реЗ рд╕рдореВрд╣рдХреЛ рдирд╛рдо рдкрд╛рд╕ рдЧрд░реНрдпреМрдВ рдЬреБрди рд╣рд╛рдореНрд░реЛ рдкреНрд░рддрд┐рдХреГрддрд┐рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред

рд╡рд┐рдХрд▓реНрдк рд╡рд┐рдЪрд╛рд░ рдЧрд░реМрдВ tags.

рд╣рд╛рдореНрд░реЛ рднреВрдорд┐рдХрд╛рд▓реЗ рдХреНрд░рдорд╢рдГ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╣рд░реВ рдЧрд░реНрджрдЫ, рдЬреБрди рдирд┐рдореНрди рдЯреНрдпрд╛рдЧрд╣рд░реВрд╕рдБрдЧ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдПрдХреЛ рдЫ:

  • cartridge-instances: рдЙрджрд╛рд╣рд░рдг рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди (рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди, рд╕рджрд╕реНрдпрддрд╛ рдЬрдбрд╛рди);
  • cartridge-replicasets: рдЯреЛрдкреЛрд▓реЛрдЬреА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди (рдкреНрд░рддрд┐рдХреГрддрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд░ рдХреНрд▓рд╕реНрдЯрд░рдмрд╛рдЯ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдХреЛ рд╕реНрдерд╛рдпреА рд╣рдЯрд╛рдЙрдиреЗ (рдирд┐рдХрд╛рд▓));
  • cartridge-config: рдЕрдиреНрдп рдХреНрд▓рд╕реНрдЯрд░ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди (vshard рдмреБрдЯрд╕реНрдЯреНрд░реНрдпрд╛рдкрд┐рдЩ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлреЗрд▓рдУрднрд░ рдореЛрдб, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди)ред

рд╣рд╛рдореА рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ рдХрд┐ рд╣рд╛рдореА рдХрд╛рдордХреЛ рдХреБрди рднрд╛рдЧ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ, рддреНрдпрд╕рдкрдЫрд┐ рднреВрдорд┐рдХрд╛рд▓реЗ рдмрд╛рдБрдХреА рдХрд╛рд░реНрдпрд╣рд░реВ рдЫреЛрдбреНрдиреЗрдЫред рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╣рд╛рдореА рдЯреЛрдкреЛрд▓реЛрдЬреАрд╕рдБрдЧ рдорд╛рддреНрд░ рдХрд╛рдо рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реЗрдХрд╛ рдЫреМрдВ cartridge-replicasets.

рд╣рд╛рдореНрд░реЛ рдкреНрд░рдпрд╛рд╕рдХреЛ рдирддрд┐рдЬрд╛рдХреЛ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реМрдВред рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рдирдпрд╛рдБ рдкреНрд░рддрд┐рдХреГрддрд┐ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫреМрдВ http://localhost:8181/admin/cluster/dashboard.

Tarantool Cartridge рдорд╛ рд╕рдЬрд┐рд▓реИ рд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдкрдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рддреИрдирд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН (рднрд╛рдЧ 1)

рд╣реБрд░реИ!

рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯрд╣рд░реВрдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдХреНрд▓рд╕реНрдЯрд░ рдЯреЛрдкреЛрд▓реЛрдЬреА рдХрд╕рд░реА рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреНрдЫ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред рддрдкрд╛рдИрдВ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдЪрд╛рд▓рди рдкрд░рд┐рджреГрд╢реНрдпрд╣рд░реВ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ред рд░реЛрд▓рд┐рдЩ рдЕрдкрдбреЗрдЯ рд╡рд╛ рд╡реГрджреНрдзрд┐ memtx_memoryред рднреВрдорд┐рдХрд╛рд▓реЗ рддрдкрд╛рдЗрдБрдХреЛ рдЖрд╡реЗрджрдирдХреЛ рд╕рдореНрднрд╛рд╡рд┐рдд рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХрдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЙрджрд╛рд╣рд░рдг рдкреБрди: рд╕реБрд░реБ рдирдЧрд░реА рдпреЛ рдЧрд░реНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗрдЫред

рджреМрдбрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реН vagrant haltрднрд░реНрдЪреБрдЕрд▓ рдореЗрд╢рд┐рдирд╣рд░реВ рд░реЛрдХреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЬрдм рддрдкрд╛рдЗрдБ рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░рд┐рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рд╣реБрдб рдореБрдирд┐ рдХреЗ рдЫ?

рдпрд╣рд╛рдБ рдо рддрдкрд╛рдИрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдкреНрд░рдпреЛрдЧрдХреЛ рдХреНрд░рдордорд╛ рдЬрд╡рд╛рдлрджреЗрд╣реА рднреВрдорд┐рдХрд╛рдХреЛ рд╣реБрдб рдЕрдиреНрддрд░реНрдЧрдд рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдерд┐рдпреЛ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдердк рдмрддрд╛рдЙрдиреЗрдЫреБред

рдХрд╛рд░рдЯреНрд░рд┐рдЬ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓рд╛рдИ рдЪрд░рдгрдмрджреНрдз рд░реВрдкрдорд╛ рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрдиреЗ рд╣реЗрд░реМрдВред

рдкреНрдпрд╛рдХреЗрдЬ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ рд░ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд╕реБрд░реБ рдЧрд░реНрджреИ

рдкрд╣рд┐рд▓реЗ рддрдкрд╛рдИрдВрд▓реЗ рд╕рд░реНрднрд░рдорд╛ рдкреНрдпрд╛рдХреЗрдЬ рдбреЗрд▓рд┐рднрд░ рдЧрд░реНрди рд░ рдпрд╕рд▓рд╛рдИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рд╣рд╛рд▓ рднреВрдорд┐рдХрд╛рд▓реЗ RPM рд░ DEB рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдЫред

рдЕрд░реНрдХреЛ рд╣рд╛рдореА рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд╕реБрд░реВ рдЧрд░реНрдЫреМрдВред рдпрд╣рд╛рдБ рд╕рдмреИ рдХреБрд░рд╛ рдзреЗрд░реИ рд╕рд░рд▓ рдЫ: рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдЕрд▓рдЧ рдЫ systemd- рд╕реЗрд╡рд╛ред рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдиреЗрдЫреБ:

$ systemctl start myapp@storage-1

рдпреЛ рдЖрджреЗрд╢рд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗрдЫ storage-1 рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ myappред рд▓рдиреНрдЪ рдЧрд░рд┐рдПрдХреЛ рдЙрджрд╛рд╣рд░рдгрд▓реЗ рдпрд╕рдХреЛ рдЦреЛрдЬреА рдЧрд░реНрдиреЗрдЫ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди ╨▓ /etc/tarantool/conf.d/ред рдЙрджрд╛рд╣рд░рдг рд▓рдЧрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣реЗрд░реНрди рд╕рдХрд┐рдиреНрдЫ journald.

рдПрдХрд╛рдЗ рдлрд╛рдЗрд▓ /etc/systemd/system/[email protected] рдкреНрдпрд╛рдХреЗрдЬрдХреЛ рд╕рд╛рде рдкреНрд░рдгрд╛рд▓реАрдорд╛ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдиреЗрдЫред

Ansible рд╕рдБрдЧ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд░ systemd рд╕реЗрд╡рд╛рд╣рд░реВ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдирд┐рд░реНрдорд┐рдд рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдЫрдиреН; рд╣рд╛рдореАрд▓реЗ рдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рдирдпрд╛рдБ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдЧрд░реЗрдХрд╛ рдЫреИрдиреМрдВред

рдХреНрд▓рд╕реНрдЯрд░ рдЯреЛрдкреЛрд▓реЛрдЬреА рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ

рдпрд╣рд╛рдБ рд░рдорд╛рдЗрд▓реЛ рд╕реБрд░реБ рд╣реБрдиреНрдЫред рд╕рд╣рдордд рд╣реБрдиреБрд╣реЛрд╕реН, рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд░ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢реЗрд╖ рдЙрддреНрддрд░рджрд╛рдпреА рднреВрдорд┐рдХрд╛рдХреЛ рд╕рд╛рде рдЪрд┐рдиреНрддрд╛ рдЧрд░реНрдиреБ рдЕрдиреМрдареЛ рд╣реБрдиреЗрдЫ systemd- рд╕реЗрд╡рд╛рд╣рд░реВред

рддрдкрд╛рдИрдВ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

  • рдкрд╣рд┐рд▓реЛ рд╡рд┐рдХрд▓реНрдк: рд╡реЗрдм UI рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН рд░ рдмрдЯрдирд╣рд░реВрдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпреЛ рдзреЗрд░реИ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдХреЛ рдПрдХ-рдкрдЯрдХ рд╕реБрд░реБрдХреЛ рд▓рд╛рдЧрд┐ рдПрдХрджрдо рдЙрдкрдпреБрдХреНрдд рдЫред
  • рджреЛрд╕реНрд░реЛ рд╡рд┐рдХрд▓реНрдк: рддрдкрд╛рдИрдВ GraphQl API рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрд╣рд╛рдБ рддрдкрд╛рдЗрдБ рдкрд╣рд┐рд▓реЗ рдиреИ рдХреЗрд╣рд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдкрд╛рдЗрдерди рдорд╛ рд▓рд┐рдкрд┐ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реНред
  • рддреЗрд╕реНрд░реЛ рд╡рд┐рдХрд▓реНрдк (рдмрд▓рд┐рдпреЛ-рдЗрдЪреНрдЫрд╛рдХреЛ рд▓рд╛рдЧрд┐): рд╕рд░реНрднрд░рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН, рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реН tarantoolctl connect рд░ Lua рдореЛрдбреНрдпреБрд▓рдХреЛ рд╕рд╛рде рд╕рдмреИ рдЖрд╡рд╢реНрдпрдХ рд╣реЗрд░рдлреЗрд░рд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдиреБрд╣реЛрд╕реН cartridge.

рд╣рд╛рдореНрд░реЛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░рдХреЛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рднрдиреЗрдХреЛ рдареНрдпрд╛рдХреНрдХреИ рдпреЛ рдЧрд░реНрдиреБ рд╣реЛ, рддрдкрд╛рдИрдВрдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рдордХреЛ рд╕рдмреИрднрдиреНрджрд╛ рдХрдард┐рди рднрд╛рдЧред

Ansible рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЖрдлреНрдиреИ рдореЛрдбреНрдпреБрд▓ рд▓реЗрдЦреНрди рд░ рднреВрдорд┐рдХрд╛рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд╣рд╛рдореНрд░реЛ рднреВрдорд┐рдХрд╛рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдХреНрд▓рд╕реНрдЯрд░ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рддреНрдпрд╕реНрддрд╛ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред

рдпрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ? рддрдкрд╛рдИрдВрд▓реЗ рдШреЛрд╖рдгрд╛рддреНрдордХ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдЗрдЪреНрдЫрд┐рдд рдЕрд╡рд╕реНрдерд╛ рд╡рд░реНрдгрди рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ, рд░ рднреВрдорд┐рдХрд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЛрдбреНрдпреБрд▓рд▓рд╛рдИ рдпрд╕рдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЦрдгреНрдб рдЗрдирдкреБрдЯрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдореЛрдбреНрдпреБрд▓рд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд╣рд╛рд▓рдХреЛ рдЕрд╡рд╕реНрдерд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ рд░ рдпрд╕рд▓рд╛рдИ рдЗрдирдкреБрдЯрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рд╛рдкреНрдд рднрдПрдХреЛрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрджрдЫред рдЕрд░реНрдХреЛ, рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдгрдХреЛ рд╕рдХреЗрдЯ рдорд╛рд░реНрдлрдд рдХреЛрдб рд╕реБрд░реБ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рд▓рд╛рдИ рдЪрд╛рд╣рд┐рдПрдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рд▓реНрдпрд╛рдЙрдБрдЫред

рдкрд░рд┐рдгрд╛рдорд╣рд░реВ

рдЖрдЬ рд╣рд╛рдореАрд▓реЗ Tarantool Cartridge рдорд╛ рддрдкрд╛рдЗрдБрдХреЛ рдЖрд╡реЗрджрди рдХрд╕рд░реА рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреЗ рд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯреЛрдкреЛрд▓реЛрдЬреА рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдмрддрд╛рдпреМрдБ рд░ рджреЗрдЦрд╛рдпреМрдБред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ Ansible - рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНтАНрдпреМрдВ рдЬреБрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдЫ рд░ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдПрдХреИ рд╕рд╛рде рдзреЗрд░реИ рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рдиреЛрдбрд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ (рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдХреНрд▓рд╕реНрдЯрд░ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ)ред

рдорд╛рдерд┐ рд╣рд╛рдореАрд▓реЗ Ansible рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╡рд░реНрдгрди рдЧрд░реНрдиреЗ рдзреЗрд░реИ рддрд░рд┐рдХрд╛рд╣рд░реВ рдордзреНрдпреЗ рдПрдЙрдЯрд╛рдорд╛ рд╣реЗрд░реНрдпреМрдВред рдПрдХрдЪреЛрдЯрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЕрдЧрд╛рдбрд┐ рдмрдвреНрди рддрдпрд╛рд░ рдорд╣рд╕реБрд╕ рдЧрд░реНрдиреБрднрдпреЛ, рдЕрдиреНрд╡реЗрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЙрддреНрддрдо рдЕрднреНрдпрд╛рд╕рд╣рд░реВ рдкреНрд▓реЗрдмреБрдХ рд▓реЗрдЦреНрдиреЗ рдорд╛ред рддрдкрд╛рдИрд▓реЗ рдЖрдлреНрдиреЛ рдЯреЛрдкреЛрд▓реЛрдЬреА рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдкрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ group_vars ╨╕ host_vars.

рдзреЗрд░реИ рдЪрд╛рдБрдбреИ рд╣рд╛рдореА рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдЯреЛрдкреЛрд▓реЛрдЬреА, рдмреБрдЯрд╕реНрдЯреНрд░реНрдпрд╛рдк vshard, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлреЗрд▓рдУрднрд░ рдореЛрдб рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХрдиреНрдлрд┐рдЧрд░ рд░ рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░ рдкреНрдпрд╛рдЪрдмрд╛рдЯ рдХрд╕рд░реА рд╕реНрдерд╛рдпреА рд░реВрдкрдорд╛ рдореЗрдЯрд╛рдЙрдиреЗ (рдирд┐рдХрд╛рд▓рд╛) рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдмрддрд╛рдЙрдиреЗрдЫреМрдВред рдпрд╕ рдмреАрдЪрдорд╛, рддрдкрд╛рдИрдВ рдЖрдлреНрдиреЛ рдЕрдзреНрдпрдпрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд╛рдЧрдЬрд╛рдд рд░ рдХреНрд▓рд╕реНрдЯрд░ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдпрджрд┐ рдХреЗрд╣рд┐ рдХрд╛рдо рдЧрд░реНрджреИрди рднрдиреЗ, рдирд┐рд╢реНрдЪрд┐рдд рд╣реБрдиреБрд╣реЛрд╕реН рдорд▓рд╛рдИ рдерд╛рд╣рд╛ рджрд┐рдиреБ рд╕рдорд╕реНрдпрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╣рд╛рдореАрд▓рд╛рдИред рд╣рд╛рдореА рдЫрд┐рдЯреНрдЯреИ рд╕рдмреИ рдХреБрд░рд╛ рдорд┐рд▓рд╛рдЙрдиреЗрдЫреМрдВ!

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди