绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Riak CS集群部署
2022-05-24 14:27:18

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集群部署完成。

实践:(见调优尝试)

————————————————
版权声明:本文为CSDN博主「fRe_Bourne_Neo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/L_unter/article/details/78317403

分享好友

分享这个小栈给你的朋友们,一起进步吧。

Riak KV
创建时间:2022-04-19 09:50:17
Riak KV
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 飘絮絮絮丶
    专家
戳我,来吐槽~