Riak 雲端儲存。 第 1 部分:設定 Riak KV

Riak CS(雲端儲存) – 用於組織物件儲存的易於使用的軟體,在 Riak KV 之上運作。 Riak(KV)是一個分散式NoSQL鍵值資料庫。 Riak CS 旨在提供任何規模的雲端儲存的簡單性、可用性和分散式,可用於建置公有和私有雲架構,或作為高負載應用程式和服務的基礎架構儲存。 Riak CS API 與 Amazon S3 相容,支援接收各種情況的報告。

Riak 雲端儲存。 第 1 部分:設定 Riak KV
本文為Riak CS系統2.1.1版本官方手冊免費翻譯

在 Riak CS 儲存系統中,三個組件相互配合工作,這意味著每個組件都必須配置為與其他組件一起工作:

  • 裡亞克 (KV) – 充當終端系統的資料庫系統。
  • 裡亞克CS - Riak之上的雲端儲存層,提供儲存和API功能,將檔案和元資料儲存在Riak中,然後將它們分發給最終用戶。
  • 支柱 - 管理涉及 Riak 實例中的全域唯一實體(例如儲存桶和使用者)的查詢。 例如,建立使用者、建立或刪除儲存桶。

此外,您也可以設定 S3 用戶端以用於與 Riak CS 系統進行訊息傳遞。

您應該計劃為系統上的每個 Riak CS 節點配備一個 Riak 節點。 Riak 和 Riak CS 節點可以運行在不同的實體機上,但大多數情況下最好在同一台實體機上運行一個 Riak 節點和一個 Riak CS 節點。 假設一台實體機有足夠的能力來滿足 Riak 和 Riak CS 節點的需求,由於網路延遲減少,您通常會看到更好的效能。

如果您的系統由多個節點組成,則配置主要是關於設定元件之間的通訊。 其他設置,例如日誌檔案的儲存位置,都有預設值,只有在您想使用非標準值時才需要更改。

設定係統組件。 為 CS 設定 Riak KV

由於 Riak CS 是構建在 Riak 之上的應用程序,因此在運行 Riak CS 時注意 Riak 配置非常重要。 本文檔既是 Riak 配置指南,也是描述重要配置參數的參考文件。

在設定之前,請確保 Riak KV 和 Riak CS 已安裝在叢集中的每個節點上。 另一方面,Stachion 只能安裝在整個叢集中的一個節點上。

Riak 雲端儲存。 第 1 部分:設定 Riak KV

Riak CS 的後端

Riak 使用的預設後端是 Bitcask,但 Riak CS 軟體包包含一個特殊後端,作為 Riak CS 系統一部分的 Riak 叢集必須使用該後端。 普通版本具有 Riak 附帶的標準 Multi 後端。

Riak CS 中使用的相同 Riak 儲存桶使用二級索引,現在需要 LevelDB 後端。 Riak CS 系統的其他部分可以從使用 Bticask 後端中受益。 Riak CS 中包含了範例 Multi 後端的使用,以利用這兩個後端來實現效能和功能的最佳組合。 下一節將介紹如何正確配置 Riak 以使用此多後端。

後端 Riak 將使用它來保存資料。 Riak KV 的武器庫中有多個後端:Bitcask、LevelDB、Memory 和 Multi。

此外,儲存運算系統使用Riak MapReduse將檔案聚合到桶中。 這意味著您必須在計算儲存之前告訴所有 Riak 節點在哪裡尋找準備好的 Riak CS 檔案。

必須更改其他幾個參數才能將 Riak 節點配置為 Riak CS 系統的一部分,例如 IP 位址以及透過 Protocol Buffers 進行訊息傳遞的 IP 位址和連接埠。 如有必要,可以更改其他設定。 以下部分說明如何配置 Riak 節點作為 Riak CS 系統的一部分運作。

設定 Riak 後端

首先,編輯riak.conf或advanced.config/app.config設定檔。 這些檔案可以位於 /etc/riak 或 /opt/riak/etc 目錄中。 預設情況下,Riak 使用 Bitcask 後端。 我們需要做的第一件事是透過刪除以下行來更改設定檔:

裡亞克會議

## Delete this line:
storage_backend = bitcask

進階配置

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

應用程式配置

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

接下來,我們需要示範 Riak 對 RiakCS 模組的需求,並指示 Riak 使用提供 Riak CS 的已配置後端。 我們需要為此使用advanced.config或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
]}

應用程式配置

{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設定檔中新增一行,或是在advanced.config或app.config中加入riak_core部分。

裡亞克會議

buckets.default.allow_mult = true

進階配置

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

應用程式配置

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

這將允許 Riak 創建 Riak CS 運行所必需的兄弟姐妹。 如果您使用客戶端程式庫連線到 Riak CS,請不要擔心:您不必解決衝突,因為所有 Riak CS 操作都按照定義嚴格一致。

兄弟 是一種將多個物件儲存在一個鍵中,使得物件在不同節點上具有不同值的方式。

注意:allow_mult
任何也支援 Riak CS 的 Riak 節點都將始終將allow_mult 設為 true。 如果該值為 false,Riak CS 將重設啟動。

設定主機名稱和 IP 位址

每個 Riak 節點都有一個名稱,可以在 riak.conf 中的 nodename 選項中指定。 如果您使用 app.config 設定文件,則需要在 app.config 所在的目錄中建立一個名為 vm.args 的文件,並使用 -name 標誌指定主機名稱。 我們建議以 @ 格式指定節點名稱。 因此,如果您在一台主機 100.0.0.1 上運行了三個節點,您可以將它們稱為 [電子郵件保護], [電子郵件保護][電子郵件保護] 或者您可以給出更具體的名稱,例如 [電子郵件保護], [電子郵件保護] 等等。 下面的範例示範了將主機名稱更改為 [電子郵件保護],它將在本機上運行。

裡亞克會議

 nodename = [email protected] 

虛擬機器ARGS

 -name [email protected]

您必須在啟動所有節點並加入叢集之前命名它們。

設定測試

現在所有必要的節點設定都已完成,我們可以嘗試啟動 Riak:

SHELL

 riak start 

筆記我的案例的答案是:

Riak 雲端儲存。 第 1 部分:設定 Riak KV

這裡你需要稍等一下。 然後就可以開始測試運行的節點了。

SHELL

 riak ping

如果回應是 pong,則 Riak 正在執行;如果回應是 Node 未回應 ping,則表示出現問題。

筆記我的案例的答案是:

Riak 雲端儲存。 第 1 部分:設定 Riak KV

如果節點沒有正常啟動,請查看節點/log目錄下的erlang.log.1日誌是否可以定位問題。 最常見的錯誤之一是 invalid_storage_backend。 這表示advanced.config或app.config中Riak CS庫的路徑不正確(或伺服器上沒有安裝Riak CS)。 儘管出現此錯誤,請確保您沒有從 riak_cs_kv_multi_backend 更改為 riak_kv_multi_backend。

配置 Riak 以使用協定緩衝區

Riak 協定緩衝區設定位於 riak.conf 或 advance.config 或 app.config 檔案的 riak_api 部分中,這些檔案位於 /etc/riak/ 目錄中。 預設情況下,主機的 IP 位址為 127.0.0.1,連接埠為 8087。如果您打算在非本機環境中執行 Riak 和 Riak CS,則需要變更這些設定。 將 127.0.0.1 替換為 Riak 主機 IP 位址,將連接埠 8087 替換為適當的位址。

裡亞克會議

 listener.protobuf.internal = 10.0.2.10:10001

進階設定檔

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

應用程式配置

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

注:riak.conf中listener.protobuf.internal參數的值(或advanced.conf/app.config中pb參數的值)必須與Riak CS riak-cs.config中riak_host的值匹配並且Stanchion stanchion.conf(或高級. config/app.config 中的riak_host)檔案。

關於連接埠號碼的註釋
如果連接埠與其他應用程式使用的連接埠衝突或您正在使用負載平衡器或代理伺服器,則可能需要不同的連接埠號碼。

也建議使用者確保 Riak protobuf.backlog 大小(或在 advance.config/app.config 檔案中為 pb_backlog)等於或大於 riak-cs 中為 Riak CS 指定的 pool.request.size。設定(或advanced.config/app .conf 檔案中的request_pool_size)。

如果Riak CS中的pool.request.size的值發生了變化,那麼Riak中的protobuf.backlog的值也必須更新。

其他 Riak 設定

riak.conf 和advanced.config 檔案包括設定日誌檔案的建立及其保存位置的其他設定。 這些設定具有預設值,並且應該在大多數情況下有效。 有關更多信息,我們建議閱讀有關配置文件的文檔。

為 Riak 設定 IP 位址

為 Riak 設定 IP 位址時,無論您是僅使用一個節點還是為系統新增更多節點,您都必須確保 Riak 節點具有唯一的 IP 位址。 Riak IP 位址包含在 riak.conf 中,或(如果您使用的是 app.config 檔案)包含在 vm.args 設定檔中,該檔案位於 /etc/riak 目錄(或 /opt/riak/etc/在其他作業系統上)。

最初,包含 Riak IP 位址的行指向此位置的本機:

裡亞克會議

 nodename = [email protected]

虛擬機器ARGS

 -name [email protected]

將 127.0.0.1 替換為您首選的 Riak 節點 IP 位址或主機名稱。

性能和頻寬設置

出於效能原因,我們強烈建議在位於 /etc/riak/ 或 /opt/riak/etc 目錄中的 Riak 設定檔 riak.conf 或 vm.args 新增值。

裡亞克會議

 erlang.max_ports = 65536

虛擬機器ARGS

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

禁用 JavaScript MapReduce

建議不要將舊版 JavaScript MapReduce 與任何版本的 Riak CS 一起使用。 出於效能原因,您應該透過在 riak.conf 設定檔中或在 advance.conf 或 app.config 的 riak_kv 部分中設定來停用執行 JavaScript MapReduce 操作的虛擬機器:

裡亞克會議

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

進階配置

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

應用程式配置

{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

添加評論