Przechowywanie w chmurze Riak. Część 1: Konfiguracja Riak KV

Riak CS (przechowywanie w chmurze) – łatwe w użyciu oprogramowanie do organizacji przechowywania obiektów, działające na platformie Riak KV. Riak (KV) to rozproszona baza danych NoSQL typu klucz-wartość. Riak CS został zaprojektowany, aby zapewnić prostotę, dostępność i dystrybucję przechowywania w chmurze o dowolnej skali i może być używany do budowania architektur chmurowych - zarówno publicznych, jak i prywatnych - lub jako pamięć masowa infrastruktury dla mocno obciążonych aplikacji i usług. Riak CS API jest kompatybilny z Amazon S3 i obsługuje możliwość otrzymywania raportów o różnych sytuacjach.

Przechowywanie w chmurze Riak. Część 1: Konfiguracja Riak KV
Artykuł ten jest darmowym tłumaczeniem oficjalnej instrukcji 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 współpracy z pozostałymi komponentami:

  • Riak (KV) – system bazodanowy pełniący rolę systemu końcowego.
  • Riak CS - Warstwa przechowywania w chmurze na Riaku, która zapewnia możliwości przechowywania i API, przechowuje pliki i metadane w Riaku, a następnie dystrybuuje je do użytkowników końcowych.
  • Stempel - Zarządza zapytaniami obejmującymi globalnie unikalne podmioty, takie jak zasobniki i użytkownicy w instancji Riak. Na przykład tworzenie użytkowników, tworzenie lub usuwanie segmentów.

Dodatkowo istnieje możliwość skonfigurowania klienta S3 do współpracy z systemem Riak CS.

Powinieneś zaplanować jeden węzeł Riak dla każdego węzła Riak CS w swoim systemie. Węzły Riak i Riak CS można uruchomić na różnych maszynach fizycznych, ale w większości przypadków lepiej jest uruchomić jeden węzeł Riak i jeden węzeł Riak CS na tej samej maszynie fizycznej. Zakładając, że jedna maszyna fizyczna ma wystarczającą moc, aby zaspokoić potrzeby zarówno węzłów Riak, jak i Riak CS, ogólnie rzecz biorąc, zauważysz lepszą wydajność ze względu na zmniejszone opóźnienia sieci.

Jeżeli system składa się z kilku węzłów, konfiguracja polega przede wszystkim na ustaleniu komunikacji pomiędzy komponentami. Pozostałe ustawienia, np. miejsce przechowywania plików dziennika, mają wartości domyślne i należy je zmienić tylko w przypadku chęci użycia wartości niestandardowych.

Konfigurowanie komponentów systemu. Konfigurowanie Riak KV dla CS

Ponieważ Riak CS jest aplikacją zbudowaną na bazie Riaka, bardzo ważne jest, aby podczas uruchamiania Riak CS zwracać uwagę na konfigurację Riaka. Dokument ten jest zarówno przewodnikiem konfiguracji Riak, jak i 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 klastrze. Z kolei słupek należy zainstalować tylko na jednym węźle w całym klastrze.

Przechowywanie w chmurze Riak. Część 1: Konfiguracja Riak KV

Backendy dla Riak CS

Domyślnym backendem używanym przez Riak jest Bitcask, jednak pakiet Riak CS zawiera specjalny backend, z którego musi korzystać klaster Riak będący częścią systemu Riak CS. Wersja zwykła ma standardowy backend Multi dostarczany z Riakiem.

Te same segmenty Riak, które zastosowano w Riak CS, korzystają z indeksów wtórnych, które teraz wymagają zaplecza LevelDB. Inne części systemu Riak CS mogą skorzystać na wykorzystaniu backendu Bticask. Riak CS umożliwia korzystanie z przykładowego backendu Multi, aby wykorzystać oba te backendy w celu uzyskania najlepszej kombinacji wydajności i funkcjonalności. Następna sekcja opisuje, jak poprawnie skonfigurować Riak do korzystania z tego Multi-backendu.

Zaplecze jest tym, czego Riak użyje do zapisania danych. Riak KV ma w swoim arsenale kilka backendów: Bitcask, LevelDB, Memory i Multi.

Dodatkowo system obliczania pamięci wykorzystuje Riak MapReduse do agregowania plików w segmenty. Oznacza to, że musisz poinformować wszystkie węzły Riak, gdzie mają szukać przygotowanych plików Riak CS przed obliczeniem pamięci.

Aby skonfigurować węzeł Riak jako część systemu Riak CS, należy zmienić kilka innych parametrów, takich jak adres IP i adres IP oraz port do przesyłania wiadomości poprzez bufory protokołu. W razie potrzeby można zmienić inne ustawienia. W poniższych sekcjach opisano sposób konfiguracji węzła Riak do pracy w ramach systemu Riak CS.

Konfigurowanie backendu Riak

Najpierw edytowane są pliki konfiguracyjne riak.conf lub Advanced.config/app.config. Pliki te mogą znajdować się w katalogach /etc/riak lub /opt/riak/etc. Domyślnie Riak korzysta z backendu Bitcask. Pierwszą rzeczą, którą musimy zrobić, to zmienić plik konfiguracyjny, usuwając następującą linię:

RIAK.CONF

## Delete this line:
storage_backend = bitcask

KONFIG. ZAAWANS

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

KONFIG.APLIKACJI

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

Następnie musimy wykazać potrzebę modułów RiakCS dla Riak i poinstruować Riaka, aby korzystał ze skonfigurowanego backendu udostępniającego Riak CS. Musimy w tym celu skorzystać z pliku Advanced.config lub app.config i dodać następujące opcje:

KONFIG. ZAAWANS

{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
]}

KONFIG.APLIKACJI

{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
]}

Bardzo ważne jest, aby pamiętać, że wiele z tych wartości będzie zależeć od odmian katalogów specyficznych dla Twojego systemu operacyjnego, dlatego postępuj zgodnie z instrukcjami. Na przykład opcja add_paths zakłada, że ​​Riak CS jest zainstalowany w /usr/lib/riak-cs, podczas gdy opcje data_root zakładają, że Riak jest zainstalowany w /var/lib. (Uwaga: 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 należy skopiować na osobny host.

Konfigurowanie tworzenia rodzeństwa

Teraz musimy ustawić parametrallow_mult na true. Możemy dodać linię w pliku konfiguracyjnym riak.conf lub sekcję riak_core w Advanced.config lub app.config.

RIAK.CONF

buckets.default.allow_mult = true

KONFIG. ZAAWANS

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

KONFIG.APLIKACJI

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

Pozwoli to Riakowi stworzyć rodzeństwo niezbędne do funkcjonowania Riak CS. Jeśli łączysz się z Riak CS za pomocą biblioteki klienta, nie martw się: nie będziesz musiał rozwiązywać konfliktów, ponieważ wszystkie operacje Riak CS są ściśle spójne, zgodnie z definicją.

Rodzeństwo to sposób przechowywania wielu obiektów w jednym kluczu, dzięki czemu obiekt ma różne wartości w różnych węzłach.

Uwaga: zezwolenie_mult
Każdy węzeł Riak, który obsługuje również Riak CS, będzie miał zawsze ustawioną wartość zezwolenie_mult na wartość true. Riak CS zresetuje uruchomienie, jeśli wartość będzie fałszywa.

Ustawianie nazwy hosta i adresu IP

Każdy węzeł Riak ma nazwę, którą można określić w opcji nodename w riak.conf. Jeśli używasz pliku konfiguracyjnego app.config, musisz utworzyć plik o nazwie vm.args w tym samym katalogu co app.config i określić nazwę hosta za pomocą flagi -name. Zalecamy określanie nazw węzłów w formacie @. Jeśli więc masz trzy węzły działające na jednym hoście 100.0.0.1, możesz je wywołać [email chroniony], [email chroniony]i [email chroniony] lub możesz podać bardziej szczegółowe nazwy, np [email chroniony], [email chroniony] i tak dalej. Poniższy przykład ilustruje zmianę nazwy hosta na [email chroniony], który będzie działał na localhost.

RIAK.CONF

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

Należy nazwać wszystkie węzły przed ich uruchomieniem i dołączeniem do klastra.

Test konfiguracji

Teraz, gdy wszystkie niezbędne ustawienia węzła zostały zakończone, możemy spróbować uruchomić Riak:

SHELL

 riak start 

Notatka Odpowiedź w moim przypadku:

Przechowywanie w chmurze Riak. Część 1: Konfiguracja Riak KV

Tutaj musisz trochę poczekać. Następnie możesz rozpocząć testowanie działającego węzła.

SHELL

 riak ping

Jeśli odpowiedzią jest „pong”, oznacza to, że Riak działa; jeśli odpowiedzią jest brak reakcji węzła na pingi, oznacza to, że coś poszło nie tak.

Notatka Odpowiedź w moim przypadku:

Przechowywanie w chmurze Riak. Część 1: Konfiguracja Riak KV

Jeśli węzeł nie został poprawnie uruchomiony, przejrzyj dziennik erlang.log.1 w katalogu /log węzła, jeśli uda się zidentyfikować problem. Jednym z najczęstszych błędów jest valid_storage_backend. Co wskazuje, że ścieżka do biblioteki Riak CS w Advanced.config lub w 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.

Konfigurowanie Riaka do korzystania z buforów protokołu

Ustawienia bufora protokołu Riak znajdują się w pliku 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 i port 8087. Będziesz musiał je zmienić, jeśli planujesz uruchamiać Riak i Riak CS w środowisku nielokalnym. Zamień 127.0.0.1 na adres IP hosta Riak i port 8087 na odpowiedni.

RIAK.CONF

 listener.protobuf.internal = 10.0.2.10:10001

ZAAWANSOWANE.KONF

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

KONFIG.APLIKACJI

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

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 Riak CS riak-cs.config oraz Stanchion stanchion.conf (lub odpowiednio riak_host w zaawansowanych plikach .config/app.config).

Uwaga dotycząca numeru portu
Inny numer portu może być wymagany, jeśli port powoduje konflikt z portami używanymi przez inną aplikację lub jeśli używasz modułu równoważenia obciążenia lub serwera proxy.

Zaleca się również, aby użytkownicy upewnili się, że rozmiar protobuf.backlog Riak (lub w plikach Advanced.config/app.config jest to pb_backlog) jest równy lub większy niż rozmiar puli.request.size określony dla Riak CS w riak-cs. config (lub request_pool_size w plikach Advanced.config/app.conf).

Jeżeli wartość Pool.request.size w Riak CS uległa zmianie, to wartość protobuf.backlog również musi zostać zaktualizowana w Riak.

Inne ustawienia Riaka

Pliki riak.conf i Advanced.config zawierają inne ustawienia, które konfigurują tworzenie plików dziennika i miejsce ich zapisywania. Ustawienia te mają wartości domyślne i powinny działać w większości przypadków. Aby uzyskać więcej informacji, zalecamy zapoznanie się z naszą dokumentacją dotyczącą plików konfiguracyjnych.

Konfigurowanie adresu IP dla Riaka

Konfigurując adres IP dla Riaka, musisz mieć pewność, że węzły Riak mają unikalny adres IP, niezależnie od tego, czy pracujesz z tylko jednym węzłem, czy dodajesz więcej węzłów do systemu. Adres IP Riak zawarty jest w pliku riak.conf lub – jeśli korzystasz z pliku app.config – w pliku konfiguracyjnym vm.args, który znajduje się tam w katalogu /etc/riak (lub /opt/riak/etc/ w innych systemach operacyjnych).

Początkowo linia zawierająca adres IP Riaka wskazuje na host lokalny w tej lokalizacji:

RIAK.CONF

 nodename = [email protected]

VM.ARGS

 -name [email protected]

Zamień 127.0.0.1 na preferowany adres IP lub nazwę hosta węzła Riak.

Ustawienia wydajności i przepustowości

Ze względu na wydajność zdecydowanie zalecamy dodanie wartości do plików konfiguracyjnych Riak riak.conf lub vm.args, znajdujących się w katalogu /etc/riak/ lub /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

Wyłączanie JavaScript MapReduce

Zaleca się, aby nie używać starszego JavaScript MapReduce z żadną wersją Riak CS. Ze względu na wydajność należy wyłączyć maszynę wirtualną wykonującą operacje JavaScript MapReduce, ustawiając 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 

KONFIG. ZAAWANS

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

KONFIG.APLIKACJI

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

Następnie należy skonfigurować pozostałe komponenty systemu Riak CS.

Oryginalna instrukcja.

Źródło: www.habr.com

Dodaj komentarz