当前位置: 首页 > 工具软件 > Riak CS > 使用案例 >

Riak CS集群部署

郑波
2023-12-01

RiakCS 对像存储性能探索全记录之——

Riak CS集群部署精要

简介

       RiakCS(Riak云存储)是基于Riak KV——Basho公司的分布式数据库构建的易于使用的对象存储软件。RiakCS旨在以任何规模提供简单,可用的分布式云存储,并可用于构建云架构(无论是公共还是私有),或用作重型应用程序和服务的存储基础架构。 Riak CS的API是AmazonS3兼容的,并支持涉及计费和计量的用户报告。

       由于Riak CS是基于Riak KV数据库的,因此在部署Riak CS需要先部署Riak KV(下文中的Riak);另外,Riak系列的软件都是用Erlang开发的,因此我们需要部署Erlang环境;为了保持系统用户信息的唯一性我们需要安装Stanchion;所以部署Riak CS集群需要安装的主要组件有Erlang,Riak KV,Stanchion及Riak CS,下面我们按顺序一步步来完成。

配置信息

硬件配置:Intel(R)Xeon(R) CPU E5-2420 0 @ 1.90GHz

操作系统:Ubuntu 14.04.3 LTS

网络连接正常。

 

软件版本:

Riak KV          —          riak-2.1.1

Stanchion      —          stanchion-2.1.0

Riak CS          —          riak-cs-2.1.0

部署过程

安装Elang

安装编译依赖git:

$ sudo apt-get install build-essential libc6-dev-i386 git

       安装编译依赖git:

$ sudo apt-getinstall build-essential libc6-dev-i386 git

安装依赖包

$ sudo apt-getupdate

$ sudo apt-getinstall build-essential autoconf libncurses5-dev openssl libssl-dev fopxsltproc unixodbc-dev git

 

安装GUI依赖

$ sudo apt-getinstall libwxbase2.8 libwxgtk2.8-dev libqt4-opengl-dev

 

安装Basho补丁版本的Eerlang

$ wgethttp://s3.amazonaws.com/downloads.basho.com/erlang/otp_src_R16B02-basho8.tar.gz

$ tar zxvfotp_src_R16B02-basho8.tar.gz

$ cdOTP_R16B02_basho8

$ ./otp_buildautoconf

$ ./configure&& make && sudo make install

验证

riak@riak2:~$which erl

/usr/local/bin/erl

 

启动Erlang

riak@riak2:~$erl

Erlang R16B02_basho8(erts-5.10.3) [source] [64-bit] [smp:24:24] [async-threads:10] [hipe][kernel-poll:false]

 

EshellV5.10.3  (abort with ^G)

1>

 

退出Erlang

1> q().

ok

2>riak@riak2:~$

 

可能遇到的问题:

1、make: *** [ ]Error x

          ----处理:

              这种一般都是依赖包没有安装完全,可在网上搜索类似问题。

2、有时会遇到需要安装gcc以及g++,按提示安装成功即可;

RIak集群搭建

1.     下载、安装Riak:

$ wgethttp://s3.amazonaws.com/downloads.basho.com/riak/2.0/2.0.7/riak-2.0.7.tar.gz

$ tar zxvf riak-2.0.7.tar.gz

$ cd riak-2.0.7

$ make rel

验证:

riak@riak2:~/riak-2.0.7/rel/riak/bin$ ./riak ping

pong

 

可能遇到的问题:

1、编译失败,报错:

make: *** [ ] Error X

       ----处理:

# apt-getinstall libpam0g-dev

2.     启停验证

启动:

/…/bin/riak start (留意提示信息)

验证是否启动成功:

/…/bin/riak ping (pong)

停止:

/…/bin/riak stop (OK)

可能遇到的问题:

1、系统默认同时打开文件数为1024,而riak要求在65536以上,在新装的系统中安装成功后启动riak时报警:

!!!!

!!!! WARNING: ulimit -n is 1024; 65536 is the recommended minimum.

!!!!

----处理:

修改ulimit数:

1)# vim/etc/security/limits.conf

在末尾添加:

* soft nofile 65535

* hard nofile 65535

2)# vim/etc/pam.d/common-session

加入一行:

session required pam_limits.so

3)# vim/etc/profile

ulimit -SHn 65536

4)reboot.

2、

当riak单机工作正常之后,就可以着手构建集群了。

 

3.     构建集群

假设我们有两台服务器,

riak1:      10.148.51.11

riak2:      10.148.51.12

 

配置第一个节点:

       --先停止Riak:

              /…/bin/riakstop (OK)

       --修改配置:

            编辑riak-conf,将配置项参数参照如下设置:

              nodename= riak@10.148.51.11

              listener.http.internal= 10.148.51.31:8098

              listener.protobuf.internal= 10.148.51.31:8087

              以上所用端口号视具体情况选用可用端口。

       --启动

       /…/bin/riakstart (留意提示信息)

注意,修改配置项直接启动通常会失败。

查看启动信息

/…riak/bin/riak console

通常会看到如下信息:

[os_mon] memory supervisor port (memsup):Erlang has closed

       [os_mon]cpu supervisor port (cpu_sup): Erlang has closed

       …

       {"Kernelpid terminated"…},

       …

处理

rm -rf /…riak/data/*

然后再重新启动。

 

配置其他节点:

重复以上步骤即可。

 

加入集群:

前提是记录每个节点的nodename,本例为:riak@10.148.51.11,riak@10.148.51.12

      

       操作:

       ­——加入:

              以riak@10.148.51.11为首节点,在riak@10.148.51.12上面执行

/…/bin/riak-admin cluster joinriak@10.148.51.11  

              Success:staged join request for 'riak@10.148.51.21' to 'riak@10.148.51.11'

              以上提示说明加入操作已提交成功。

       ——显示集群更改计划(plan):

              /…/bin/riak-admin cluster plan

              注意提示信息。

       ­——提交计划(commit)

              /…/bin/riak-admin cluster commit

              Cluster changes committed

上面提示表明节点已经加入成功,已成功构建一个包含riak@10.148.51.11,riak@10.148.51.12两个节点的riak集群,接下来我们可以通过相关命令操作进行验证。

 

可能的遇到的问题:

如两个节点的ring_size数据设置不一样,join操作会报:

Failed: riak@10.148.51.124 has a differentring_creation_size

处理:

1)停止riak,

2)杀掉与riak相关的所有进程

3)删除ring/目录下的所有数据

4)重启,join

 

4.     集群相关操作

1、查看集群状态

/…/bin/riak-admin clusterstatus

 

 

+-----------------------+------+-------+-----+-------+

|         node          |status| avail |ring |pending|

+-----------------------+------+-------+-----+-------+

| (C)  riak@10.148.51.11 |valid |  up   |75.0|  50.0 |

|     riak@10.148.51.21 |valid |  up   |25.0|  50.0 |

+-----------------------+------+-------+-----+-------+

2、加入新节点

重复前面步骤即可。

3、节点脱离集群

在要脱离的节点执行

/…/bin/riak-admin clusterleave

Success: staged leaverequest for 'riak@10.148.51.11'

注意,每次集群变动之后都需要plan以及commit。

验证可以通过clusterstatus查看。

4、强制移除节点

有时节点脱离失败,可采取强制移除节点来让节点脱离:

/…/bin/riak-admin clusterforce-remove riak@10.148.51.12

5、替换节点

在某个节点脱离时可以其所有数据分区传输到另一个节点,然后离开集群并关闭:

/…/bin/riak-admin clusterreplace riak@10.148.51.12 riak@10.148.51.11

6、集群更改计划

/…/bin/riak-admin cluster plan

7、提交集群更改

/…/bin/riak-admin clustercommit

8、清除当前暂存的集群更改

/…/bin/riak-admin clusterclear

9、查看集群分区信息

/…/bin/riak-admin clusterpartitions

部署Stanchion

Stanchion是一个管理Riak CS集群中的全局唯一实体的应用程序。它确保整个系统中的用户帐户和存储桶名称唯一。

Riak CS缺少Stanchion将不可用。

Riak CS集群在任意时刻只需要一个Stanchion节点保持活动即可,但为了避免Stanchion节点变得不可用,可以在集群中部署多个Stanchion节点,通过在每节点的riak-cs.conf将load balancer IP配置为当前的Stanchion IP即可。

      

下载安装

$ git clone https://github.com/basho/stanchion.git

$ tar -zxvf stanchion-2.1.0.tar.gz

$ cd stanchion-2.1.0 && make rel

 

可能遇到的问题:

       1)编译的失败,报make: *** [ ] Error X

       参照riak的相应操作即可。

2)在编译过程中找不到组件,显示带有“git://…”的提示信息,要么配置主机识别git协议,要么将包中文件中的链接修改为https协议。

 

配置

以riak@10.148.51.11节点为例,编辑stanchion.conf,将配置项参数参照如下设置:

       listener =10.148.51.11:8085

       riak_host =10.148.51.11:8087

       nodename = stanchion@10.148.51.11

      

启动/验证/停止:

       /…/bin/stanchionstart

/…/bin/stanchion ping

/…/bin/stanchion stop

部署Riak CS

下载安装

              $git clone https://github.com/basho/riak_cs.git

              $tar -zxvf riak-cs-2.1.0.tar.gz

$ cd riak-cs-2.1.0 && make rel

可能遇到的问题:参考riak kv 及stanchion的安装过程。

配置

以riak@10.148.51.11节点为例,

编辑riak-cs.conf,将配置项参数参照如下设置:

              listener= 10.148.51.11:8080

              riak_host= 10.148.51.11:8087    (注:设置为你想riak cs连接到的riak 节点的IP)

              stanchion_host= 10.148.51.11:8085 (注:设置为相应的stanchion节点煌IP)

              nodename= riak-cs@10.148.51.11

              ##storage_backend= XXX

             

编辑riak-cs.conf,将配置项参数参照如下设置:

              [

{eleveldb, [

   {total_leveldb_mem_percent, 30}

    ]},

 {riak_kv, [

              {add_paths,["/…/riak-cs/lib/riakc-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, " /…/riak/data"}

                  ]},

                  {be_blocks,riak_kv_bitcask_backend, [

                     {data_root, " /…/riak/data/bitcask"}

                  ]}

              ]}

  ]}

].

 

              其它节点重复以上步骤即可。

 

启动/验证/停止:

注意:启动服务的顺序很重要,因为每个都是下一个的依赖。 确保在启动Riak CS

         之前成功启动Stanchion,在启动Stanchion之前成功启动Riak。

              /…/bin/riak-csstart

/…/bin/riak-cs ping

/…/bin/riak-cs stop

              验证与相应的Riak通信是否正常:

              $curl -v http://10.148.51.11:8080/riak-cs/ping

              OK

      

创建管理员帐户及用户帐户:

1)编辑riak-cs.conf,确保如下设置

anonymous_user_creation =on

2)启动riak,stanchion,riakcs

3)申请管理员帐户:

curl -v -H 'Content-Type: application/json' \

  -XPOST http://10.148.51.11:8080/riak-cs/user \

  --data '{"email":"admin@example.com","name":"admin"}'

返回类似如下JASON信息:

                     {"email":"admin@example.com",

                  "display_name":"admin",

                  "name":"admin",

                  "key_id":"Q_UF-UA4GZ_GROF2BA0FW",

                  "key_secret":"3exVObMfxq1wzaTO2URvaSaayR0O0jPDIc4tSmQ==",

           "id":"b830761e3e63adb3792c1fa439271a06f4378b7dd16022b71be186daf6cbf5318",

                  "status":"enabled"}

4)添加管理员帐户:

编辑每节点的riak-cs.conf,确保如下设置:

admin.key = Q_UF-UA4GZ_GROF2BA0FW

admin.secret = 3exVObMfxq1wzaTO2URvaSaayR0O0jPDIc4tSmQ==

 

编辑每节点的stanchion.conf,确保如下设置:

admin.key = Q_UF-UA4GZ_GROF2BA0FW

admin.secret = 3exVObMfxq1wzaTO2URvaSaayR0O0jPDIc4tSmQ==

 

在所有节点重启riak cs,stanchion。

5)验证集群用户:

$ /…/riak/bin/riak attach

然后在显示的Erlang界面中输入:

{ok, C} = riak:local_client().

C:list_keys(<<"moss.users">>).

然后回车,帐户正常则返回类似如下信息:

(riak@10.148.51.11)1> {ok, C} =riak:local_client().

{ok,{riak_client,['riak@10.148.51.11',undefined]}}

(riak@10.148.51.11)2> {ok, C} =riak:local_client().

{ok,{riak_client,['riak@10.148.51.11',undefined]}}

(riak@10.148.51.11)3>C:list_keys(<<"moss.users">>).

{ok,[<<" Q_UF-UA4GZ_GROF2BA0FW">>,…">>]}

 

              至此,一个满足基本存储功能的Riak CS集群部署完成。

高级实践:(见调优尝试)

 

 

 

 类似资料: