Riak CS (Cloud Storage) – łatwe w użyciu oprogramowanie do organizacji przechowywania obiektów, działające na bazie Riak KV. Riak (KV) to rozproszona baza danych NoSQL typu „klucz-wartość”. Riak CS zaprojektowano z myślą o prostocie, dostępności i rozproszeniu chmurowego przechowywania na dowolną skalę, i może być używane do budowy architektur w chmurze — zarówno publicznych, jak i prywatnych — lub jako infrastrukturalne przechowywanie dla wysoko obciążonych aplikacji i usług. Interfejs API Riak CS jest zgodny z Amazon S3 i wspiera możliwość generowania raportów na różne sytuacje.

Ten artykuł to swobodny przekład oficjalnej dokumentacji systemu Riak CS w wersji 2.1.1
W systemie przechowywania Riak CS trzy komponenty współpracują ze sobą, co oznacza, że każdy komponent musi być skonfigurowany do pracy z innymi komponentami:
- Riak (KV) – system baz danych, który działa jako system końcowy.
- Riak CS — warstwa chmurowego przechowywania nad Riak, która zapewnia przechowywanie i możliwości API, przechowuje pliki i metadane w Riak oraz przekazuje je następnie do użytkowników końcowych.
- Stanchion — zarządza żądaniami z udziałem globalnie unikalnych encji, takich jak zasoby i użytkownicy w instancji Riak. Na przykład, tworzenie użytkowników, tworzenie lub usuwanie zasobów.
Dodatkowo możesz skonfigurować klienta S3 do użycia w komunikacji z systemem Riak CS.
Musisz zaplanować obecność jednego węzła Riak dla każdego węzła Riak CS w twoim systemie. Węzły Riak i Riak CS mogą być uruchomione na różnych maszynach fizycznych, ale w większości przypadków preferowane jest uruchamianie jednego węzła Riak i jednego węzła Riak CS na tej samej maszynie fizycznej. Zakładając, że jedna maszyna fizyczna ma wystarczającą moc, aby sprostać potrzebom obu węzłów Riak i Riak CS, zazwyczaj zauważysz lepszą wydajność z powodu zmniejszenia opóźnień sieciowych.
Jeśli twój system składa się z kilku węzłów, konfiguracja przede wszystkim polega na ustawieniu komunikacji między komponentami. Inne ustawienia, takie jak i gdzie będą przechowywane pliki dziennika, mają wartości domyślne i wymagają zmian tylko wtedy, gdy chcesz używać niestandardowych wartości.
Konfiguracja komponentów systemu. Ustawienia Riak KV dla CS
Ponieważ Riak CS to aplikacja opracowana na bazie Riak, bardzo ważne jest, aby zwrócić uwagę na konfigurację Riak, gdy uruchamiany jest Riak CS. Dokument ten jest jednocześnie przewodnikiem po konfiguracji Riak oraz dokumentem referencyjnym opisującym ważne parametry konfiguracyjne.
Przed konfiguracją upewnij się, że Riak KV i Riak CS są zainstalowane na każdym węźle w twoim klastrze. Stanchion, z drugiej strony, powinien być zainstalowany tylko na jednym węźle w całym klastrze.

Backendy dla Riak CS
Domyślnie backend używany przez Riak to Bitcask, ale pakiet Riak CS zawiera specjalny backend, który powinien być używany przez klaster Riak, będący częścią systemu Riak CS. W standardowej wersji dostępny jest standardowy backend Multi, który jest dostarczany z Riak.
Te same kubełki Riak, używane w Riak CS, wykorzystują sekundowe indeksy, które teraz wymagają backendu LevelDB. Inne części systemu Riak CS mogą korzystać z backendu Bticask. Użycie wzorcowego backendu Multi jest włączone do Riak CS, aby wykorzystać zalety obu tych backendów w celu osiągnięcia najlepszego połączenia wydajności i funkcjonalności. W następnej sekcji opisano, jak poprawnie skonfigurować Riak do korzystania z tego backendu Multi.
Backend to to, co Riak będzie używać do przechowywania danych. W arsenale Riak KV znajduje się kilka backendów: Bitcask, LevelDB, Memory i Multi.
Dodatkowo, system obliczania przechowywania danych używa Riak MapReduce do sumowania plików w kubełki. Oznacza to, że musisz poinformować wszystkie węzły Riak, gdzie szukać przygotowanych plików Riak CS przed obliczeniem przechowywania.
Kilka innych parametrów musi być zmienionych, aby skonfigurować węzeł Riak jako część systemu Riak CS, takich jak adres IP oraz adres IP i port do komunikacji przez Protocol Buffers. Pozostałe ustawienia mogą być zmienione w razie potrzeby. Następne sekcje opisują, jak skonfigurować węzeł Riak do pracy jako część systemu Riak CS.
Konfiguracja backendu Riak
Po pierwsze, edytowane są pliki konfiguracyjne riak.conf lub advanced.config/app.config. Pliki te mogą znajdować się w katalogu /etc/riak lub /opt/riak/etc. Domyślnie Riak korzysta z backendu Bitcask. Pierwszą rzeczą, którą musimy zrobić, jest zmiana pliku konfiguracyjnego poprzez usunięcie następującej linii:
RIAK.CONF
## Delete this line:
storage_backend = bitcaskADVANCED.CONFIG
{riak_kv,
[ %% Usuń tę linię:
{storage_backend, riak_kv_bitcask_backend},
]}APP.CONFIG
{riak_kv,
[ %% Usuń tę linię:
{storage_backend, riak_kv_bitcask_backend},
]}Następnie musimy wskazać konieczność modułów RiakCS dla Riak oraz skonfigurować Riak do korzystania z odpowiedniego backendu zapewniającego Riak CS. Musimy użyć do tego pliku advanced.config lub app.config i wprowadzić następujące opcje:
ADVANCED.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Inne konfiguracje
{add_paths, ["/usr/lib/riak-cs/lib/riak_cs-2.1.1/ebin"]},
{storage_backend, riak_cs_kv_multi_backend},
{multi_backend_prefix_list, [{<>, 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"}
]}
]},
%% Inne konfiguracje
]}
APP.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Inne konfiguracje
{add_paths, ["/usr/lib/riak-cs/lib/riak_cs-2.1.1/ebin"]},
{storage_backend, riak_cs_kv_multi_backend},
{multi_backend_prefix_list, [{<>, 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"}
]}
]},
%% Inne konfiguracje
]}Bardzo ważne jest, aby zauważyć, że wiele z tych wartości będzie zależeć od wariantów katalogów specyficznych dla twojego systemu operacyjnego, dlatego wykonuj instrukcje zgodnie z nimi. Na przykład parametr add_paths sugeruje, że Riak CS jest zainstalowany w /usr/lib/riak-cs, podczas gdy parametry data_root sugerują, że Riak jest zainstalowany w /var/lib. (Przyp. W moim przypadku było to add_paths — /usr/lib64/riak-cs/).
Ta konfiguracja zakłada, że Riak CS jest zainstalowany na tej samej maszynie co Riak. Jeśli nie, pakiet musi być skopiowany na osobny host.
Konfiguracja tworzenia saiblingów
Teraz musimy ustawić parametr allow_mult na wartość true. Możemy dodać linię do pliku konfiguracyjnego riak.conf, lub sekcji riak_core w advanced.config lub app.config.
RIAK.CONF
buckets.default.allow_mult = trueADVANCED.CONFIG
{riak_core, [
%% Inne konfiguracje
{default_bucket_props, [{allow_mult, true}]},
%% Inne konfiguracje
]}APP.CONFIG
{riak_core, [
%% Inne konfiguracje
{default_bucket_props, [{allow_mult, true}]},
%% Inne konfiguracje
]}To umożliwi Riak tworzenie saiblingów, które są niezbędne do działania Riak CS. Jeśli łączysz się z Riak CS za pomocą biblioteki klienckiej, nie martw się: nie będziesz musiał rozwiązywać konfliktów, ponieważ wszystkie operacje Riak CS są ściśle zgodne z ich definicją.
Saibling to sposób przechowywania wielu obiektów pod jednym kluczem, aby obiekt miał różne wartości na różnych węzłach.
Uwaga: allow_mult
Każdy węzeł Riak, który także wspiera Riak CS, zawsze będzie miał wartość true dla parametru allow_mult. Riak CS zresetuje uruchomienie, jeśli wartość ta będzie false.
Konfiguracja nazwy węzła i adresu IP
Każdy węzeł Riak ma swoją nazwę, którą można określić w pliku riak.conf w opcji nodename. Jeśli korzystasz z pliku konfiguracyjnego app.config, musisz utworzyć plik o nazwie vm.args w tym samym katalogu, w którym znajduje się app.config, i określić nazwę węzła używając flagi -name. Zalecamy nadawanie węzłom nazw w formacie @. I na przykład, jeśli masz trzy uruchomione węzły na jednym hoście 100.0.0.1, możesz nazwać je riak1@100.0.0.1, riak2@100.0.0.1 oraz riak3@100.0.0.1 lub możesz nadać im bardziej szczegółowe nazwy, takie jak test_cluster1@100.0.0.1, user_data3@100.0.0.1 itd. Poniższy przykład pokazuje, jak zmienić nazwę węzła na riak1@127.0.0.1, co będzie działać na lokalnym hoście.
RIAK.CONF
nodename = riak1@127.0.0.1 VM.ARGS
-name riak1@127.0.0.1Musisz nadać nazwy wszystkim węzłom przed uruchomieniem i dodaniem ich do klastra.
Test konfiguracji
Teraz, gdy wszystkie niezbędne ustawienia węzła zostały dokonane, możemy spróbować uruchomić Riak:
SHELL
riak start Uwaga. Odpowiedź w moim przypadku:

Tutaj należy trochę poczekać. Dopiero później można rozpocząć test uruchomionego węzła.
SHELL
riak pingJeśli odpowiedź to pong, oznacza to, że Riak jest uruchomiony: jeśli odpowiedź brzmi Node not responding to pings, to znaczy, że coś poszło nie tak.
Uwaga. Odpowiedź w moim przypadku:

Jeśli węzeł uruchomił się niepoprawnie, sprawdź dziennik erlang.log.1 w katalogu /log węzła, jeśli możliwe jest zidentyfikowanie problemu. Jednym z najczęstszych błędów jest invalid_storage_backend, co wskazuje, że ścieżka do biblioteki Riak CS w advanced.config lub app.config jest niepoprawna (lub Riak CS nie jest zainstalowany na serwerze). Pomimo tego błędu upewnij się, że nie zmieniłeś z riak_cs_kv_multi_backend na riak_kv_multi_backend.
Konfiguracja Riak do używania buforów protokołu (protocol buffers)
Ustawienia buforów protokołu Riak znajdują się w riak.conf lub w sekcji riak_api w plikach advanced.config lub app.config, które znajdują się w katalogu /etc/riak/. Domyślnie host ma adres IP 127.0.0.1 oraz port 8087. Musisz je zmienić, jeśli planujesz uruchomić Riak i Riak CS nie w lokalnym środowisku. Zastąp adres IP 127.0.0.1 węzła Riak i port 8087 odpowiednimi.
RIAK.CONF
listener.protobuf.internal = 10.0.2.10:10001ADVANCED.CONF
{riak_api, [
%% Inne konfiguracje
{pb, ["10.0.2.10", 10001]},
%% Inne konfiguracje
]}APP.CONFIG
riak_api, [
%% Inne konfiguracje
{pb, ["10.0.2.10", 10001]},
%% Inne konfiguracje
]}Uwaga:Wartość parametru listener.protobuf.internal w pliku riak.conf (lub wartość parametru pb w pliku advanced.conf / app.config) musi odpowiadać wartościom dla riak_host w pliku Riak CS riak-cs.config oraz Stanchion w pliku stanchion.conf (lub riak_host odpowiednio w plikach advanced.config/app.config).
Uwagi dotyczące numeru portu
Może być potrzebny inny numer portu, jeśli port koliduje z portami używanymi przez inne aplikacje lub jeśli korzystasz z równoważnika obciążenia lub serwera proxy.
Zaleca się również, aby użytkownicy upewnili się, że rozmiar Riak protobuf.backlog (lub w plikach advanced.config/app.config to pb_backlog) jest równy lub większy niż rozmiar pool.request.size, określony dla Riak CS w pliku riak-cs.config (lub request_pool_size w plikach advanced.config/app.conf).
Jeśli wartość pool.request.size w Riak CS została zmieniona, wartość protobuf.backlog w Riak również musi zostać zaktualizowana.
Inne ustawienia Riak
Pliki riak.conf i advanced.config zawierają inne ustawienia, które konfigurowują tworzenie plików dziennika i ich ścieżki przechowywania. Ustawienia te mają wartości domyślne i powinny działać w większości przypadków. W celu uzyskania dalszych informacji zalecamy zapoznanie się z naszą dokumentacją na temat plików konfiguracyjnych.
Konfiguracja adresu IP dla Riak
Podczas konfiguracji adresy IP dla Riak musisz upewnić się, że węzły Riak mają unikalny adres IP, niezależnie od tego, czy pracujesz tylko z jednym węzłem, czy dodajesz dodatkowe węzły do systemu. Adres IP Riak znajduje się w pliku riak.conf lub — jeśli używasz pliku app.config — w pliku konfiguracyjnym vm.args, który znajduje się w katalogu /etc/riak (lub w /opt/riak/etc w innych systemach operacyjnych).
Początkowo, linia zawierająca adres IP Riak wskazuje na lokalny host w tym miejscu:
RIAK.CONF
nodename = riak@127.0.0.1VM.ARGS
-name riak@127.0.0.1Zastąp 127.0.0.1 preferowanym adresem IP lub nazwą hosta węzła Riak.
Ustawienia wydajności i przepustowości
Z powodów wydajności zdecydowanie zalecamy dodanie wartości do plików konfiguracyjnych Riak riak.conf lub vm.args, znajdujących się w katalogach /etc/riak/ lub /opt/riak/etc.
RIAK.CONF
erlang.max_ports = 65536VM.ARGS
## This setting should already be present for recent Riak installs.
-env ERL_MAX_PORTS 65536Wyłączenie JavaScript MapReduce
Zaleca się nie używać przestarzałego JavaScript MapReduce w połączeniu z dowolną wersją Riak CS. Z powodów wydajności powinieneś wyłączyć maszynę wirtualną wykonującą operacje JavaScript MapReduce, konfigurowując to w pliku konfiguracyjnym riak.conf lub w sekcji riak_kv pliku advanced.conf lub app.config:
RIAK.CONF
javascript.map_pool_size = 0
javascript.reduce_pool_size = 0
javascript.hook_pool_size = 0 ADVANCED.CONFIG
{riak_kv, [
%% Inne konfiguracje
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Inne konfiguracje
]}APP.CONFIG
{riak_kv, [
%% Inne konfiguracje
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Inne konfiguracje
]}Następnie musimy skonfigurować pozostałe komponenty systemu Riak CS.
Źródło: habr.com
