叶落风随 發表於 2023-8-7 00:00:00

详解CentOS 6.5搭建Redis3.2.8单机分布式集群

<p>
        前言</p>
<p>
        最近在服务器上搭建了一套Redis3.0伪分布式集群,发现一个问题,就是Shell脚本编写能力和运维工具的重要性亟待提高。</p>
<p>
        <strong>集群环境安装</strong></p>
<p>
        1.安装Redis</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_264963">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cd</code> <code class="bash plain">/usr/local</code> <code class="bash comments">#安装目录</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">$ wget http:</code><code class="bash plain">//download</code><code class="bash plain">.redis.io</code><code class="bash plain">/releases/redis-3</code><code class="bash plain">.2.8.</code><code class="bash functions">tar</code><code class="bash plain">.gz</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">tar</code> <code class="bash plain">xzf redis-3.2.8.</code><code class="bash functions">tar</code><code class="bash plain">.gz</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">$ </code><code class="bash functions">mv</code> <code class="bash plain">redis-3.2.8/ redis</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cd</code> <code class="bash plain">redis</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash plain">$ </code><code class="bash functions">make</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">make</code> <code class="bash functions">install</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        注意:官方给的命令少了make install,导致redis-server只能在redis的src目录下使用</p>
<p>
        2.安装Ruby&amp;rubygems</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_517110">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ yum </code><code class="bash functions">install</code> <code class="bash plain">ruby ruby-devel rubygems</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        3.创建集群环境</p>
<p>
        创建集群需要的目录[至少需要6个,3个master,3个slave,公式6+2N]</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_461822">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">mkdir</code> <code class="bash plain">-p </code><code class="bash plain">/usr/local/redis/cluster/16001/</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">$ </code><code class="bash functions">mkdir</code> <code class="bash plain">-p </code><code class="bash plain">/usr/local/redis/cluster/16002/</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">mkdir</code> <code class="bash plain">-p </code><code class="bash plain">/usr/local/redis/cluster/16003/</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">$ </code><code class="bash functions">mkdir</code> <code class="bash plain">-p </code><code class="bash plain">/usr/local/redis/cluster/16004/</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">mkdir</code> <code class="bash plain">-p </code><code class="bash plain">/usr/local/redis/cluster/16005/</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash plain">$ </code><code class="bash functions">mkdir</code> <code class="bash plain">-p </code><code class="bash plain">/usr/local/redis/cluster/16006/</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        复制redis.conf到每个节点下</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_149236">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cp</code> <code class="bash plain">/usr/local/redis/redis</code><code class="bash plain">.conf </code><code class="bash plain">/usr/local/redis/cluster/16001/redis</code><code class="bash plain">.conf</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cp</code> <code class="bash plain">/usr/local/redis/redis</code><code class="bash plain">.conf </code><code class="bash plain">/usr/local/redis/cluster/16002/redis</code><code class="bash plain">.conf</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cp</code> <code class="bash plain">/usr/local/redis/redis</code><code class="bash plain">.conf </code><code class="bash plain">/usr/local/redis/cluster/16003/redis</code><code class="bash plain">.conf</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cp</code> <code class="bash plain">/usr/local/redis/redis</code><code class="bash plain">.conf </code><code class="bash plain">/usr/local/redis/cluster/16004/redis</code><code class="bash plain">.conf</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cp</code> <code class="bash plain">/usr/local/redis/redis</code><code class="bash plain">.conf </code><code class="bash plain">/usr/local/redis/cluster/16005/redis</code><code class="bash plain">.conf</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cp</code> <code class="bash plain">/usr/local/redis/redis</code><code class="bash plain">.conf </code><code class="bash plain">/usr/local/redis/cluster/16006/redis</code><code class="bash plain">.conf</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        然后修改每个节点下的redis.conf,主要修改内容如下</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_832222">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">port &lt;端口&gt;</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                         </div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="plain plain">daemonize yes</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                         </div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="plain plain">cluster-enabled yes</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                         </div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="plain plain">cluster-config-file nodes.conf</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                         </div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="plain plain">cluster-node-timeout 5000</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                         </div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="plain plain">logfile "redis-server.log"</code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                         </div>
                                                                <div class="line number13 index12 alt2">
                                                                        <code class="plain plain">appendonly yes</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        4.远程访问</p>
<p>
        ①远程访问配置</p>
<p>
        如果要远程访问,需要修改redis.conf中的bind</p>
<p>
        默认是127.0.0.1回环地址,如果要远程访问,需要修改成局域网地址 或者 修改成 0.0.0.0,当然也可以使用双地址模式,比如我的局域网地址是192.168.12.213,此外,服务器上的ip一般是固定的,那么可以修改成如下方式</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_311267">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ bind 192.168.12.213 127.0.0.1 </code><code class="bash comments">#推荐</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">$ bind 0.0.0.0 </code><code class="bash comments">#不推荐</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        具体请参考:Redis开启远程登录连接</p>
<p>
        ②.开放防火墙端口</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_270712">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ service iptables status </code><code class="bash comments">#查看防火墙状态</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                         </div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">$ iptables -I INPUT -p tcp --dport 16001 -j ACCEPT</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">$ iptables -I INPUT -p tcp --dport 16002 -j ACCEPT</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">$ iptables -I INPUT -p tcp --dport 16003 -j ACCEPT</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash plain">$ iptables -I INPUT -p tcp --dport 16004 -j ACCEPT</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="bash plain">$ iptables -I INPUT -p tcp --dport 16005 -j ACCEPT</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="bash plain">$ iptables -I INPUT -p tcp --dport 16006 -j ACCEPT</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        ④telnet链接</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_42669">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">telnet 192.168.12.213 16001</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        5.启动Redis实例</p>
<p>
        #分别启动这6个redis实例(此时,节点均以Redis Cluster的方式运行,但并没有自动构建集群,因为还处于“我不认识你,你不属于我”的状态,它们每个都是孤零零的Redis节点,或者说只包含了一个节点的集群)</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_810526">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cd</code> <code class="bash plain">/usr/local/redis/cluster/16001</code> <code class="bash plain">&amp;&amp; redis-server redis.conf &gt; redis-server.log 2&gt;&amp;1 &amp;</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                         </div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cd</code> <code class="bash plain">/usr/local/redis/cluster/16002</code> <code class="bash plain">&amp;&amp; redis-server redis.conf &gt; redis-server.log 2&gt;&amp;1 &amp;</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                         </div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cd</code> <code class="bash plain">/usr/local/redis/cluster/16003</code> <code class="bash plain">&amp;&amp; redis-server redis.conf &gt; redis-server.log 2&gt;&amp;1 &amp;</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                         </div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cd</code> <code class="bash plain">/usr/local/redis/cluster/16004</code> <code class="bash plain">&amp;&amp; redis-server redis.conf &gt; redis-server.log 2&gt;&amp;1 &amp;</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                         </div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cd</code> <code class="bash plain">/usr/local/redis/cluster/16005</code> <code class="bash plain">&amp;&amp; redis-server redis.conf &gt; redis-server.log 2&gt;&amp;1 &amp;</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                         </div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cd</code> <code class="bash plain">/usr/local/redis/cluster/16006</code> <code class="bash plain">&amp;&amp; redis-server redis.conf &gt; redis-server.log 2&gt;&amp;1 &amp;</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        命令中的 2&gt;&amp;1表示标准错误流输入到标准输出流中,也就是输入到每个节点的redis-server.log中,至于最后的 &amp;表示是否后台启动,在linux上redis-server本身就是后台启动,因此这个 &amp; 可以不加</p>
<p>
        当然,我们可以通过 tail命令监听每个redis-server.log的变化</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_475869">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash functions">tail</code> <code class="bash plain">-f </code><code class="bash plain">/usr/local/redis/cluster/16002/redis-server</code><code class="bash plain">.log</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        上面的所有redis启动之后,我们可以通过如下命令中的任何一条命令进行检测</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_728366">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">netstat</code> <code class="bash plain">-lntp | </code><code class="bash functions">grep</code> <code class="bash string">'redis*'</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                         </div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">ps</code> <code class="bash plain">-e | </code><code class="bash functions">grep</code> <code class="bash string">'redis*'</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                         </div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">lsof</code> <code class="bash plain">-i 4 TCP</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                         </div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="bash plain">$ hping --scan 16001-16006 -S 192.168.12.213</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                         </div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="bash plain">$ nmap -sS 192.168.12.213 -p 1600-16007</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <strong>创建集群</strong></p>
<p>
        1.安装redis gem插件</p>
<p>
        我们需要安装支持redis的gem工具,否则会报错</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_225932">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ gem </code><code class="bash functions">install</code> <code class="bash plain">redis --version 3.0.0</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        注意:gem install redis --version 3.0.0 失败的话,需要修改一下gem的源</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_156866">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">gem sources --remove https://rubygems.org/</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain plain">gem sources -a https://ruby.taobao.org/</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        2.创建集群</p>
<p>
        让上面的实例互相通讯(1 表示为每个master分配一个salve)</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_711289">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash plain">/usr/local/redis/src/redis-trib</code><code class="bash plain">.rb create --replicas 1 \</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">127.0.0.1:16001 \</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">127.0.0.1:16002 \</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">127.0.0.1:16003 \</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">127.0.0.1:16004 \</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash plain">127.0.0.1:16005 \</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="bash plain">127.0.0.1:16006</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        3.集群信息查看</p>
<p>
        集群创建完成,可以使用下面的命令查看相关信息:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_317728">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash comments">#查看集群目前状况</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">$ redis-cli -c -p 16001</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash comments">#关闭其中一个节点</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">$ redis-cli -p 16001 </code><code class="bash functions">shutdown</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash comments">#打印集群的信息</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash plain">$ redis-cli cluster info</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="bash comments">#列出集群当前已知的所有节点(node),以及这些节点的相关信息。</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="bash plain">$ redis-cli cluster nodes</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        输出的信息:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_827243">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">127.0.0.1:16002 master - 0 1439345771781 2 connected 5461-10922</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain plain">127.0.0.1:16003 master - 0 1439345772286 3 connected 10923-16383</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="plain plain">127.0.0.1:16001 myself,master - 0 0 1 connected 0-5460</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="plain plain">127.0.0.1:16004 slave 2566ea486fc30c911aafaf1b71130fd24a38dba9 0 1439345772791 4 connected</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="plain plain">127.0.0.1:16005 slave edea1e50bd224c6895b1904bce79e83fa07d6017 0 1439345772286 5 connected</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="plain plain">127.0.0.1:16006 slave ab06e033698627ce0ecd4c8c645585a1ae70cc84 0 1439345771276 6 connected</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        从上面的信息可以明显看到哪些是主节点、从节点。</p>
<p>
        4.保存集群信息</p>
<p>
        将节点的配置文件保存到硬盘里</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_856632">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ redis-cli cluster saveconfig</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        连接端口(可以使用其他端口测试16001 -&gt; 16006)</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_818593">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ redis-cli -c -p 16001</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">$ 127.0.0.1:16001&gt; </code><code class="bash functions">set</code> <code class="bash plain">key001 v001</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">$ 127.0.0.1:16001&gt; get key001</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <strong>选举端口检测</strong></p>
<p>
        如果细心的话,你就会发现,在我们创建了集群之后,启动了一些新的端口</p>
<p>
        通过如下命令</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_808715">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash functions">netstat</code> <code class="bash plain">-lntp | </code><code class="bash functions">grep</code> <code class="bash string">'redis'</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        你就会找到如下端口,这些端口是用来进行选举和主备切换的</p>
<p>
        <code>26001 26002 26003 26004 26005 26006</code></p>
<p>
        以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。</p>
<p>
        原文链接:https://my.oschina.net/ososchina/blog/856678</p>
頁: [1]
查看完整版本: 详解CentOS 6.5搭建Redis3.2.8单机分布式集群