เชŸเซ‡เชฐเชจเซเชŸเซ‚เชฒ เช•เชพเชฐเชคเซ‚เชธ เชชเชฐ เชธเชฐเชณเชคเชพเชฅเซ€ เช…เชจเซ‡ เชธเซเชตเชพเชญเชพเชตเชฟเช• เชฐเซ€เชคเซ‡ เช…เชฐเชœเซ€เช“ เชœเชฎเชพเชตเชตเซ€ (เชญเชพเช— 1)

เชŸเซ‡เชฐเชจเซเชŸเซ‚เชฒ เช•เชพเชฐเชคเซ‚เชธ เชชเชฐ เชธเชฐเชณเชคเชพเชฅเซ€ เช…เชจเซ‡ เชธเซเชตเชพเชญเชพเชตเชฟเช• เชฐเซ€เชคเซ‡ เช…เชฐเชœเซ€เช“ เชœเชฎเชพเชตเชตเซ€ (เชญเชพเช— 1)

เช…เชฎเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€ เช›เซ‡ เชŸเซ‡เชฐเซ‡เชจเซเชŸเซ‚เชฒ เช•เชพเชฐเชคเซ‚เชธ, เชœเซ‡ เชคเชฎเชจเซ‡ เชตเชฟเชคเชฐเชฟเชค เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹ เชตเชฟเช•เชธเชพเชตเชตเชพ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชชเซ‡เช•เซ‡เชœ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชคเซเชฏเชพเช‚ เช•เช‚เชˆ เชฌเชพเช•เซ€ เชจเชฅเซ€: เช† เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชœเชฎเชพเชตเชตเชพ เช…เชจเซ‡ เชธเช‚เชšเชพเชฒเชฟเชค เช•เชฐเชตเซ€ เชคเซ‡ เชถเซ€เช–เซ‹. เชšเชฟเช‚เชคเชพ เช•เชฐเชถเซ‹ เชจเชนเซ€เช‚, เช…เชฎเซ‡ เชฌเชงเซเช‚ เชœ เชตเชฟเชšเชพเชฐเซเชฏเซเช‚ เช›เซ‡! เช…เชฎเซ‡ Tarantool Cartridge เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชคเชฎเชพเชฎ เชถเซเชฐเซ‡เชทเซเช  เชชเชฆเซเชงเชคเชฟเช“ เชเช•เชธเชพเชฅเซ‡ เชฎเซ‚เช•เซ€ เช›เซ‡ เช…เชจเซ‡ เชฒเช–เซเชฏเซเช‚ เช›เซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ เชญเซ‚เชฎเชฟเช•เชพ, เชœเซ‡ เชชเซ‡เช•เซ‡เชœเชจเซ‡ เชธเชฐเซเชตเชฐเซเชธเชฎเชพเช‚ เชตเชฟเช˜เชŸเชฟเชค เช•เชฐเชถเซ‡, เชฆเชพเช–เชฒเชพเช“ เชถเชฐเซ‚ เช•เชฐเชถเซ‡, เชคเซ‡เชฎเชจเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชœเซ‹เชกเชถเซ‡, เช…เชงเชฟเช•เซƒเชคเชคเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเชถเซ‡, vshard เชฌเซเชŸเชธเซเชŸเซเชฐเซ‡เชช เช•เชฐเชถเซ‡, เชธเซเชตเชšเชพเชฒเชฟเชค เชซเซ‡เชฒเช“เชตเชฐเชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเชถเซ‡ เช…เชจเซ‡ เช•เซเชฒเชธเซเชŸเชฐ เชฐเซ‚เชชเชฐเซ‡เช–เชพเชจเซ‡ เชชเซ‡เชš เช•เชฐเชถเซ‡.

เชฐเชธเชชเซเชฐเชฆ? เชชเช›เซ€ เชนเซเช‚ เช•เชŸ เชนเซ‡เช เชณ เชชเซ‚เช›เซเช‚ เช›เซเช‚, เช…เชฎเซ‡ เชฌเชงเซเช‚ เช•เชนเซ€เชถเซเช‚ เช…เชจเซ‡ เชฌเชคเชพเชตเซ€เชถเซเช‚.

เชšเชพเชฒเซ‹ เชเช• เช‰เชฆเชพเชนเชฐเชฃเชฅเซ€ เชถเชฐเซ‚เช†เชค เช•เชฐเซ€เช

เช…เชฎเซ‡ เช…เชฎเชพเชฐเซ€ เชญเซ‚เชฎเชฟเช•เชพเชจเซ€ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพเชจเซ‹ เชฎเชพเชคเซเชฐ เชเช• เชญเชพเช— เช†เชตเชฐเซ€ เชฒเชˆเชถเซเช‚. เชคเชฎเซ‡ เชนเช‚เชฎเซ‡เชถเชพ เชคเซ‡เชจเซ€ เชคเชฎเชพเชฎ เชธเซเชตเชฟเชงเชพเช“ เช…เชจเซ‡ เช‡เชจเชชเซเชŸ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเซเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃ เชตเชฐเซเชฃเชจ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ. เชชเชฐเช‚เชคเซ เชธเซ‹ เชตเช–เชค เชœเซ‹เชตเชพ เช•เชฐเชคเชพเช‚ เชเช•เชตเชพเชฐ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเซ‹ เชตเชงเซ เชธเชพเชฐเซเช‚ เช›เซ‡, เชคเซ‡เชฅเซ€ เชšเชพเชฒเซ‹ เชเช• เชจเชพเชจเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช.

เชŸเซ‡เชฐเชจเซเชŸเซ‚เชฒ เช•เชพเชฐเชคเซ‚เชธ เชงเชฐเชพเชตเซ‡ เช›เซ‡ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒ เชเช• เชจเชพเชจเซ€ เช•เชพเชฐเชคเซ‚เชธ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชœเซ‡ เชฌเซ‡เช‚เช• เช—เซเชฐเชพเชนเช•เซ‹ เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เช–เชพเชคเชพเช“ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ HTTP เชฆเซเชตเชพเชฐเชพ เชกเซ‡เชŸเชพ เชฎเซ‡เชจเซ‡เชœ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ API เชชเชฃ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฌเซ‡ เชธเช‚เชญเชตเชฟเชค เชญเซ‚เชฎเชฟเช•เชพเช“เชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเซ‡ เช›เซ‡: api ะธ storageเชœเซ‡ เชฆเชพเช–เชฒเชพเช“เชจเซ‡ เชธเซ‹เช‚เชชเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เช•เชพเชฐเชคเซ‚เชธ เชชเซ‹เชคเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชถเชฐเซ‚ เช•เชฐเชตเซ€ เชคเซ‡ เชตเชฟเชถเซ‡ เช•เชถเซเช‚ เช•เชนเซ‡เชคเซเช‚ เชจเชฅเซ€, เชคเซ‡ เชซเช•เซเชค เชชเชนเซ‡เชฒเชพเชฅเซ€ เชšเชพเชฒเซ€ เชฐเชนเซ‡เชฒเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹เชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช เชฌเชพเช•เซ€เชจเซเช‚ เชœเชพเชคเซ‡ เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช: เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชตเชฟเช˜เชŸเชฟเชค เช•เชฐเชตเซ€, เชธเซ‡เชตเชพเช“ เชถเชฐเซ‚ เช•เชฐเชตเซ€ เช…เชจเซ‡ เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€ เชธเซ‡เชŸ เช•เชฐเชตเซ€. เชชเชฃ เช…เชฎเซ‡ เช† เชฌเชงเซเช‚ เชจเชนเซ€เช‚ เช•เชฐเซ€เช, เชœเชตเชพเชฌเซ€เชฌเชฒ เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช•เชฐเชถเซ‡.

เชถเชฌเซเชฆเซ‹เชฅเซ€ เช•เชพเชฐเซเชฏเซ‹ เชธเซเชงเซ€

เชคเซ‡เชฅเซ€, เชšเชพเชฒเซ‹ เช…เชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชฌเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเซ‹ เชชเชฐ เชœเชฎเชพเชตเซ€เช เช…เชจเซ‡ เชเช• เชธเชฐเชณ เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€ เชธเซ‡เชŸ เช•เชฐเซ€เช:

  • เชชเซเชฐเชคเชฟเช•เซƒเชคเชฟ app-1 เชญเซ‚เชฎเชฟเช•เชพ เชญเชœเชตเชถเซ‡ apiเชœเซ‡เชฎเชพเช‚ เชญเซ‚เชฎเชฟเช•เชพเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡ vshard-router. เช…เชนเซ€เช‚ เชฎเชพเชคเซเชฐ เชเช• เชœ เชฆเชพเช–เชฒเซ‹ เชนเชถเซ‡.
  • เชชเซเชฐเชคเชฟเช•เซƒเชคเชฟ storage-1 เชญเซ‚เชฎเชฟเช•เชพเชจเซ‹ เช…เชฎเชฒ เช•เชฐเซ‡ เช›เซ‡ storage (เช…เชจเซ‡ เชคเซ‡ เชœ เชธเชฎเชฏเซ‡ vshard-storage), เช…เชนเซ€เช‚ เช†เชชเชฃเซ‡ เชตเชฟเชตเชฟเชง เชฎเชถเซ€เชจเซ‹เชฎเชพเช‚เชฅเซ€ เชฌเซ‡ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช‰เชฎเซ‡เชฐเซ€เช เช›เซ€เช.

เชŸเซ‡เชฐเชจเซเชŸเซ‚เชฒ เช•เชพเชฐเชคเซ‚เชธ เชชเชฐ เชธเชฐเชณเชคเชพเชฅเซ€ เช…เชจเซ‡ เชธเซเชตเชพเชญเชพเชตเชฟเช• เชฐเซ€เชคเซ‡ เช…เชฐเชœเซ€เช“ เชœเชฎเชพเชตเชตเซ€ (เชญเชพเช— 1)

เช‰เชฆเชพเชนเชฐเชฃ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเชจเซ‡ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเชพเช—เซเชฐเชค ะธ Ansible (เชธเช‚เชธเซเช•เชฐเชฃ 2.8 เช…เชฅเชตเชพ เชชเช›เซ€เชจเซเช‚).

เชญเซ‚เชฎเชฟเช•เชพ เชชเซ‹เชคเซ‡ เชœ เช›เซ‡ เชœเชตเชพเชฌเซ€ เช—เซ‡เชฒเซ‡เช•เซเชธเซ€. เช† เชเช• เชญเช‚เชกเชพเชฐ เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ เชคเชฎเชพเชฐเซเช‚ เช•เชพเชฐเซเชฏ เชถเซ‡เชฐ เช•เชฐเชตเชพ เช…เชจเซ‡ เชคเซˆเชฏเชพเชฐ เชญเซ‚เชฎเชฟเช•เชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เช‰เชฆเชพเชนเชฐเชฃ เชธเชพเชฅเซ‡ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชจเซ‡ เช•เซเชฒเซ‹เชจ เช•เชฐเซ‹:

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

เช…เชฎเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเซ‹ เช‰เชญเชพ เช•เชฐเซ€เช เช›เซ€เช:

$ vagrant up

เชŸเซ‡เชฐเชจเซเชŸเซ‚เชฒ เช•เชพเชฐเชคเซ‚เชธเชจเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ เชญเซ‚เชฎเชฟเช•เชพ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ‹:

$ ansible-galaxy install tarantool.cartridge,1.0.1

เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซ€ เชญเซ‚เชฎเชฟเช•เชพ เชšเชฒเชพเชตเซ‹:

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

เช…เชฎเซ‡ เชชเซเชฒเซ‡เชฌเซเช•เชจเชพ เช…เชฎเชฒเชจเชพ เช…เช‚เชคเชจเซ€ เชฐเชพเชน เชœเซ‹เชˆ เชฐเชนเซเชฏเชพ เช›เซ€เช, เชชเชฐ เชœเชพเช“ http://localhost:8181/admin/cluster/dashboard เช…เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎเชจเซ‹ เช†เชจเช‚เชฆ เชฎเชพเชฃเซ‹:

เชŸเซ‡เชฐเชจเซเชŸเซ‚เชฒ เช•เชพเชฐเชคเซ‚เชธ เชชเชฐ เชธเชฐเชณเชคเชพเชฅเซ€ เช…เชจเซ‡ เชธเซเชตเชพเชญเชพเชตเชฟเช• เชฐเซ€เชคเซ‡ เช…เชฐเชœเซ€เช“ เชœเชฎเชพเชตเชตเซ€ (เชญเชพเช— 1)

เชคเชฎเซ‡ เชกเซ‡เชŸเชพ เชฐเซ‡เชกเซ€ เชถเช•เซ‹ เช›เซ‹. เชธเชฐเชธ, เชฌเชฐเชพเชฌเชฐ เชจเซ‡?

เชšเชพเชฒเซ‹ เชนเชตเซ‡ เช†เชจเซ€ เชธเชพเชฅเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚ เชคเซ‡ เชถเซ‹เชงเซ€เช, เช…เชจเซ‡ เชคเซ‡ เชœ เชธเชฎเชฏเซ‡ เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€เชฎเชพเช‚ เชฌเซ€เชœเซ€ เชชเซเชฐเชคเชฟเช•เซƒเชคเชฟ เชธเซ‡เชŸ เช‰เชฎเซ‡เชฐเซ‹.

เช†เชชเชฃเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเช‚เชกเซ€เช เช›เซ€เช

เชคเซ‹ เชถเซเช‚ เชฅเชฏเซ?

เช…เชฎเซ‡ เชฌเซ‡ VM เชฎเซ‡เชณเชตเซเชฏเชพเช‚ เช›เซ‡ เช…เชจเซ‡ เชเช• เชœเชตเชพเชฌเชฆเชพเชฐ เชชเซเชฒเซ‡เชฌเซเช• เชšเชฒเชพเชตเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช เชœเซ‡เชฃเซ‡ เช…เชฎเชพเชฐเซเช‚ เช•เซเชฒเชธเซเชŸเชฐ เชธเซ‡เชŸ เช•เชฐเซเชฏเซเช‚ เช›เซ‡. เชšเชพเชฒเซ‹ เชซเชพเชˆเชฒเชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เชœเซ‹เชˆเช 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_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 เช…เชจเซ‡ เช…เชฎเชพเชฐเชพ เชจเชตเชพ เชฆเชพเช–เชฒเชพเช“เชจเซเช‚ เช…เชตเชฒเซ‹เช•เชจ เช•เชฐเซ‹:

เชŸเซ‡เชฐเชจเซเชŸเซ‚เชฒ เช•เชพเชฐเชคเซ‚เชธ เชชเชฐ เชธเชฐเชณเชคเชพเชฅเซ€ เช…เชจเซ‡ เชธเซเชตเชพเชญเชพเชตเชฟเช• เชฐเซ€เชคเซ‡ เช…เชฐเชœเซ€เช“ เชœเชฎเชพเชตเชตเซ€ (เชญเชพเช— 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.

เชŸเซ‡เชฐเชจเซเชŸเซ‚เชฒ เช•เชพเชฐเชคเซ‚เชธ เชชเชฐ เชธเชฐเชณเชคเชพเชฅเซ€ เช…เชจเซ‡ เชธเซเชตเชพเชญเชพเชตเชฟเช• เชฐเซ€เชคเซ‡ เช…เชฐเชœเซ€เช“ เชœเชฎเชพเชตเชตเซ€ (เชญเชพเช— 1)

เชนเซเชฐเซ‡!

เชชเซเชจเชƒเชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช…เชจเซ‡ เชชเซเชฐเชคเชฟเช•เซƒเชคเชฟเช“ เชธเชพเชฅเซ‡ เชชเซเชฐเชฏเซ‹เช— เช•เชฐเซ‹ เช…เชจเซ‡ เชœเซเช“ เช•เซ‡ เช•เซเชฒเชธเซเชŸเชฐ เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชฆเชฒเชพเชฏ เช›เซ‡. เชคเชฎเซ‡ เชตเชฟเชตเชฟเชง เช“เชชเชฐเซ‡เชถเชจเชฒ เชฆเซƒเชถเซเชฏเซ‹ เช…เชœเชฎเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฐเซ‹เชฒเชฟเช‚เช— เช…เชชเชกเซ‡เชŸ เช…เชฅเชตเชพ เชตเชงเชพเชฐเซ‹ memtx_memory. เชญเซ‚เชฎเชฟเช•เชพ เชคเชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ เชธเช‚เชญเชตเชฟเชค เชกเชพเช‰เชจเชŸเชพเช‡เชฎเชจเซ‡ เช˜เชŸเชพเชกเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชฆเชพเชนเชฐเชฃเชจเซ‡ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เช† เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชถเซ‡.

เชฆเซ‹เชกเชตเชพเชจเซเช‚ เชญเซ‚เชฒเชถเซ‹ เชจเชนเซ€เช‚ vagrant haltเชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ VM เชจเซ‡ เชชเซ‚เชฐเซเชฃ เช•เชฐเซ€ เชฒเซ‹ เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เชฐเซ‹เช•เชตเชพ เชฎเชพเชŸเซ‡.

เชนเซ‚เชก เชนเซ‡เช เชณ เชถเซเช‚ เช›เซ‡?

เช…เชฎเชพเชฐเชพ เชชเซเชฐเชฏเซ‹เช—เซ‹ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชœเชตเชพเชฌเชฆเชพเชฐ เชญเซ‚เชฎเชฟเช•เชพเชจเชพ เชนเซ‚เชก เชนเซ‡เช เชณ เชถเซเช‚ เชฅเชฏเซเช‚ เชคเซ‡ เชตเชฟเชถเซ‡ เชนเซเช‚ เช…เชนเซ€เช‚ เชตเชงเซ เชตเชพเชค เช•เชฐเซ€เชถ.

เชšเชพเชฒเซ‹ เชเช• เช•เชพเชฐเซเชŸเชฟเชœ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชคเชฌเช•เซเช•เชพเชตเชพเชฐ เช—เซ‹เช เชตเชตเชพ เชชเชฐ เชเช• เชจเชœเชฐ เช•เชฐเซ€เช.

เชชเซ‡เช•เซ‡เชœ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช เช…เชจเซ‡ เชฆเชพเช–เชฒเชพเช“ เชถเชฐเซ‚ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชชเซเชฐเชฅเชฎ เชคเชฎเชพเชฐเซ‡ เชชเซ‡เช•เซ‡เชœเชจเซ‡ เชธเชฐเซเชตเชฐ เชชเชฐ เชชเชนเซ‹เช‚เชšเชพเชกเชตเชพเชจเซ€ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชนเชตเซ‡ เชญเซ‚เชฎเชฟเช•เชพ RPM เช…เชจเซ‡ DEB เชชเซ‡เช•เซ‡เชœเซ‹ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡.

เช†เช—เชณ, เช…เชฎเซ‡ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชถเชฐเซ‚ เช•เชฐเซ€เช เช›เซ€เช. เช…เชนเซ€เช‚ เชฌเชงเซเช‚ เช–เซ‚เชฌ เชœ เชธเชฐเชณ เช›เซ‡: เชฆเชฐเซ‡เช• เช‰เชฆเชพเชนเชฐเชฃ เช…เชฒเช— เช›เซ‡ systemd- เชธเซ‡เชตเชพ. เชนเซเช‚ เชเช• เช‰เชฆเชพเชนเชฐเชฃ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซเช‚ เช›เซเช‚:

$ systemctl start myapp@storage-1

เช† เช†เชฆเซ‡เชถ เชฆเชพเช–เชฒเซ‹ เชถเชฐเซ‚ เช•เชฐเชถเซ‡ storage-1 เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ myapp. เชฒเซ‹เชจเซเชš เช•เชฐเซ‡เชฒ เชฆเชพเช–เชฒเซ‹ เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชœเซ‹เชถเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ ะฒ /etc/tarantool/conf.d/. เช‡เชจเซเชธเซเชŸเชจเซเชธ เชฒเซ‹เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชœเซ‹เชˆ เชถเช•เชพเชฏ เช›เซ‡ journald.

เชฏเซเชจเชฟเชŸ เชซเชพเช‡เชฒ /etc/systemd/system/[email protected] เชเช• systemd เชธเซ‡เชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‡เช•เซ‡เชœ เชธเชพเชฅเซ‡ เชตเชฟเชคเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

Ansible เชชเชพเชธเซ‡ เชชเซ‡เช•เซ‡เชœเซ‹ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เช…เชจเซ‡ เชธเชฟเชธเซเชŸเชฎd เชธเซ‡เชตเชพเช“เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชฎเซ‹เชกเซเชฏเซเชฒเซ‹ เช›เซ‡, เช…เชฎเซ‡ เช…เชนเซ€เช‚ เช•เช‚เชˆเชชเชฃ เชจเชตเซเช‚ เชถเซ‹เชงเซเชฏเซเช‚ เชจเชฅเซ€.

เช•เซเชฒเชธเซเชŸเชฐ เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เช…เชจเซ‡ เช…เชนเซ€เช‚ เชธเซŒเชฅเซ€ เชฐเชธเชชเซเชฐเชฆ เชถเชฐเซ‚เช†เชค เชฅเชพเชฏ เช›เซ‡. เชธเช‚เชฎเชค เชฅเชพเช“, เชชเซ‡เช•เซ‡เชœเซ‹ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เช…เชจเซ‡ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชตเชฟเชถเซ‡เชท เชœเชตเชพเชฌเชฆเชพเชฐ เชญเซ‚เชฎเชฟเช•เชพเชฅเซ€ เชชเชฐเซ‡เชถเชพเชจ เชฅเชตเซเช‚ เชตเชฟเชšเชฟเชคเซเชฐ เชนเชถเซ‡ systemd-เชธเซ‡เชตเชพเช“.

เชคเชฎเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชจเซ‡ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชธเซ‡เชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:

  • เชชเซเชฐเชฅเชฎ เชตเชฟเช•เชฒเซเชช: เชตเซ‡เชฌ UI เช–เซ‹เชฒเซ‹ เช…เชจเซ‡ เชฌเชŸเชจเซ‹ เชชเชฐ เช•เซเชฒเชฟเช• เช•เชฐเซ‹. เช˜เชฃเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹เชจเซ€ เชเช•-เชตเช–เชคเชจเซ€ เชถเชฐเซ‚เช†เชค เชฎเชพเชŸเซ‡, เชคเซ‡ เชเช•เชฆเชฎ เชฏเซ‹เช—เซเชฏ เช›เซ‡.
  • เชฌเซ€เชœเซ‹ เชตเชฟเช•เชฒเซเชช: เชคเชฎเซ‡ GraphQl API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เช…เชนเซ€เช‚ เชคเชฎเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช•เช‚เชˆเช• เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฒเช–เซ‹.
  • เชคเซเชฐเซ€เชœเซ‹ เชตเชฟเช•เชฒเซเชช (เชญเชพเชตเชจเชพเชฎเชพเช‚ เชฎเชœเชฌเซ‚เชค เชฎเชพเชŸเซ‡): เชธเชฐเซเชตเชฐ เชชเชฐ เชœเชพเช“, เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชเช• เช‰เชฆเชพเชนเชฐเชฃ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเซ‹ tarantoolctl connect เช…เชจเซ‡ เชฒเซเช† เชฎเซ‹เชกเซเชฏเซเชฒ เชธเชพเชฅเซ‡ เชคเชฎเชพเชฎ เชœเชฐเซ‚เชฐเซ€ เชฎเซ‡เชจเชฟเชชเซเชฏเซเชฒเซ‡เชถเชจเซเชธ เช•เชฐเซ‹ cartridge.

เช…เชฎเชพเชฐเซ€ เชถเซ‹เชงเชจเซเช‚ เชฎเซเช–เซเชฏ เช•เชพเชฐเซเชฏ เช† เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡, เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช•เชพเชฎเชจเซ‹ เชธเซŒเชฅเซ€ เชฎเซเชถเซเช•เซ‡เชฒ เชญเชพเช—.

Ansible เชคเชฎเชจเซ‡ เชคเชฎเชพเชฐเซเช‚ เชชเซ‹เชคเชพเชจเซเช‚ เชฎเซ‹เชกเซเชฏเซเชฒ เชฒเช–เชตเชพ เช…เชจเซ‡ เชญเซ‚เชฎเชฟเช•เชพเชฎเชพเช‚ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เช…เชฎเชพเชฐเซ€ เชญเซ‚เชฎเชฟเช•เชพ เช•เซเชฒเชธเซเชŸเชฐเชจเชพ เชตเชฟเชตเชฟเชง เช˜เชŸเช•เซ‹เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช† เชฎเซ‹เชกเซเชฏเซเชฒเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡.

เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡? เชคเชฎเซ‡ เช˜เซ‹เชทเชฃเชพเชคเซเชฎเช• เชฐเซ‚เชชเชฐเซ‡เช–เชพเชฎเชพเช‚ เช•เซเชฒเชธเซเชŸเชฐเชจเซ€ เช‡เชšเซเช›เชฟเชค เชธเซเชฅเชฟเชคเชฟเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเซ‹ เช›เซ‹, เช…เชจเซ‡ เชญเซ‚เชฎเชฟเช•เชพ เชฆเชฐเซ‡เช• เชฎเซ‹เชกเซเชฏเซเชฒเชจเซ‡ เชคเซ‡เชจเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชตเชฟเชญเชพเช—เชจเซ‡ เช‡เชจเชชเซเชŸ เชคเชฐเซ€เช•เซ‡ เช†เชชเซ‡ เช›เซ‡. เชฎเซ‹เชกเซเชฏเซเชฒ เช•เซเชฒเชธเซเชŸเชฐเชจเซ€ เชตเชฐเซเชคเชฎเชพเชจ เชธเซเชฅเชฟเชคเชฟ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช‡เชจเชชเซเชŸ เชธเชพเชฅเซ‡ เชธเชฐเช–เชพเชตเซ‡ เช›เซ‡. เช†เช—เชณ, เชเช• เช•เซ‹เชก เชฆเชพเช–เชฒเชพเช“เชฎเชพเช‚เชฅเซ€ เชเช•เชจเชพ เชธเซ‹เช•เซ‡เชŸ เชฆเซเชตเชพเชฐเชพ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชจเซ‡ เช‡เชšเซเช›เชฟเชค เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เชฒเชพเชตเซ‡ เช›เซ‡.

เชชเชฐเชฟเชฃเชพเชฎเซ‹

เช†เชœเซ‡ เช…เชฎเซ‡ เชœเชฃเชพเชตเซเชฏเซเช‚ เช…เชจเซ‡ เชฌเชคเชพเชตเซเชฏเซเช‚ เช•เซ‡ เชคเชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชŸเซ‡เชฐเชจเซเชŸเซ‚เชฒ เช•เชพเชฐเชŸเซเชฐเชฟเชœ เชชเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเชตเซ€ เช…เชจเซ‡ เชเช• เชธเชฐเชณ เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเซ‡เชŸ เช•เชฐเชตเซ€. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ Ansible เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹, เชเช• เชถเช•เซเชคเชฟเชถเชพเชณเซ€ เชธเชพเชงเชจ เชœเซ‡ เชตเชพเชชเชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฐเชณ เช›เซ‡ เช…เชจเซ‡ เชคเชฎเชจเซ‡ เชเช•เชธเชพเชฅเซ‡ เช˜เชฃเชพ เช‡เชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐ เชจเซ‹เชกเซเชธเชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ (เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช† เช•เซเชฒเชธเซเชŸเชฐ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช›เซ‡).

เช‰เชชเชฐ, เช…เชฎเซ‡ Ansible เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เซเชฒเชธเซเชŸเชฐ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชตเชพเชจเซ€ เช˜เชฃเซ€ เชฐเซ€เชคเซ‹เชฎเชพเช‚เชฅเซ€ เชเช• เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเซเชฏเซ‹. เชเช•เชตเชพเชฐ เชคเชฎเซ‡ เชœเชพเชฃเซ‹ เช•เซ‡ เชคเชฎเซ‡ เช†เช—เชณ เชตเชงเชตเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช›เซ‹, เชถเซ€เช–เซ‹ เชถเซเชฐเซ‡เชทเซเช  เชชเซเชฐเชฏเชพเชธเซ‹ เชชเซเชฒเซ‡เชฌเซเช• เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡. เชธเชพเชฅเซ‡ เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเซเช‚ เชคเชฎเชจเซ‡ เชตเชงเซ เช…เชจเซเช•เซ‚เชณ เชฒเชพเช—เชถเซ‡ group_vars ะธ host_vars.

เช–เซ‚เชฌ เชœ เชŸเซ‚เช‚เช• เชธเชฎเชฏเชฎเชพเช‚ เช…เชฎเซ‡ เชคเชฎเชจเซ‡ เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€, เชฌเซเชŸเชธเซเชŸเซเชฐเซ‡เชช vshard, เช“เชŸเซ‹เชฎเซ‡เชŸเชฟเช• เชซเซ‡เชฒเช“เชตเชฐ เชฎเซ‹เชกเชจเซ‡ เชฎเซ‡เชจเซ‡เชœ เช•เชฐเชตเชพ, เช…เชงเชฟเช•เซƒเชคเชคเชพเชจเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เช•เซเชฒเชธเซเชŸเชฐ เชฐเซ‚เชชเชฐเซ‡เช–เชพเชจเซ‡ เชชเซ‡เชš เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฏเชฎเซ€ เชงเซ‹เชฐเชฃเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพ (เช•เชพเชขเซ€ เชจเชพเช–เชตเซ€) เชคเซ‡ เชตเชฟเชถเซ‡ เชœเชฃเชพเชตเซ€เชถเซเช‚. เช† เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ เชชเชฐ เช…เชญเซเชฏเชพเชธ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ เช…เชจเซ‡ เช•เซเชฒเชธเซเชŸเชฐ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชฌเชฆเชฒเชตเชพเชจเซ‹ เชชเซเชฐเชฏเซ‹เช— เช•เชฐเซ‹.

เชœเซ‹ เช•เช‚เชˆเช• เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชจเชฅเซ€, เชคเซ‹ เช–เชพเชคเชฐเซ€ เช•เชฐเซ‹ เชœเชพเชฃ เช•เชฐเซ‹ เช…เชฎเชจเซ‡ เชธเชฎเชธเซเชฏเชพ เชตเชฟเชถเซ‡. เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชเชกเชชเชฅเซ€ เชคเซ‹เชกเซ€ เชจเชพเช–เซ€เชถเซเช‚!

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹