Vastavalt : — hajutatud tõrkeajaline objektide salvestus , mis on ühilduv Amazon S3 API ja REST-API kasutavate klientidega ning toetab NFS-serveri režiimi. On optimeeritud nii väikeste kui ka väga suurte objektide salvestamiseks, sisaldab sisseehitatud puhversüsteemi ning võimaldab salvestuste replikatsiooni andmekeskuste vahel. Projekti eesmärgiks on saavutada 99.9999999% usaldusväärsus, kasutades üleliigset koopiate replikatsiooni ja vältides üksikute tõrke punktide olemasolu. Projekti kood on kirjutatud Erlangi keeles.
LeoFS koosneb kolmest komponendist:
- — teenindab objektide ja metainformatsiooni lisamise, taastamise ja eemaldamise operatsioone, vastutab replikatsiooni, taastumise ja klientide päringute järjekorra täitmise eest.
- — teenindab HTTP-päringuid ja suunab vastused klientidele REST-API või S3-API kasutades, tagab kõige nõutumate andmete vahemälu võrkmälu ja ketta peal.
- — jälgib LeoFS Gateway ja LeoFS Storage sõlmede tööd, jälgib sõlmede olekut ja kontrollib kontrollsummasid. Tagab andmete terviklikkuse ja kõrge salvestamise kättesaadavuse.
Selles postituses seadistame Leofs Ansible playbook'i abil ja testime S3, NFS.
Kui proovite installida LeoFS ametlike playbook'ide abil, siis peate kokku puutuma erinevate vigadega: ,. Selles postituses räägin, mida on vaja nende vigade vältimiseks teha.
Kohas, kus käitate Ansible playbook'i, tuleb installida netcat.
Inventari näide
Inventari näide (hoidlas hosts.sample):
# 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_storageServerite ettevalmistamine
Selinuxi keelamine. Loodan, et kogukond loob Selinuxi poliitikad LeoFS jaoks.
- 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
Installeerimine netcat ja redhat-lsb-core. netcat on vajalik leofs-adm, redhat-lsb-core on vajalik OS-i versiooni määramiseks .
- name: Install Packages
yum: name={{ item }} state=present
with_items:
- nmap-ncat
- redhat-lsb-coreKasutaja leofs loomine ja selle lisamine gruppi wheel
- name: Looja kasutaja leofs
group:
name: leofs
state: present
- name: Luba 'wheel' grupil paroolita sudo
lineinfile:
dest: /etc/sudoers
state: present
regexp: '^%wheel'
line: '%wheel ALL=(ALL) NOPASSWD: ALL'
validate: 'visudo -cf %s'
- name: Lisa kasutaja 'leofs' gruppi 'wheel'
user:
name: leofs
groups: wheel
append: yesErlangi installimine
- name: Kaug-erlange-20.3.8.23-1.el7.x86_64.rpm installimine yum-i kaudu
yum: name=https://github.com/rabbitmq/erlang-rpm/releases/download/v20.3.8.23/erlang-20.3.8.23-1.el7.x86_64.rpm
Täieliku versiooni parandatud ansible playbookist leiate siit:
Installimine, konfigureerimine, käivitamine
Jätkame, nagu on kirjutatud ilma 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.ymlKontrollime klastrite staatust Primary LeoManageris
leofs-adm statusPrimary ja Secondary saab näha ansible-playbooki logides


Väljund on enam-vähem selline
[Süsteemi seadistus]
-----------------------------------+----------
Element | Väärtus
-----------------------------------+----------
Põhi/Ühtsuse tase
-----------------------------------+----------
süsteemi versioon | 1.4.3
klastrite ID | leofs_1
DC ID | dc_1
Kokku koopiad | 2
R-i õnnestumiste arv | 1
W-i õnnestumiste arv | 1
D-i õnnestumiste arv | 1
rack-teadlikkuse koopiate arv | 0
rõngas suurus | 2^128
-----------------------------------+----------
Multi DC replikatsiooni seaded
-----------------------------------+----------
[mdcr] maksimaalne liituvate DC-de arv | 2
[mdcr] kokku koopiad ühe DC kohta | 1
[mdcr] R-i õnnestumiste arv | 1
[mdcr] W-i õnnestumiste arv | 1
[mdcr] D-i õnnestumiste arv | 1
-----------------------------------+----------
Halda RING hash
-----------------------------------+----------
praegune rõngashash | a0314afb
eelmine rõngashash | a0314afb
-----------------------------------+----------
[Sõlme(de) olek]
-------+----------------------+--------------+---------+----------------+----------------+----------------------------
tüüp | sõlme | olek | rack id | praegune rõngas | eelmine rõngas | uuendatud kell |
-------+----------------------+--------------+---------+----------------+----------------+----------------------------
S | S0@172.26.9.179 | töötab | | a0314afb | a0314afb | 2019-12-05 10:33:47 +0000
S | S0@172.26.9.181 | töötab | | a0314afb | a0314afb | 2019-12-05 10:33:47 +0000
S | S0@172.26.9.182 | töötab | | a0314afb | a0314afb | 2019-12-05 10:33:47 +0000
S | S0@172.26.9.183 | ühendatud | | | | 2019-12-05 10:33:58 +0000
G | G0@172.26.9.180 | töötab | | a0314afb | a0314afb | 2019-12-05 10:33:49 +0000
G | G0@172.26.9.184 | töötab | | a0314afb | a0314afb | 2019-12-05 10:33:49 +0000
-------+----------------------+--------------+---------+----------------+----------------+----------------------------Loome kasutajat
Loome kasutajat leofs:
leofs-adm create-user leofs leofs
access-key-id: 9c2615f32e81e6a1caf5
secret-access-key: 8aaaa35c1ad78a2cbfa1a6cd49ba8aaeb3ba39ebKasutajate loend:
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 +0000Loome Bucket
Bucket on tehtud
leofs-adm add-bucket leofs 9c2615f32e81e6a1caf5
OKBucketite loend:
leofs-adm get-buckets
cluster id | bucket | owner | permissions | created at
-------------+----------+--------+------------------+---------------------------
leofs_1 | leofs | leofs | Me(full_control) | 2019-12-02 10:44:02 +0000s3cmd konfigureerimine
Väljal HTTP Proxy serveri nimi märgi Gateway serveri IP
s3cmd --configure
Sisesta uued väärtused või aktsepteeri vaikimisi sulgudes, vajutades Enter.
Konsulteeri kasutusjuhendiga, et saada üksikasjalik kirjeldus kõigist valikutest.
Access key ja Secret key on sinu tuvastajad Amazon S3 jaoks. Jäta need tühjaks, et kasutada keskkonnamuutujaid.
Access Key [9c2615f32e81e6a1caf5]:
Secret Key [8aaaa35c1ad78a2cbfa1a6cd49ba8aaeb3ba39eb]:
Default Region [US]:
Kasutage S3 lõpp-punkti "s3.amazonaws.com" ja ärge muuda seda sihtaadressiks Amazon S3-le.
S3 Endpoint [s3.amazonaws.com]:
Kasutage sihtaadressiks "%(bucket)s.s3.amazonaws.com". Muutujaid "%(bucket)s" ja "%(location)s" saab kasutada,
kui sihitud S3 süsteem toetab DNS-põhiseid bakete.
DNS-stiilis baketi + hostinimi:port mall baketi juurde pääsemiseks [%(bucket)s.s3.amazonaws.com]: leofs
Krüptimise paroolit kasutatakse teie failide kaitsmiseks lugemise eest
volitamata isikute poolt S3-le edastamise ajal.
Krüptimise parool:
GPG programmi tee [/usr/bin/gpg]:
Kasutades turvalist HTTPS protokolli, on kogu suhtlus Amazon S3 serveritega
kaitstud kolmandate osapoolte pealtkuulamise eest. See meetod on
kiirem kui tavaline HTTP ja võib olla proksitud ainult Python 2.7 või uuema versiooniga.
Kas kasutada HTTPS protokolli [Ei]:
Mõnedes võrkudes peab kogu internetiühendus minema läbi HTTP proksi.
Proovi seda siin seadistada, kui sa ei saa S3-le otse ühendust luua.
HTTP Proxy serveri nimi [172.26.9.180]:
HTTP Proxy serveri port [8080]:
Uued seaded:
Access Key: 9c2615f32e81e6a1caf5
Secret Key: 8aaaa35c1ad78a2cbfa1a6cd49ba8aaeb3ba39eb
Default Region: US
S3 Endpoint: s3.amazonaws.com
DNS-stiilis baketi + hostinimi:port mall baketi juurde pääsemiseks: leofs
Krüptimise parool:
GPG programmi tee: /usr/bin/gpg
Kas kasutada HTTPS protokolli: False
HTTP Proxy serveri nimi: 172.26.9.180
HTTP Proxy serveri port: 8080
Testi juurdepääsuga antud mandaadiga? [Y/n] Y
Palun oota, proovin loetleda kõiki baketeid...
Edu. Sinu juurdepääsuvõti ja salajane võti töötasid hästi :-)
Nüüd kontrollin, kas krüptimine töötab...
Ei ole seadistatud. Ärge muretsege.
Salvesta seaded? [y/N] y
Seaded on salvestatud faili '/home/user/.s3cfg'Kui teil tekib viga 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 teostatud
ERROR: S3 error: 403 (AccessDenied): Access DeniedSiis tuleb s3cmd konfigureerimisse lisada signature_v2 True. Üksikasjad on selles .
Kui signature_v2 on False, siis tekib selline viga:
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=%2FLaadimise testimine
Loo fail 1GB
fallocate -l 1GB 1gbLaadime selle Leofs'i
time s3cmd put 1gb s3://leofs/
real 0m19.099s
user 0m7.855s
sys 0m1.620sStatistika
leofs-adm du ühe sõlme jaoks:
leofs-adm du S0@172.26.9.179
aktiivsete objektide arv: 156
objektide koguarv: 156
aktiivsete objektide suurus: 602954495
objektide kogus: 602954495
aktiivse suuruse suhe: 100.0%
viimane kompaktimise algus: ____-__-__ __:__:__
viimane kompaktimise lõpp: ____-__-__ __:__:__Näeme, et väljund ei ole eriti informatiivne.
Vaadake, kus see fail asub.
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 +0000Aktiveerime NFS
Aktiveerime NFS serveris Leo Gateway 172.26.9.184.
Serveris ja kliendis paigaldame nfs-utils
sudo yum install nfs-utilsJuhendi kohaselt muudame konfiguratsioonifaili /usr/local/leofs/current/leo_gateway/etc/leo_gateway.conf
protocol = nfsServeris 172.26.9.184 käivitame rpcbind ja leofs-gateway
sudo service rpcbind start
sudo service leofs-gateway restartServeris, kus käitab leo_manager, loome bucket'i NFS jaoks ja genereerime võtme NFS-iga ühendamiseks
leofs-adm add-bucket test 05236
leofs-adm gen-nfs-mnt-key test 05236 ip-aadress-nfs-kliendiÜhendamine NFS-iga
sudo mkdir /mnt/leofs
## Linux jaoks - "sudo mount -t nfs -o nolock :// "
sudo mount -t nfs -o nolock nfs-serveri-ip-aadress-kus-te-olete-gateway-sätte-teinud: /bucket/access_key_id/ ключ-полученный-от-gen-nfs-mnt-key /mnt/leofs
sudo mount -t nfs -o nolock 172.26.9.184:/test/05236/bb5034f0c740148a346ed663ca0cf5157efb439f /mnt/leofsVaata kettaruumi NFS kliendi kaudu
Kettaruumi arvestades, et igal storage nodil on 40GB ketas (3 nodi töötab, 1 nod attached):
df -hP
Failisüsteem Suurus Kasutatud Vaba Kasutada% Mountitud
172.26.9.184:/test/05236/e7298032e78749149dd83a1e366afb328811c95b 60G 3.6G 57G 6% /mnt/leofsLeoFS paigaldamine 6 storage nodiga.
Inventuur (ilma builderita):
# 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_storageleofs-adm oleku väljund
leofs-adm oleku väljund
[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
-------+----------------------+--------------+---------+----------------+----------------+----------------------------Salvestusruum, arvestades, et iga salvestuse sõlme on 40 GB disk (6 sõlme töötab):
df -hP
Filesystem Size Used Avail Use% Mounted on
172.26.9.184:/test/05236/e7298032e78749149dd83a1e366afb328811c95b 120G 3.6G 117G 3% /mnt/leofsKui kasutatakse 5 salvestussõlme
[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.183df -hP
172.26.9.184:/test/05236/e7298032e78749149dd83a1e366afb328811c95b 100G 3.0G 97G 3% /mnt/leofsLogid
Logid asuvad kaustades /usr/local/leofs/current/*/log
Telegrammi kanal:
Allikas: habr.com
