Riak Cloud Storage. Μέρος 1: Ρύθμιση του Riak KV

Riak CS (Cloud Storage) – εύκολο στη χρήση λογισμικό για την οργάνωση της αποθήκευσης αντικειμένων, που τρέχει πάνω από το Riak KV. Το Riak (KV) είναι μια κατανεμημένη βάση δεδομένων κλειδιού-τιμής NoSQL. Το Riak CS έχει σχεδιαστεί για να παρέχει απλότητα, διαθεσιμότητα, διανομή αποθήκευσης cloud οποιασδήποτε κλίμακας και μπορεί να χρησιμοποιηθεί για τη δημιουργία αρχιτεκτονικών cloud - τόσο δημόσιων όσο και ιδιωτικών - ή ως αποθήκευση υποδομής για εφαρμογές και υπηρεσίες υψηλής φόρτωσης. Το Riak CS API είναι συμβατό με το Amazon S3 και υποστηρίζει τη δυνατότητα λήψης αναφορών για διάφορες καταστάσεις.

Riak Cloud Storage. Μέρος 1: Ρύθμιση του Riak KV
Αυτό το άρθρο είναι μια δωρεάν μετάφραση του επίσημου εγχειριδίου για την έκδοση 2.1.1 του συστήματος Riak CS

Στο σύστημα αποθήκευσης Riak CS, τρία στοιχεία λειτουργούν σε συνδυασμό μεταξύ τους, πράγμα που σημαίνει ότι κάθε στοιχείο πρέπει να ρυθμιστεί για να λειτουργεί με τα άλλα στοιχεία:

  • Riak (KV) – ένα σύστημα βάσης δεδομένων που λειτουργεί ως τελικό σύστημα.
  • Riak CS - Ένα επίπεδο αποθήκευσης cloud πάνω από το Riak που παρέχει δυνατότητες αποθήκευσης και API, αποθηκεύει αρχεία και μεταδεδομένα στο Riak και στη συνέχεια τα διανέμει στους τελικούς χρήστες.
  • Στήριγμα - Διαχειρίζεται ερωτήματα που αφορούν παγκόσμιες μοναδικές οντότητες, όπως κουβάδες και χρήστες στην παρουσία του Riak. Για παράδειγμα, δημιουργία χρηστών, δημιουργία ή διαγραφή κάδου.

Επιπλέον, μπορείτε επίσης να διαμορφώσετε τον πελάτη S3 για χρήση σε μηνύματα με το σύστημα Riak CS.

Θα πρέπει να προγραμματίσετε να έχετε έναν κόμβο Riak για κάθε κόμβο Riak CS στο σύστημά σας. Οι κόμβοι Riak και Riak CS μπορούν να εκτελεστούν σε διαφορετικές φυσικές μηχανές, αλλά στις περισσότερες περιπτώσεις είναι προτιμότερο να εκτελείται ένας κόμβος Riak και ένας κόμβος Riak CS στην ίδια φυσική μηχανή. Αν υποθέσουμε ότι ένα φυσικό μηχάνημα έχει αρκετή ισχύ για να ικανοποιήσει τις ανάγκες και των δύο κόμβων Riak και Riak CS, θα δείτε γενικά καλύτερη απόδοση λόγω μειωμένης καθυστέρησης δικτύου.

Εάν το σύστημά σας αποτελείται από πολλούς κόμβους, η διαμόρφωση αφορά κυρίως τη ρύθμιση της επικοινωνίας μεταξύ των στοιχείων. Άλλες ρυθμίσεις, όπως το πού θα αποθηκευτούν τα αρχεία καταγραφής, έχουν προεπιλεγμένες τιμές και πρέπει να αλλάξουν μόνο εάν θέλετε να χρησιμοποιήσετε μη τυπικές τιμές.

Ρύθμιση στοιχείων συστήματος. Ρύθμιση του Riak KV για CS

Δεδομένου ότι το Riak CS είναι μια εφαρμογή χτισμένη πάνω από το Riak, είναι πολύ σημαντικό να δίνετε προσοχή στη διαμόρφωση του Riak όταν εκτελείτε το Riak CS. Αυτό το έγγραφο είναι ταυτόχρονα ένας οδηγός διαμόρφωσης του Riak και ένα έγγραφο αναφοράς που περιγράφει σημαντικές παραμέτρους διαμόρφωσης.

Πριν από τη ρύθμιση, βεβαιωθείτε ότι το Riak KV και το Riak CS είναι εγκατεστημένα σε κάθε κόμβο στο σύμπλεγμα σας. Το Stanchion, από την άλλη πλευρά, θα πρέπει να εγκατασταθεί μόνο σε έναν κόμβο σε ολόκληρο το σύμπλεγμα.

Riak Cloud Storage. Μέρος 1: Ρύθμιση του Riak KV

Backends για το Riak CS

Το προεπιλεγμένο backend που χρησιμοποιείται από το Riak είναι το Bitcask, αλλά το πακέτο Riak CS περιλαμβάνει ένα ειδικό backend που πρέπει να χρησιμοποιηθεί από το σύμπλεγμα Riak που αποτελεί μέρος του συστήματος Riak CS. Η κανονική έκδοση έχει το τυπικό Multi backend που συνοδεύει το Riak.

Οι ίδιοι κάδοι Riak που χρησιμοποιούνται μέσα στο Riak CS χρησιμοποιούν δευτερεύοντα ευρετήρια, τα οποία τώρα απαιτούν ένα backend LevelDB. Άλλα μέρη του συστήματος Riak CS μπορούν να επωφεληθούν από τη χρήση του backend Bticask. Η χρήση ενός δείγματος Multi backend περιλαμβάνεται στο Riak CS για να εκμεταλλευτείτε και τα δύο αυτά backend για να επιτύχετε τον καλύτερο συνδυασμό απόδοσης και λειτουργικότητας. Η επόμενη ενότητα περιγράφει πώς να ρυθμίσετε σωστά το Riak ώστε να χρησιμοποιεί αυτό το Multi-backend.

Backend είναι αυτό που θα χρησιμοποιήσει η Riak για την αποθήκευση δεδομένων. Το Riak KV έχει πολλά backend στο οπλοστάσιό του: Bitcask, LevelDB, Memory και Multi.

Επιπλέον, το σύστημα υπολογισμού αποθήκευσης χρησιμοποιεί το Riak MapReduse για τη συγκέντρωση αρχείων σε κουβάδες. Αυτό σημαίνει ότι πρέπει να πείτε σε όλους τους κόμβους Riak πού να αναζητήσουν έτοιμα αρχεία Riak CS πριν από τον υπολογισμό της αποθήκευσης.

Αρκετές άλλες παράμετροι πρέπει να αλλάξουν για να διαμορφωθεί ο κόμβος Riak ως μέρος του συστήματος Riak CS, όπως η διεύθυνση IP και η διεύθυνση IP και η θύρα για ανταλλαγή μηνυμάτων μέσω των buffers πρωτοκόλλου. Άλλες ρυθμίσεις μπορούν να αλλάξουν εάν είναι απαραίτητο. Οι ακόλουθες ενότητες περιγράφουν τον τρόπο διαμόρφωσης ενός κόμβου Riak ώστε να λειτουργεί ως μέρος του συστήματος Riak CS.

Ρύθμιση του Riak backend

Αρχικά, επεξεργάζονται τα αρχεία διαμόρφωσης riak.conf ή advanced.config/app.config. Αυτά τα αρχεία μπορούν να βρίσκονται στους καταλόγους /etc/riak ή /opt/riak/etc. Από προεπιλογή, το Riak χρησιμοποιεί το Bitcask backend. Το πρώτο πράγμα που πρέπει να κάνουμε είναι να αλλάξουμε το αρχείο ρυθμίσεων αφαιρώντας την ακόλουθη γραμμή:

RIAK.CONF

## Delete this line:
storage_backend = bitcask

ADVANCED.CONFIG

{riak_kv,
 [ %% Delete this line: 
{storage_backend, riak_kv_bitcask_backend},
 ]}

APP.CONFIG

{riak_kv, 
  [ %% Delete this line:
    {storage_backend, riak_kv_bitcask_backend},
]}

Στη συνέχεια, πρέπει να δείξουμε την ανάγκη για μονάδες RiakCS για το Riak και να δώσουμε εντολή στη Riak να χρησιμοποιήσει το διαμορφωμένο backend που παρέχει το Riak CS. Πρέπει να χρησιμοποιήσουμε το αρχείο advanced.config ή app.config για αυτό και να προσθέσουμε τις ακόλουθες επιλογές:

ADVANCED.CONFIG

{eleveldb, [
    {total_leveldb_mem_percent, 30}
    ]},
{riak_kv, [
    %% Other configs
    {add_paths, ["/usr/lib/riak-cs/lib/riak_cs-2.1.1/ebin"]},
    {storage_backend, riak_cs_kv_multi_backend},
    {multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]},
    {multi_backend_default, be_default},
    {multi_backend, [
        {be_default, riak_kv_eleveldb_backend, [
            {data_root, "/var/lib/riak/leveldb"}
        ]},
        {be_blocks, riak_kv_bitcask_backend, [
            {data_root, "/var/lib/riak/bitcask"}
        ]}
    ]},
    %% Other configs
]}

APP.CONFIG

{eleveldb, [
    {total_leveldb_mem_percent, 30}
    ]},
{riak_kv, [
    %% Other configs
    {add_paths, ["/usr/lib/riak-cs/lib/riak_cs-2.1.1/ebin"]},
    {storage_backend, riak_cs_kv_multi_backend},
    {multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]},
    {multi_backend_default, be_default},
    {multi_backend, [
        {be_default, riak_kv_eleveldb_backend, [
            {data_root, "/var/lib/riak/leveldb"}
        ]},
        {be_blocks, riak_kv_bitcask_backend, [
            {data_root, "/var/lib/riak/bitcask"}
        ]}
    ]},
    %% Other configs
]}

Είναι πολύ σημαντικό να σημειωθεί ότι πολλές από αυτές τις τιμές θα εξαρτώνται από παραλλαγές καταλόγου που είναι συγκεκριμένες για το λειτουργικό σας σύστημα, επομένως ακολουθήστε τις οδηγίες ανάλογα. Για παράδειγμα, η επιλογή add_paths προϋποθέτει ότι το Riak CS είναι εγκατεστημένο στο /usr/lib/riak-cs, ενώ οι επιλογές data_root υποθέτουν ότι το Riak είναι εγκατεστημένο στο /var/lib. (Σημείωση: Στην περίπτωσή μου ήταν add_paths - /usr/lib64/riak-cs/).

Αυτή η διαμόρφωση προϋποθέτει ότι το Riak CS είναι εγκατεστημένο στο ίδιο μηχάνημα με το Riak. Εάν όχι, τότε το πακέτο πρέπει να αντιγραφεί σε ξεχωριστό κεντρικό υπολογιστή.

Ρύθμιση δημιουργίας αδελφών

Τώρα, πρέπει να ορίσουμε την παράμετρο allow_mult σε true. Μπορούμε να προσθέσουμε μια γραμμή στο αρχείο διαμόρφωσης riak.conf ή μια ενότητα riak_core στο advanced.config ή στο app.config.

RIAK.CONF

buckets.default.allow_mult = true

ADVANCED.CONFIG

{riak_core, [
    %% Other configs
    {default_bucket_props, [{allow_mult, true}]},
    %% Other configs
]}

APP.CONFIG

{riak_core, [
    %% Other configs
    {default_bucket_props, [{allow_mult, true}]},
    %% Other configs
]}

Αυτό θα επιτρέψει στον Riak να δημιουργήσει αδέρφια που είναι απαραίτητα για τη λειτουργία του Riak CS. Εάν συνδεθείτε στο Riak CS χρησιμοποιώντας τη βιβλιοθήκη πελάτη, μην ανησυχείτε: δεν θα χρειαστεί να επιλύσετε διενέξεις, καθώς όλες οι λειτουργίες του Riak CS είναι αυστηρά συνεπείς όπως ορίζονται.

Αμφιθαλής αδελφός είναι ένας τρόπος αποθήκευσης πολλών αντικειμένων σε ένα κλειδί έτσι ώστε το αντικείμενο να έχει διαφορετικές τιμές σε διαφορετικούς κόμβους.

Σημείωση: allow_mult
Για κάθε κόμβο Riak που υποστηρίζει επίσης το Riak CS, το allow_mult έχει οριστεί σε true ανά πάσα στιγμή. Το Riak CS θα επαναφέρει την εκκίνηση εάν η τιμή είναι ψευδής.

Ρύθμιση ονόματος κεντρικού υπολογιστή και διεύθυνσης IP

Κάθε κόμβος Riak έχει ένα όνομα, το οποίο μπορεί να καθοριστεί στην επιλογή nodename στο riak.conf. Εάν χρησιμοποιείτε το αρχείο διαμόρφωσης app.config, πρέπει να δημιουργήσετε ένα αρχείο που ονομάζεται vm.args στον ίδιο κατάλογο με το app.config και να καθορίσετε το όνομα του κεντρικού υπολογιστή χρησιμοποιώντας τη σημαία -name. Συνιστούμε να καθορίσετε ονόματα κόμβων στη μορφή @. Έτσι, εάν έχετε τρεις κόμβους που εκτελούνται σε έναν κεντρικό υπολογιστή 100.0.0.1, μπορείτε να τους καλέσετε [προστασία μέσω email], [προστασία μέσω email]Και [προστασία μέσω email] ή μπορείτε να δώσετε πιο συγκεκριμένα ονόματα, όπως π.χ [προστασία μέσω email], [προστασία μέσω email] και ούτω καθεξής. Το παρακάτω παράδειγμα δείχνει την αλλαγή του ονόματος κεντρικού υπολογιστή σε [προστασία μέσω email], το οποίο θα εκτελείται σε localhost.

RIAK.CONF

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

Πρέπει να ονομάσετε όλους τους κόμβους πριν τους ξεκινήσετε και συμμετάσχετε στο σύμπλεγμα.

Δοκιμή εγκατάστασης

Τώρα που έχουν ολοκληρωθεί όλες οι απαραίτητες ρυθμίσεις κόμβου, μπορούμε να προσπαθήσουμε να εκκινήσουμε το Riak:

SHELL

 riak start 

Σημείωση Η απάντηση στην περίπτωσή μου:

Riak Cloud Storage. Μέρος 1: Ρύθμιση του Riak KV

Εδώ πρέπει να περιμένετε λίγο. Στη συνέχεια, μπορείτε να ξεκινήσετε τη δοκιμή του κόμβου που εκτελείται.

SHELL

 riak ping

Εάν η απόκριση είναι πονγκ, τότε το Riak τρέχει· εάν η απόκριση είναι ότι ο Κόμβος δεν ανταποκρίνεται σε ping, τότε κάτι πήγε στραβά.

Σημείωση Η απάντηση στην περίπτωσή μου:

Riak Cloud Storage. Μέρος 1: Ρύθμιση του Riak KV

Εάν ο κόμβος δεν ξεκίνησε σωστά, κοιτάξτε το αρχείο καταγραφής erlang.log.1 στον κατάλογο /log του κόμβου εάν το πρόβλημα μπορεί να εντοπιστεί. Ένα από τα πιο συνηθισμένα σφάλματα είναι το invalid_storage_backend. Κάτι που υποδεικνύει ότι η διαδρομή προς τη βιβλιοθήκη Riak CS στο advanced.config ή στο app.config είναι εσφαλμένη (ή το Riak CS δεν είναι εγκατεστημένο στον διακομιστή). Παρά αυτό το σφάλμα, βεβαιωθείτε ότι δεν έχετε αλλάξει από riak_cs_kv_multi_backend σε riak_kv_multi_backend.

Ρύθμιση παραμέτρων του Riak για χρήση buffer πρωτοκόλλου

Οι ρυθμίσεις buffer πρωτοκόλλου Riak βρίσκονται στο riak.conf ή στην ενότητα riak_api στα αρχεία advanced.config ή app.config, τα οποία βρίσκονται στον κατάλογο /etc/riak/. Από προεπιλογή, ο κεντρικός υπολογιστής έχει διεύθυνση IP 127.0.0.1 και θύρα 8087. Θα χρειαστεί να τα αλλάξετε εάν σκοπεύετε να εκτελέσετε το Riak και το Riak CS σε μη τοπικό περιβάλλον. Αντικαταστήστε το 127.0.0.1 με τη διεύθυνση IP του κεντρικού υπολογιστή Riak και τη θύρα 8087 με μια κατάλληλη.

RIAK.CONF

 listener.protobuf.internal = 10.0.2.10:10001

ΠΡΟΧΩΡΗΜΕΝΟ.ΣΥΝΔ

{riak_api, [
    %% Other configs
    {pb, ["10.0.2.10", 10001]},
    %% Other configs
]}

APP.CONFIG

riak_api, [
    %% Other configs
    {pb, ["10.0.2.10", 10001]},
    %% Other configs
]}

Σημείωση:Η τιμή της παραμέτρου listener.protobuf.internal στο αρχείο riak.conf (ή η τιμή της παραμέτρου pb στο advanced.conf/app.config) πρέπει να ταιριάζει με τις τιμές για το riak_host στο Riak CS riak-cs.config και Stanchion stanchion.conf (ή riak_host αντίστοιχα σε προηγμένα αρχεία .config/app.config).

Σημείωση σχετικά με τον αριθμό θύρας
Ενδέχεται να απαιτείται διαφορετικός αριθμός θύρας εάν η θύρα έρχεται σε διένεξη με τις θύρες που χρησιμοποιούνται από άλλη εφαρμογή ή εάν χρησιμοποιείτε εξισορρόπηση φορτίου ή διακομιστή μεσολάβησης.

Συνιστάται επίσης στους χρήστες να διασφαλίζουν ότι το μέγεθος του Riak protobuf.backlog (ή στα αρχεία advanced.config/app.config είναι pb_backlog) είναι ίσο ή μεγαλύτερο από το pool.request.size που καθορίζεται για το Riak CS στο riak-cs. config (ή request_pool_size σε αρχεία advanced.config/ app.conf).

Εάν η τιμή του pool.request.size στο Riak CS έχει αλλάξει, τότε η τιμή του protobuf.backlog πρέπει επίσης να ενημερωθεί στο Riak.

Άλλες ρυθμίσεις Riak

Τα αρχεία riak.conf και advanced.config περιλαμβάνουν άλλες ρυθμίσεις που διαμορφώνουν τη δημιουργία αρχείων καταγραφής και το πού αποθηκεύονται. Αυτές οι ρυθμίσεις έχουν προεπιλεγμένες τιμές και θα πρέπει να λειτουργούν στις περισσότερες περιπτώσεις. Για περισσότερες πληροφορίες, συνιστούμε να διαβάσετε την τεκμηρίωσή μας σχετικά με τα αρχεία διαμόρφωσης.

Ρύθμιση διεύθυνσης IP για το Riak

Όταν ρυθμίζετε μια διεύθυνση IP για το Riak, πρέπει να είστε βέβαιοι ότι οι κόμβοι Riak έχουν μια μοναδική διεύθυνση IP, είτε εργάζεστε με έναν μόνο κόμβο είτε προσθέτετε περισσότερους κόμβους στο σύστημα. Η διεύθυνση IP του Riak περιέχεται στο riak.conf ή - εάν χρησιμοποιείτε το αρχείο app.config - στο αρχείο διαμόρφωσης vm.args, το οποίο βρίσκεται εκεί στον κατάλογο /etc/riak (ή /opt/riak/etc/ σε άλλα λειτουργικά συστήματα).

Αρχικά, η γραμμή που περιέχει τη διεύθυνση IP του Riak οδηγεί στον τοπικό κεντρικό υπολογιστή σε αυτήν την τοποθεσία:

RIAK.CONF

 nodename = [email protected]

VM.ARGS

 -name [email protected]

Αντικαταστήστε το 127.0.0.1 με την προτιμώμενη διεύθυνση IP ή το όνομα κεντρικού υπολογιστή του κόμβου Riak.

Ρυθμίσεις απόδοσης και εύρους ζώνης

Για λόγους απόδοσης, συνιστούμε ανεπιφύλακτα την προσθήκη τιμών στα αρχεία διαμόρφωσης Riak riak.conf ή vm.args, που βρίσκονται στον κατάλογο /etc/riak/ ή /opt/riak/etc.

RIAK.CONF

 erlang.max_ports = 65536

VM.ARGS

## This setting should already be present for recent Riak installs.
 -env ERL_MAX_PORTS 65536

Απενεργοποίηση JavaScript MapReduce

Συνιστάται να μην χρησιμοποιείτε το JavaScript MapReduce παλαιού τύπου με οποιαδήποτε έκδοση του Riak CS. Για λόγους απόδοσης, θα πρέπει να απενεργοποιήσετε την εικονική μηχανή που εκτελεί λειτουργίες JavaScript MapReduce ορίζοντας στο αρχείο διαμόρφωσης riak.conf ή στην ενότητα riak_kv του advanced.conf ή του app.config:

RIAK.CONF

 javascript.map_pool_size = 0
 javascript.reduce_pool_size = 0
 javascript.hook_pool_size = 0 

ADVANCED.CONFIG

{riak_kv, [
    %% Other configs
    {map_js_vm_count, 0},
    {reduce_js_vm_count, 0},
    {hook_js_vm_count, 0}
    %% Other configs
]}

APP.CONFIG

{riak_kv, [
    %% Other configs
    {map_js_vm_count, 0},
    {reduce_js_vm_count, 0},
    {hook_js_vm_count, 0}
    %% Other configs
]}

Στη συνέχεια πρέπει να διαμορφώσουμε τα υπόλοιπα στοιχεία του συστήματος Riak CS.

Πρωτότυπο εγχειρίδιο.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο