เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบงเบฑเบ”เบ–เบธ LeoFS เบ—เบตเปˆเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบ—เบตเปˆเปเบˆเบเบขเบฒเบ, เป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบฅเบนเบเบ„เป‰เบฒเบ—เบตเปˆเปƒเบŠเป‰ S3, NFS

เบญเบตเบ‡เบ•เบฒเบกเบเบฒเบ™ Opennet: LeoFS โ€” เบเบฒเบ™โ€‹เป€เบเบฑเบšโ€‹เบฎเบฑเบโ€‹เบชเบฒโ€‹เบงเบฑเบ”โ€‹เบ–เบธโ€‹เบ—เบตเปˆโ€‹เบ—เบปเบ™โ€‹เบ—เบฒเบ™โ€‹เบ•เปเปˆโ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เปเบˆเบโ€‹เบขเบฒเบโ€‹ LeoFS, เป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบฅเบนเบเบ„เป‰เบฒเบ—เบตเปˆเปƒเบŠเป‰ Amazon S3 API เปเบฅเบฐ REST-API, เปเบฅเบฐเบเบฑเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบซเบกเบ”เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ NFS. เบกเบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบงเบฑเบ”เบ–เบธเบ—เบฑเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบผเบฒเบ, เบกเบตเบเบปเบ™เป„เบเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เปƒเบ™เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ, เปเบฅเบฐเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ›เบฐเบเบญเบšเบกเบตเบเบฒเบ™เบšเบฑเบ™เบฅเบธเบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบท 99.9999999% เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบŠเป‰เปเบฒเบŠเป‰เบญเบ™เบ‚เบญเบ‡เบŠเป‰เปเบฒเบเบฑเบ™เปเบฅเบฐเบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡เบˆเบธเบ”เบ”เบฝเบงเบ‚เบญเบ‡เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบง. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ‚เบฝเบ™เปƒเบ™ Erlang.

LeoFS เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบชเบฒเบกเบญเบปเบ‡เบ›เบฐเบเบญเบš:

  • เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ LeoFS โ€” เบฎเบฑเบšโ€‹เปƒเบŠเป‰โ€‹เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบ‡เบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบžเบตเปˆเบกโ€‹, เบ”เบถเบ‡โ€‹เปเบฅเบฐโ€‹เบฅเบถเบšโ€‹เบงเบฑเบ”โ€‹เบ–เบธโ€‹เปเบฅเบฐ metadataโ€‹, เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบฎเบฑเบšโ€‹เบœเบดเบ”โ€‹เบŠเบญเบšโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบˆเปเบฒโ€‹เบฅเบญเบ‡โ€‹, เบเบฒเบ™โ€‹เบŸเบทเป‰เบ™โ€‹เบ•เบปเบงโ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบ„เบดเบงโ€‹เบเบฒเบ™โ€‹เบฎเป‰เบญเบ‡โ€‹เบ‚เปโ€‹เบ‚เบญเบ‡โ€‹เบฅเบนเบโ€‹เบ„เป‰เบฒโ€‹.
  • LeoFS Gateway โ€” เบฎเบฑเบšเปƒเบŠเป‰เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป HTTP เปเบฅเบฐเบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบเบฑเบšเบฅเบนเบเบ„เป‰เบฒเป‚เบ”เบเปƒเบŠเป‰ REST-API เบซเบผเบท S3-API, เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปเบฅเบฐเปƒเบ™เปเบœเปˆเบ™.
  • เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™ LeoFS โ€” เบ•เบดเบ”โ€‹เบ•เบฒเบกโ€‹เบเบงเบ”โ€‹เบเบฒโ€‹เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบ‡เบฒเบ™โ€‹เบ‚เบญเบ‡ LeoFS Gateway เปเบฅเบฐ LeoFS เบเบฒเบ™โ€‹เป€เบเบฑเบšโ€‹เบฎเบฑเบโ€‹เบชเบฒ nodesโ€‹, เบ•เบดเบ”โ€‹เบ•เบฒเบกโ€‹เบเบงเบ”โ€‹เบเบฒโ€‹เบชเบฐโ€‹เบ–เบฒโ€‹เบ™เบฐโ€‹เบžเบฒเบšโ€‹เบ‚เบญเบ‡โ€‹เบ‚เปเป‰โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบš checksumsโ€‹. เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบ„เบงเบฒเบกเบžเป‰เบญเบกเปƒเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบนเบ‡.

เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡ Leofs เป‚เบ”เบเปƒเบŠเป‰ ansible-playbook เปเบฅเบฐเบ—เบปเบ”เบชเบญเบš S3, NFS.

เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบฒเบกโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡ LeoFS เป‚เบ”เบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ playbooks เบขเปˆเบฒเบ‡โ€‹เป€เบ›เบฑเบ™โ€‹เบ—เบฒเบ‡โ€‹เบเบฒเบ™โ€‹, เบ—เปˆเบฒเบ™โ€‹เบˆเบฐโ€‹เบžเบปเบšโ€‹เบเบฑเบšโ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เบ•เปˆเบฒเบ‡เป†โ€‹: 1,2. เปƒเบ™เบšเบปเบ”เบ‚เบฝเบ™เบ™เบตเป‰, เบ‚เป‰เบญเบเบˆเบฐเบ‚เบฝเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

เบšเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ ansible-playbook, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ•เบดเบ”เบ•เบฑเป‰เบ‡ netcat.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบชเบดเบ™เบ„เป‰เบฒเบ„เบปเบ‡เบ„เบฑเบ‡

เบ•เบปเบงเบขเปˆเบฒเบ‡เบชเบดเบ™เบ„เป‰เบฒเบ„เบปเบ‡เบ„เบฑเบ‡ (เปƒเบ™ hosts.sample repository):

# Please check roles/common/vars/leofs_releases for available versions
[all:vars]
leofs_version=1.4.3
build_temp_path="/tmp/leofs_builder"
build_install_path="/tmp/"
build_branch="master"
source="package"

#[builder]
#172.26.9.177

# nodename of leo_manager_0 and leo_manager_1 are set at group_vars/all
[leo_manager_0]
172.26.9.176

# nodename of leo_manager_0 and leo_manager_1 are set at group_vars/all
[leo_manager_1]
172.26.9.178

[leo_storage]
172.26.9.179 leofs_module_nodename=S0@172.26.9.179
172.26.9.181 leofs_module_nodename=S0@172.26.9.181
172.26.9.182 leofs_module_nodename=S0@172.26.9.182
172.26.9.183 leofs_module_nodename=S0@172.26.9.183

[leo_gateway]
172.26.9.180 leofs_module_nodename=G0@172.26.9.180
172.26.9.184 leofs_module_nodename=G0@172.26.9.184

[leofs_nodes:children]
leo_manager_0
leo_manager_1
leo_gateway
leo_storage

เบเบฒเบ™เบเบฐเบเบฝเบกเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ

เบเบฒเบ™เบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™ Selinux. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบซเบงเบฑเบ‡เบงเปˆเบฒเบŠเบธเบกเบŠเบปเบ™เบˆเบฐเบชเป‰เบฒเบ‡เบ™เบฐเป‚เบเบšเบฒเบ Selinux เบชเปเบฒเบฅเบฑเบš LeoFS.

    - name: Install libselinux as prerequisite for SELinux Ansible module
      yum:
        name: "{{item}}"
        state: latest
      with_items:
        - libselinux-python
        - libsemanage-python

    - name: Disable SELinux at next reboot
      selinux:
        state: disabled

    - name: Set SELinux in permissive mode until the machine is rebooted
      command: setenforce 0
      ignore_errors: true
      changed_when: false

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ netcat ะธ redhat-lsb-core. netcat เบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบš leofs-adm, redhat-lsb-core เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบชเบฐเบšเบฑเบš OS เบ—เบตเปˆเบ™เบตเป‰.

    - name: Install Packages
      yum: name={{ item }} state=present
      with_items:
        - nmap-ncat
        - redhat-lsb-core

เบเบฒเบ™เบชเป‰เบฒเบ‡ leofs เบœเบนเป‰เปƒเบŠเป‰เปเบฅเบฐเป€เบžเบตเปˆเบกเบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบธเปˆเบกเบฅเปเป‰

    - name: Create user leofs
      group:
        name: leofs
        state: present

    - name: Allow 'wheel' group to have passwordless sudo
      lineinfile:
        dest: /etc/sudoers
        state: present
        regexp: '^%wheel'
        line: '%wheel ALL=(ALL) NOPASSWD: ALL'
        validate: 'visudo -cf %s'

    - name: Add the user 'leofs' to group 'wheel'
      user:
        name: leofs
        groups: wheel
        append: yes

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Erlang

    - name: Remote erlang-20.3.8.23-1.el7.x86_64.rpm install with yum
      yum: name=https://github.com/rabbitmq/erlang-rpm/releases/download/v20.3.8.23/erlang-20.3.8.23-1.el7.x86_64.rpm

เบชเบฐเบšเบฑเบšเป€เบ•เบฑเบกเบ‚เบญเบ‡ Ansible playbook เบ—เบตเปˆเบ–เบทเบเปเบเป‰เป„เบ‚เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เบ—เบตเปˆเบ™เบตเป‰: https://github.com/patsevanton/leofs_ansible

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡, เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เป€เบ›เบตเบ”เบ•เบปเบง

เบ•เปเปˆเป„เบ›เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เบฅเบฒเบเบฅเบฑเบเบญเบฑเบเบชเบญเบ™เปƒเบ™ https://github.com/leo-project/leofs_ansible เป‚เบ”เบเบšเปเปˆเบกเบต build_leofs.yml

## Install LeoFS
$ ansible-playbook -i hosts install_leofs.yml

## Config LeoFS
$ ansible-playbook -i hosts config_leofs.yml

## Start LeoFS
$ ansible-playbook -i hosts start_leofs.yml

เบเบณเบฅเบฑเบ‡เบเบงเบ”เบชเบญเบšเบชเบฐเบ–เบฒเบ™เบฐเบเบธเปˆเบกเบขเบนเปˆเปƒเบ™ Primary LeoManager

leofs-adm status

เบ›เบฐเบ–เบปเบก เปเบฅเบฐ เบกเบฑเบ”เบ—เบฐเบเบปเบกเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เปƒเบ™เบšเบฑเบ™เบ—เบถเบเบ‚เบญเบ‡ ansible-playbook

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบงเบฑเบ”เบ–เบธ LeoFS เบ—เบตเปˆเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบ—เบตเปˆเปเบˆเบเบขเบฒเบ, เป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบฅเบนเบเบ„เป‰เบฒเบ—เบตเปˆเปƒเบŠเป‰ S3, NFS

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบงเบฑเบ”เบ–เบธ LeoFS เบ—เบตเปˆเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบ—เบตเปˆเปเบˆเบเบขเบฒเบ, เป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบฅเบนเบเบ„เป‰เบฒเบ—เบตเปˆเปƒเบŠเป‰ S3, NFS

เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบˆเบฐเป€เบ›เบฑเบ™เปเบšเบšเบ™เบตเป‰

 [System Confiuration]
-----------------------------------+----------
 Item                              | Value    
-----------------------------------+----------
 Basic/Consistency level
-----------------------------------+----------
                    system version | 1.4.3
                        cluster Id | leofs_1
                             DC Id | dc_1
                    Total replicas | 2
          number of successes of R | 1
          number of successes of W | 1
          number of successes of D | 1
 number of rack-awareness replicas | 0
                         ring size | 2^128
-----------------------------------+----------
 Multi DC replication settings
-----------------------------------+----------
 [mdcr] max number of joinable DCs | 2
 [mdcr] total replicas per a DC    | 1
 [mdcr] number of successes of R   | 1
 [mdcr] number of successes of W   | 1
 [mdcr] number of successes of D   | 1
-----------------------------------+----------
 Manager RING hash
-----------------------------------+----------
                 current ring-hash | a0314afb
                previous ring-hash | a0314afb
-----------------------------------+----------

 [State of Node(s)]
-------+----------------------+--------------+---------+----------------+----------------+----------------------------
 type  |         node         |    state     | rack id |  current ring  |   prev ring    |          updated at         
-------+----------------------+--------------+---------+----------------+----------------+----------------------------
  S    | S0@172.26.9.179      | running      |         | a0314afb       | a0314afb       | 2019-12-05 10:33:47 +0000
  S    | S0@172.26.9.181      | running      |         | a0314afb       | a0314afb       | 2019-12-05 10:33:47 +0000
  S    | S0@172.26.9.182      | running      |         | a0314afb       | a0314afb       | 2019-12-05 10:33:47 +0000
  S    | S0@172.26.9.183      | attached     |         |                |                | 2019-12-05 10:33:58 +0000
  G    | G0@172.26.9.180      | running      |         | a0314afb       | a0314afb       | 2019-12-05 10:33:49 +0000
  G    | G0@172.26.9.184      | running      |         | a0314afb       | a0314afb       | 2019-12-05 10:33:49 +0000
-------+----------------------+--------------+---------+----------------+----------------+----------------------------

เบเบฒเบ™เบชเป‰เบฒเบ‡เบœเบนเป‰เปƒเบŠเป‰

เบชเป‰เบฒเบ‡เบœเบนเป‰เปƒเบŠเป‰ Leofs:

leofs-adm create-user leofs leofs

  access-key-id: 9c2615f32e81e6a1caf5
  secret-access-key: 8aaaa35c1ad78a2cbfa1a6cd49ba8aaeb3ba39eb

เบฅเบฒเบเบŠเบทเปˆเบœเบนเป‰เปƒเบŠเป‰:

leofs-adm get-users
user_id     | role_id | access_key_id          | created_at                
------------+---------+------------------------+---------------------------
_test_leofs | 9       | 05236                  | 2019-12-02 06:56:49 +0000
leofs       | 1       | 9c2615f32e81e6a1caf5   | 2019-12-02 10:43:29 +0000

เบชเป‰เบฒเบ‡ Bucket

เป„เบ”เป‰เป€เบฎเบฑเบ”เบ–เบฑเบ‡

leofs-adm add-bucket leofs 9c2615f32e81e6a1caf5
OK

เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ–เบฑเบ‡:

 leofs-adm get-buckets
cluster id   | bucket   | owner  | permissions      | created at                
-------------+----------+--------+------------------+---------------------------
leofs_1      | leofs    | leofs  | Me(full_control) | 2019-12-02 10:44:02 +0000

เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ s3cmd

เปƒเบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบก HTTP Proxy server name เบฅเบฐเบšเบธ IP เบ‚เบญเบ‡เป€เบŠเบตเบšเป€เบงเบต Gateway

s3cmd --configure 

Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.

Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
Access Key [9c2615f32e81e6a1caf5]: 
Secret Key [8aaaa35c1ad78a2cbfa1a6cd49ba8aaeb3ba39eb]: 
Default Region [US]: 

Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.
S3 Endpoint [s3.amazonaws.com]: 

Use "%(bucket)s.s3.amazonaws.com" to the target Amazon S3. "%(bucket)s" and "%(location)s" vars can be used
if the target S3 system supports dns based buckets.
DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]: leofs

Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password: 
Path to GPG program [/usr/bin/gpg]: 

When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP, and can only be proxied with Python 2.7 or newer
Use HTTPS protocol [No]: 

On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't connect to S3 directly
HTTP Proxy server name [172.26.9.180]: 
HTTP Proxy server port [8080]: 

New settings:
  Access Key: 9c2615f32e81e6a1caf5
  Secret Key: 8aaaa35c1ad78a2cbfa1a6cd49ba8aaeb3ba39eb
  Default Region: US
  S3 Endpoint: s3.amazonaws.com
  DNS-style bucket+hostname:port template for accessing a bucket: leofs
  Encryption password: 
  Path to GPG program: /usr/bin/gpg
  Use HTTPS protocol: False
  HTTP Proxy server name: 172.26.9.180
  HTTP Proxy server port: 8080

Test access with supplied credentials? [Y/n] Y
Please wait, attempting to list all buckets...
Success. Your access key and secret key worked fine :-)

Now verifying that encryption works...
Not configured. Never mind.

Save settings? [y/N] y
Configuration saved to '/home/user/.s3cfg'

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ” ERROR: S3 error: 403 (AccessDenied): Access Denied:

s3cmd put test.py s3://leofs/
upload: 'test.py' -> 's3://leofs/test.py'  [1 of 1]
 382 of 382   100% in    0s     3.40 kB/s  done
ERROR: S3 error: 403 (AccessDenied): Access Denied

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™ signature_v3 เป€เบ›เบฑเบ™ True เปƒเบ™ s2cmd config. เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบขเบนเปˆเปƒเบ™เบ™เบตเป‰ เบšเบฑเบ™เบซเบฒ.

เบ–เป‰เบฒ signature_v2 เป€เบ›เบฑเบ™ False, เบกเบฑเบ™เบˆเบฐเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

WARNING: Retrying failed request: /?delimiter=%2F (getaddrinfo() argument 2 must be integer or string)
WARNING: Waiting 3 sec...
WARNING: Retrying failed request: /?delimiter=%2F (getaddrinfo() argument 2 must be integer or string)
WARNING: Waiting 6 sec...
ERROR: Test failed: Request failed for: /?delimiter=%2F

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป‚เบซเบผเบ”

เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒ 1GB

fallocate -l 1GB 1gb

เบญเบฑเบšเป‚เบซเบผเบ”เบกเบฑเบ™เปƒเบชเปˆ Leofs

time s3cmd put 1gb s3://leofs/
real    0m19.099s
user    0m7.855s
sys 0m1.620s

เบชเบฐเบ–เบดเบ•เบด

leofs-adm du เบชเปเบฒเบฅเบฑเบš 1 node:

leofs-adm du S0@172.26.9.179
 active number of objects: 156
  total number of objects: 156
   active size of objects: 602954495
    total size of objects: 602954495
     ratio of active size: 100.0%
    last compaction start: ____-__-__ __:__:__
      last compaction end: ____-__-__ __:__:__

เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒเบšเบปเบ”เบชเบฐเบซเบผเบธเบšเปเบกเปˆเบ™เบšเปเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบ.

เบกเบฒเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเป„เบŸเบฅเปŒเบ™เบตเป‰เบขเบนเปˆเปƒเบช.
leofs-adm whereis leofs/1gb

leofs-adm whereis leofs/1gb
-------+----------------------+--------------------------------------+------------+--------------+----------------+----------------+----------------+----------------------------
 del?  |         node         |             ring address             |    size    |   checksum   |  has children  |  total chunks  |     clock      |             when            
-------+----------------------+--------------------------------------+------------+--------------+----------------+----------------+----------------+----------------------------
       | S0@172.26.9.181      | 657a9f3a3db822a7f1f5050925b26270     |    976563K |   a4634eea55 | true           |             64 | 598f2aa976a4f  | 2019-12-05 10:48:15 +0000
       | S0@172.26.9.182      | 657a9f3a3db822a7f1f5050925b26270     |    976563K |   a4634eea55 | true           |             64 | 598f2aa976a4f  | 2019-12-05 10:48:15 +0000

เป€เบ›เบตเบ”เปƒเบŠเป‰ NFS

เบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบตเบ”เปƒเบŠเป‰ NFS เบขเบนเปˆเปƒเบ™เป€เบŠเบตเบšเป€เบงเบต Leo Gateway 172.26.9.184.

เบ•เบดเบ”เบ•เบฑเป‰เบ‡ nfs-utils เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปเบฅเบฐเบฅเบนเบเบ„เป‰เบฒ

sudo yum install nfs-utils

เบญเบตเบ‡เบ•เบฒเบกเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปเบเป‰เป„เบ‚เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ /usr/local/leofs/current/leo_gateway/etc/leo_gateway.conf

protocol = nfs

เปƒเบ™เป€เบŠเบตเบšเป€เบงเบต 172.26.9.184 เปเบฅเปˆเบ™ rpcbind เปเบฅเบฐ leofs-gateway

sudo service rpcbind start
sudo service leofs-gateway restart

เปƒเบ™เป€เบŠเบตเบšเป€เบงเบตเบ—เบตเปˆ leo_manager เบเปเบฒเบฅเบฑเบ‡เปเบฅเปˆเบ™, เบชเป‰เบฒเบ‡เบ–เบฑเบ‡เบชเปเบฒเบฅเบฑเบš NFS เปเบฅเบฐเบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš NFS

leofs-adm add-bucket test 05236
leofs-adm gen-nfs-mnt-key test 05236 ip-ะฐะดั€ะตั-nfs-ะบะปะธะตะฝั‚ะฐ

เบเบณเบฅเบฑเบ‡เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš NFS

sudo mkdir /mnt/leofs
## for Linux - "sudo mount -t nfs -o nolock <host>:/<bucket>/<token> <dir>"
sudo mount -t nfs -o nolock ip-ะฐะดั€ะตั-nfs-ัะตั€ะฒะตั€ะฐ-ั‚ะฐะผ-ะณะดะต-ัƒ-ะฒะฐั-ัƒัั‚ะฐะฝะพะฒะปะตะฝ-gateway:/bucket/access_key_id/ะบะปัŽั‡-ะฟะพะปัƒั‡ะตะฝะฝั‹ะน-ะพั‚-gen-nfs-mnt-key /mnt/leofs
sudo mount -t nfs -o nolock 172.26.9.184:/test/05236/bb5034f0c740148a346ed663ca0cf5157efb439f /mnt/leofs

เป€เบšเบดเปˆเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเบ”เบดเบ”เบœเปˆเบฒเบ™ NFS client

เบžเบทเป‰เบ™เบ—เบตเปˆเบ”เบดเบชเบเปŒ, เป‚เบ”เบเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบงเปˆเบฒเปเบ•เปˆเบฅเบฐ node เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบกเบตเปเบœเปˆเบ™ 40GB (3 nodes เปเบฅเปˆเบ™, 1 node เบ—เบตเปˆเบ•เบดเบ”เบ„เบฑเบ”เบกเบฒ):

df -hP
Filesystem                                                         Size  Used Avail Use% Mounted on
172.26.9.184:/test/05236/e7298032e78749149dd83a1e366afb328811c95b   60G  3.6G   57G   6% /mnt/leofs

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ LeoFS เบเบฑเบš 6 nodes เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ.

เบชเบดเบ™เบ„เป‰เบฒเบ„เบปเบ‡เบ„เบฑเบ‡ (เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ builder):

# Please check roles/common/vars/leofs_releases for available versions
[all:vars]
leofs_version=1.4.3
build_temp_path="/tmp/leofs_builder"
build_install_path="/tmp/"
build_branch="master"
source="package"

# nodename of leo_manager_0 and leo_manager_1 are set at group_vars/all
[leo_manager_0]
172.26.9.177

# nodename of leo_manager_0 and leo_manager_1 are set at group_vars/all
[leo_manager_1]
172.26.9.176

[leo_storage]
172.26.9.178 leofs_module_nodename=S0@172.26.9.178
172.26.9.179 leofs_module_nodename=S0@172.26.9.179
172.26.9.181 leofs_module_nodename=S0@172.26.9.181
172.26.9.182 leofs_module_nodename=S0@172.26.9.182
172.26.9.183 leofs_module_nodename=S0@172.26.9.183
172.26.9.185 leofs_module_nodename=S0@172.26.9.185

[leo_gateway]
172.26.9.180 leofs_module_nodename=G0@172.26.9.180
172.26.9.184 leofs_module_nodename=G0@172.26.9.184

[leofs_nodes:children]
leo_manager_0
leo_manager_1
leo_gateway
leo_storage

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš leofs-adm เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบš

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš leofs-adm เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบš

 [System Confiuration]
-----------------------------------+----------
 Item                              | Value    
-----------------------------------+----------
 Basic/Consistency level
-----------------------------------+----------
                    system version | 1.4.3
                        cluster Id | leofs_1
                             DC Id | dc_1
                    Total replicas | 2
          number of successes of R | 1
          number of successes of W | 1
          number of successes of D | 1
 number of rack-awareness replicas | 0
                         ring size | 2^128
-----------------------------------+----------
 Multi DC replication settings
-----------------------------------+----------
 [mdcr] max number of joinable DCs | 2
 [mdcr] total replicas per a DC    | 1
 [mdcr] number of successes of R   | 1
 [mdcr] number of successes of W   | 1
 [mdcr] number of successes of D   | 1
-----------------------------------+----------
 Manager RING hash
-----------------------------------+----------
                 current ring-hash | d8ff465e
                previous ring-hash | d8ff465e
-----------------------------------+----------

 [State of Node(s)]
-------+----------------------+--------------+---------+----------------+----------------+----------------------------
 type  |         node         |    state     | rack id |  current ring  |   prev ring    |          updated at         
-------+----------------------+--------------+---------+----------------+----------------+----------------------------
  S    | S0@172.26.9.178      | running      |         | d8ff465e       | d8ff465e       | 2019-12-06 05:18:29 +0000
  S    | S0@172.26.9.179      | running      |         | d8ff465e       | d8ff465e       | 2019-12-06 05:18:29 +0000
  S    | S0@172.26.9.181      | running      |         | d8ff465e       | d8ff465e       | 2019-12-06 05:18:30 +0000
  S    | S0@172.26.9.182      | running      |         | d8ff465e       | d8ff465e       | 2019-12-06 05:18:29 +0000
  S    | S0@172.26.9.183      | running      |         | d8ff465e       | d8ff465e       | 2019-12-06 05:18:29 +0000
  S    | S0@172.26.9.185      | running      |         | d8ff465e       | d8ff465e       | 2019-12-06 05:18:29 +0000
  G    | G0@172.26.9.180      | running      |         | d8ff465e       | d8ff465e       | 2019-12-06 05:18:31 +0000
  G    | G0@172.26.9.184      | running      |         | d8ff465e       | d8ff465e       | 2019-12-06 05:18:31 +0000
-------+----------------------+--------------+---------+----------------+----------------+----------------------------

เบžเบทเป‰เบ™เบ—เบตเปˆเบ”เบดเบชเบเปŒ, เป‚เบ”เบเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบงเปˆเบฒเปเบ•เปˆเบฅเบฐ node เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบกเบตเปเบœเปˆเบ™ 40GB (6 nodes เปเบฅเปˆเบ™):

df -hP
Filesystem                                                         Size  Used Avail Use% Mounted on
172.26.9.184:/test/05236/e7298032e78749149dd83a1e366afb328811c95b  120G  3.6G  117G   3% /mnt/leofs

เบ–เป‰เบฒ 5 nodes เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰

[leo_storage]
172.26.9.178 leofs_module_nodename=S0@172.26.9.178
172.26.9.179 leofs_module_nodename=S1@172.26.9.179
172.26.9.181 leofs_module_nodename=S2@172.26.9.181
172.26.9.182 leofs_module_nodename=S3@172.26.9.182
172.26.9.183 leofs_module_nodename=S4@172.26.9.183

df -hP
172.26.9.184:/test/05236/e7298032e78749149dd83a1e366afb328811c95b  100G  3.0G   97G   3% /mnt/leofs

เบšเบฑเบ™เบ—เบถเบ

เบšเบฑเบ™เบ—เบถเบเปเบกเปˆเบ™เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต /usr/local/leofs/current/*/log

เบŠเปˆเบญเบ‡ Telegram: SDS เปเบฅเบฐ Cluster FS

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เบŠเบทเป‰เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ DDoS, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ VPS VDS ๐Ÿ”ฅ เบŠเบทเป‰เป€เบงเบฑเบšเป„เบŠเบ—เปŒเป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบ”เป‰เบงเบเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ DDoS, เป€เบŠเบตเบšเป€เบงเบต VPS VDS | ProHoster