Centos7.3 RabbitMQ分布式集群搭建示例
<p>本文介绍了Centos7.3 RabbitMQ分布式集群搭建示例,分享给大家,具体如下:</p>
<p>
<strong>注意事项</strong></p>
<p>
centos 7.x 关闭firewall</p>
<p>
<strong>三台机器:</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterplain" id="highlighter_637819">
<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="plain plain">172.17.250.97 rabbiMQ01</code>
</div>
<div class="line number2 index1 alt1">
<code class="plain plain">172.17.250.98 rabbiMQ03</code>
</div>
<div class="line number3 index2 alt2">
<code class="plain plain">172.17.250.99 rabbiMQ02</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>配置 hosts</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterplain" id="highlighter_257030">
<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="plain plain">172.17.250.97 fz-rabbitMQ01</code>
</div>
<div class="line number2 index1 alt1">
<code class="plain plain">172.17.250.99 fz-rabbitMQ02</code>
</div>
<div class="line number3 index2 alt2">
<code class="plain plain">172.17.250.98 fz-rabbitMQ03</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<br><div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_640417">
<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">$ systemctl stop firewalld.service </code><code class="bash comments"># 停止firewall</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
不想关闭防火墙,就开放15672端口,设置之后可以通过网页方式管理MQ</p>
<p>
<strong>安装安装iptables防火墙</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_852813">
<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">iptables-services</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="syntaxhighlighterbash" id="highlighter_556521">
<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">iptables -I INPUT -p tcp --dport 5672 -j ACCEPT</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">iptables -I INPUT -p tcp --dport 15672 -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>
保存配置</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterplain" id="highlighter_324253">
<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="plain plain">service iptables save</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_687999">
<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="plain plain">systemctl restart iptables.service</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_694327">
<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="plain plain">systemctl enable iptables.service</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<span><strong>安装</strong></span></p>
<p>
<strong>安装 Erlang</strong></p>
<p>
RabbitMQ 安装需要依赖 Erlang 环境</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_637327">
<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>
</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/src</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">$ wget http:</code><code class="bash plain">//www</code><code class="bash plain">.rabbitmq.com</code><code class="bash plain">/releases/erlang/erlang-19</code><code class="bash plain">.0.4-1.el7.centos.x86_64.rpm</code>
</div>
<div class="line number3 index2 alt2">
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">$ yum </code><code class="bash functions">install</code> <code class="bash plain">erlang-19.0.4-1.el7.centos.x86_64.rpm -y</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>安装 RabbitMQ</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_637142">
<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">$ </code><code class="bash functions">cd</code> <code class="bash plain">/usr/local/src</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">$ wget http:</code><code class="bash plain">//www</code><code class="bash plain">.rabbitmq.com</code><code class="bash plain">/releases/rabbitmq-server/v3</code><code class="bash plain">.6.10</code><code class="bash plain">/rabbitmq-server-3</code><code class="bash plain">.6.10-1.el7.noarch.rpm</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">$ yum </code><code class="bash functions">install</code> <code class="bash plain">rabbitmq-server-3.6.10-1.el7.noarch.rpm -y</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
仅仅rabbitMQ01运行:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_269371">
<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">rabbitmq-server -detached</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="syntaxhighlighterbash" id="highlighter_749793">
<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">rabbitmqctl status</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
查看rabbitmq是否正常启动。</p>
<p>
<strong>创建集群:</strong></p>
<p>
首先搞个密钥认证:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_295073">
<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>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain"></code><code class="bash comments"># ssh-keygen</code>
</div>
<div class="line number2 index1 alt1">
</div>
<div class="line number3 index2 alt2">
<code class="bash plain"></code><code class="bash comments"># ssh-copy-id -pXXXXX -i ~/.ssh/id_rsa.pub </code>
</div>
<div class="line number4 index3 alt1">
</div>
<div class="line number5 index4 alt2">
<code class="bash plain"></code><code class="bash comments"># ssh-copy-id -pXXXXX -i ~/.ssh/id_rsa.pub </code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
读取rabbitMQ01节点的cookie, 并复制到其他节点(节点之间通过cookie确定相互是否可通信)。 cookie存放在/var/lib/rabbitmq/.erlang.cookie或者$HOME/.erlang.cookie中。</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_25059">
<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 comments"># scp -PXXXXX /var/lib/rabbitmq/.erlang.cookie 172.17.250.99:/var/lib/rabbitmq</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">/etc/bashrc</code><code class="bash plain">:行94: soruce: 未找到命令</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">.erlang.cookie 100% 20 0.0KB</code><code class="bash plain">/s</code> <code class="bash plain">00:00 </code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain"></code><code class="bash comments"># scp -PXXXXX /var/lib/rabbitmq/.erlang.cookie 172.17.250.98:/var/lib/rabbitmq</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash plain">/etc/bashrc</code><code class="bash plain">:行94: soruce: 未找到命令</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash plain">.erlang.cookie</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>
<div class="jb51code">
<div>
<div class="syntaxhighlighterplain" id="highlighter_385520">
<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="plain plain">rabbitmq-server -detached</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>
分别在rabbitMQ02和rabbitMQ03上面执行即可</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterplain" id="highlighter_60038">
<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="plain plain">rabbitmqctl stop_app </code>
</div>
<div class="line number2 index1 alt1">
</div>
<div class="line number3 index2 alt2">
<code class="plain plain">rabbitmqctl reset </code>
</div>
<div class="line number4 index3 alt1">
</div>
<div class="line number5 index4 alt2">
<code class="plain plain">rabbitmqctl join_cluster rabbit@fz-rabbitMQ01 </code>
</div>
<div class="line number6 index5 alt1">
</div>
<div class="line number7 index6 alt2">
<code class="plain plain">rabbitmqctl start_app</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
最后通过rabbitmqctl cluster_status查看集群的状态信息:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterplain" id="highlighter_702972">
<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="plain plain"># rabbitmqctl cluster_status</code>
</div>
<div class="line number2 index1 alt1">
<code class="plain plain">Cluster status of node 'rabbit@fz-rabbitMQ01'</code>
</div>
<div class="line number3 index2 alt2">
<code class="plain plain">[{nodes,[{disc,['rabbit@fz-rabbitMQ01','rabbit@fz-rabbitMQ02',</code>
</div>
<div class="line number4 index3 alt1">
<code class="plain spaces"> </code><code class="plain plain">'rabbit@fz-rabbitMQ03']}]},</code>
</div>
<div class="line number5 index4 alt2">
<code class="plain spaces"> </code><code class="plain plain">{running_nodes,['rabbit@fz-rabbitMQ03','rabbit@fz-rabbitMQ02',</code>
</div>
<div class="line number6 index5 alt1">
<code class="plain spaces"> </code><code class="plain plain">'rabbit@fz-rabbitMQ01']},</code>
</div>
<div class="line number7 index6 alt2">
<code class="plain spaces"> </code><code class="plain plain">{cluster_name,<<"">>},</code>
</div>
<div class="line number8 index7 alt1">
<code class="plain spaces"> </code><code class="plain plain">{partitions,[]},</code>
</div>
<div class="line number9 index8 alt2">
<code class="plain spaces"> </code><code class="plain plain">{alarms,[{'rabbit@fz-rabbitMQ03',[]},</code>
</div>
<div class="line number10 index9 alt1">
<code class="plain spaces"> </code><code class="plain plain">{'rabbit@fz-rabbitMQ02',[]},</code>
</div>
<div class="line number11 index10 alt2">
<code class="plain spaces"> </code><code class="plain plain">{'rabbit@fz-rabbitMQ01',[]}]}]</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
在访问web(http://xxx.xxx.xxx.xxx:15672)时, 如果在Overview中的Nodes部分看到“Node statistics not available”的信息,说明在该节点上web管理插件还未启用。</p>
<p>
3个节点都需要运行:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterplain" id="highlighter_96350">
<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>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="plain plain"># rabbitmq-plugins enable rabbitmq_management</code>
</div>
<div class="line number2 index1 alt1">
<code class="plain plain">The following plugins have been enabled:</code>
</div>
<div class="line number3 index2 alt2">
<code class="plain spaces"> </code><code class="plain plain">amqp_client</code>
</div>
<div class="line number4 index3 alt1">
<code class="plain spaces"> </code><code class="plain plain">cowlib</code>
</div>
<div class="line number5 index4 alt2">
<code class="plain spaces"> </code><code class="plain plain">cowboy</code>
</div>
<div class="line number6 index5 alt1">
<code class="plain spaces"> </code><code class="plain plain">rabbitmq_web_dispatch</code>
</div>
<div class="line number7 index6 alt2">
<code class="plain spaces"> </code><code class="plain plain">rabbitmq_management_agent</code>
</div>
<div class="line number8 index7 alt1">
<code class="plain spaces"> </code><code class="plain plain">rabbitmq_management</code>
</div>
<div class="line number9 index8 alt2">
</div>
<div class="line number10 index9 alt1">
<code class="plain plain">Applying plugin configuration to rabbit@fz-rabbitMQ01... started 6 plugins.</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>
<blockquote>
<p>
Error: unable to connect to node '': nodedown</p>
</blockquote>
<p>
解决方案:执行如下两条命令:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_125847">
<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 comments"># /sbin/service rabbitmq-server stop</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash comments"># /sbin/service rabbitmq-server start</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_334893">
<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>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="plain plain">rabbitmqctl stop_app </code>
</div>
<div class="line number2 index1 alt1">
<code class="plain plain">rabbitmqctl reset </code>
</div>
<div class="line number3 index2 alt2">
<code class="plain plain">rabbitmqctl join_cluster rabbit@fz-rabbitMQ01 </code>
</div>
<div class="line number4 index3 alt1">
<code class="plain plain">rabbitmqctl start_app</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>
原文链接:http://www.okay686.cn/1079.html</p>
頁:
[1]