如何在UbuntuVPS上创建Riak集群
状态: 已弃用
本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:
原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.
请参阅:
本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。
介绍
Riak 是一个分布式数据库,提供高可用性、容错、可扩展的数据管理。
本指南将介绍如何使用 64 位 Ubuntu 12.04 VPS 实例安装和配置 Riak 集群。 我们将使用 5 个独立的云服务器。
Riak 网站建议使用至少 4GB 内存的机器以获得最佳性能,因此我们将使用该大小的云服务器。
我们将使用 root 配置我们的 VPS。 请务必以 root 身份登录每个 VPS 或使用“su”获取相应权限。
安装
您将要设置的每个节点都需要执行以下安装步骤。
有可用于 Ubuntu 的预编译二进制包,可以从 Riak 的网站下载。
首先,我们将配置 apt-get 以信任 Riak apt 存储库并将其添加到我们的源中:
<pre>curl http://apt.basho.com/gpg/basho.apt.key | apt-key add -
bash -c “echo deb http://apt.basho.com $(lsb_release -sc) main > /etc/apt/sources.list.d/basho.list”
我们现在可以更新 apt-get 数据库并安装 Raik。
<pre>apt-get update
apt-get 安装 riak
我们现在已经安装了 Riak。 请记住在您将使用的其他机器上重复此步骤。
配置 Riak
现在已经安装了 Riak,每个节点都需要进行配置。 我们将在每台机器上完成以下步骤。
修改 app.config
确保当前没有运行 Riak 实例,切换到 Riak 配置目录,然后打开主配置文件:
<pre>riak stop
cd /etc/riak nano app.config
我们将更改两个值以反映这台机器的网络设置。
搜索“{pb, [ {"127.0.0.1", 8087 } ]}" 的行。 更改“127.0.0.1”以反映您机器的 IP 地址。
<pre>{pb, [ {"<span class="highlight">Your.IP.Address</span>", 8087 } ]},</pre>
接下来,在“{http, [ {"127.0.0.1", 8098 } ]}" 的行上执行类似的替换。 再次,使用您机器的 IP 地址。
<pre>{http, [ {"<span class="highlight">Your.IP.Address</span>", 8098 } ]},</pre>
保存并关闭文件。
修改 vm.args
接下来,我们将修改“vm.args”文件:
nano vm.args
查找并修改指定节点名称的行。 它应该是“-name riak@127.0.0.1”。 保持一切相同,但 IP 地址:
-name riak@Your.IP.Address
保存并关闭文件。
启动Riak
启动 Riak 节点很简单:
<pre>riak start</pre> <pre>!!!!
!!! 警告:ulimit -n 是 1024; 4096 是推荐的最小值。 !!!
您可能会收到上面的警告。 让我们现在暂时解决这个问题。 稍后我们将使其永久化:
<pre>riak stop
ulimit -n 65536
现在我们可以重新启动 Riak 以查看 ulimit 警告是否消失。
riak start
创建集群
如果您一直按照指南进行操作,那么您现在应该已经配置并运行了五个节点。
但是,目前它们是独立运营的。 它们都在处理 100% of 的独立数据集,并且没有进行通信。 我们将在本节中将它们合并到一个集群中。
以下步骤将把所有 Riak 节点连接到我们的第一个节点。 Riak 将在完成后自动在它们之间重新分配数据。
在我们的第二个节点上,告诉本地 Riak 实例加入第一个 Riak 节点:
riak-admin cluster join riak@First.Riak.IP
Success: staged join request for 'riak@Second.Riak.IP' to 'riak@1First.Riak.IP'
这将设置加入的动作,但它还不会执行。 我们必须首先查看计划中的更改:
riak-admin cluster plan
这将向您显示计划更改的结果。 Riak 让您在执行操作之前查看有目的的更改。
如果提案看起来正确,请提交更改:
<pre>riak-admin cluster commit</pre> <pre>Cluster changes committed</pre>
我们可以通过键入以下内容来查看新的集群组:
riak-admin member-status
对其他节点重复该过程以形成完整的集群组。
优化设置
现在我们已经设置好了,重要的是我们要返回并修复一些不适合我们目的的设置。
我们需要更改的一件事是我们在启动 Riak 时被警告过的“ulimit”设置。 我们将创建一个文件来永久更改此设置:
<pre>nano /etc/default/riak</pre>
添加下面这行,每次计算机启动Riak时都会执行:
<pre>ulimit -n 65536</pre>
保存并关闭文件。
接下来,我们需要看看 Riak 认为我们应该优化什么:
<pre>riak-admin diag</pre> <pre>[critical] vm.swappiness is 60, should be no more than 0
[关键] net.core.wmem_default 为 229376,至少应为 8388608 [关键] net.core.rmem_default 为 229376,应至少为 8388608 [关键] net.core.netdev_max_backlog 为 1000,应至少为 10000 [关键] ] net.core.somaxconn 为 128,应至少为 4000 [关键] net.ipv4.tcp_max_syn_backlog 为 2048,应至少为 40000 [关键] net.ipv4.tcp_fin_timeout 为 60,应不超过 15 [关键] net.ipv4.tcp_tw_reuse 为 0,应为 1 [注意] 数据目录 /var/lib/riak/bitcask 未使用 'noatime' 挂载。 请使用“noatime”标志重新安装其磁盘以提高性能。
您可能还会看到大量消息,其中第一个以:
[warning] The following preflists do not satisfy the n_val:
这意味着您的集群没有足够的节点来正确传播我们的数据。 如果我们将更多节点加入我们的集群,这些消息将消失。
我们将努力调整所有“关键”通知。 它们都可以这样调整:
<pre>sysctl <span class="highlight">setting</span>=<span class="highlight">value</span></pre>
每个命令将取决于“riak-admin diag”程序的输出,但将遵循相同的格式。
重新运行诊断命令以查看值是否已修复:
<pre>riak-admin diag</pre> <pre>[notice] Data directory /var/lib/riak/bitcask is not mounted with 'noatime'. Please remount its disk with the 'noatime' flag to improve performance.</pre>
我们可以放心地忽略通知消息。 我们的新价值观已经解决了我们节点的问题。
这些值只存在于当前会话中。 为了使值保持不变,我们需要编辑“sysctl.conf”文件:
<pre>nano /etc/sysctl.conf</pre>
搜索每个不同的键并按照“riak-admin diag”命令的建议调整值。 如果设置不存在,请将它们添加到列表底部。
<pre><span class="highlight">setting</span>=<span class="highlight">value</span></pre>
我们的节点现在配置正确。 在每台机器上重复上述步骤以继续。
测试集群
我们可以添加一个文件来轻松地测试我们的集群。 首先,获取您想要使用的图像。 我们将使用 DigitalOcean 网站上的图片:
<pre>cd ~
wget https://www.digitalocean.com/assets/v2/footer_mascott.png
现在我们可以使用以下命令将图像放入我们的集群中。
将 IP 命令替换为您节点的 IP 地址,并将端口替换为“/etc/riak/app.config”文件中的 http 端口。 默认情况下,它应该是“8098”:
<pre>curl -XPUT http://<span class="highlight">IPAddress</span>:<span class="highlight">Port</span>/riak/images/sammy.png -H "Content-type: image/png" --data-binary @footer_mascott.png</pre>
现在,您应该能够通过将浏览器指向命令中的 url 来查看您的图像:
<pre>http://<span class="highlight">IPAddress</span>:<span class="highlight">Port</span>/riak/images/sammy.png</pre>
您应该能够看到图像。
结论
您现在应该已经正确安装和配置了 Riak 集群。 您的集群现在将自动在配置的节点之间分配您的数据。