查看yarn状态的命令(查看yarn application)

查看yarn状态的命令(查看yarn application)p style margin 0 0 0 28px text align justify font family Calibri font size 14px text wrap wrap span style font size 14px 步骤 1 span p

大家好,我是讯享网,很高兴认识大家。




讯享网

 <p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">步骤1. </span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">将正常使用的</span><span style="font-family:Calibri">hive</span><span style="font-family:宋体">目录复制到安装</span><span style="font-family:Calibri">hiveserver</span></span><span style="font-size: 14px">2</span><span style="font-family: 宋体;font-size: 14px">的节点</span><span style="font-size: 14px">(hd3</span><span style="font-family: 宋体;font-size: 14px">节点</span><span style="font-size: 14px">)</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">scp -r /opt/hive hd3:/opt/</span></p><p style=";text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">编辑</span><span style="font-family:Calibri">hive</span><span style="font-family:宋体">配置文件</span></span><span style="font-size: 14px">/opt/hive/conf/hive-site.xml</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">步骤1. </span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">在所有</span><span style="font-family:Calibri">hiveserver</span></span><span style="font-size: 14px">2</span><span style="font-family: 宋体;font-size: 14px">节点删除如下内容</span><span style="font-size: 14px"><span style="font-family:宋体">:</span></span><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">      &lt;property&gt;</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">       &lt;name&gt;hive.server2.active.passive.ha.enable&lt;/name&gt;</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">            &lt;value&gt;true&lt;/value&gt;;</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">       &lt;/property&gt;</span></p><p style=";text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">  </span> <span style="font-size: 14px">  &lt;property&gt;</span></p><p style=";text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">      </span> <span style="font-size: 14px">  &lt;name&gt;hive.server2.thrift.bind.host&lt;/name&gt;</span></p><p style=";text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">      </span> <span style="font-size: 14px">  &lt;value&gt;172.16.104.226&lt;/value&gt;</span></p><p style=";text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">  </span> <span style="font-size: 14px">  &lt;/property&gt;</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-family: 宋体;font-size: 14px"><span style="font-family:Calibri">ip</span><span style="font-family:宋体">为</span><span style="font-family:Calibri">hiveserver</span></span><span style="font-size: 14px">2</span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">本机</span><span style="font-family:Calibri">ip</span></span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">在所有</span><span style="font-family:Calibri">hiveserver</span></span><span style="font-size: 14px">2</span><span style="font-family: 宋体;font-size: 14px">节点确认如下参数是否一致</span><span style="font-size: 14px"><span style="font-family:宋体">,</span></span><span style="font-family: 宋体;font-size: 14px">不一致请修改</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">   &lt;property&gt;</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">        &lt;name&gt;hive.server2.zookeeper.namespace&lt;/name&gt;</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">        &lt;value&gt;hiveserver2_zk&lt;/value&gt;</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">    &lt;/property&gt;</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">------------------------</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">    &lt;property&gt;</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">        &lt;name&gt;hive.server2.support.dynamic.service.discovery&lt;/name&gt;</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">        &lt;value&gt;true&lt;/value&gt;</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">    &lt;/property&gt;</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">步骤1. </span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">登陆</span><span style="font-family:Calibri">freeipa</span></span><span style="font-size: 14px"><span style="font-family:宋体">,</span></span><span style="font-family: 宋体;font-size: 14px">依次点击身份</span><span style="font-size: 14px">----&gt;</span><span style="font-family: 宋体;font-size: 14px">服务</span><span style="font-size: 14px">----&gt;</span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">添加</span><span style="font-family:Calibri">hd</span></span><span style="font-size: 14px">3</span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">的</span><span style="font-family:Calibri">principal</span></span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-family: 宋体;font-size: 14px">如下图红框中的内容</span><span style="font-size: 14px"><span style="font-family:宋体">。</span></span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">其中</span><span style="font-family:Calibri">hive</span><span style="font-family:宋体">为服务名称</span></span><span style="font-size: 14px"><span style="font-family:宋体">,</span>hd3.ststack.com</span><span style="font-family: 宋体;font-size: 14px">为主机名</span><span style="font-size: 14px"><span style="font-family:宋体">,</span></span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:Calibri">DRSTACK.COM</span><span style="font-family:宋体">为域名</span></span><span style="font-size: 14px"><span style="font-family:宋体">,</span></span><span style="font-family: 宋体;font-size: 14px">请根据实际修改</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><img src="https://yunche.pro/blog/zb_users/upload/2023/10/60.png" alt="image.png"><span style="font-size: 14px"> </span></p><p style=";text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">步骤2. </span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">登陆</span><span style="font-family:Calibri">hd</span></span><span style="font-size: 14px">3</span><span style="font-family: 宋体;font-size: 14px">节点</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">步骤3. </span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">执行</span><span style="font-family:Calibri">kinit</span></span><span style="font-size: 14px"> </span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:Calibri">admin</span></span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-family: 宋体;font-size: 14px"><span style="font-family:Calibri">ipa</span></span><span style="font-size: 14px">-</span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:Calibri">get</span></span><span style="font-size: 14px">keytab -s hd.dtstack.com -p </span><span style="text-decoration:underline;"><span style="color: #0000FF">hive/</span></span><span style="font-size: 14px"> -k /etc/security/keytab/hive.keytab</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">步骤4. </span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">修改</span><span style="font-family:Calibri">keytab</span><span style="font-family:宋体">权限为</span></span><span style="font-size: 14px">644<span style="font-family:宋体">,</span></span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">属组为</span><span style="font-family:Calibri">hiv</span></span><span style="font-size: 14px">e:hive</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">chmod 644 /etc/security/keytab/hive.keytab</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">chown hive:hive /etc/security/keytab/hive.keytab</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><img src="https://yunche.pro/blog/zb_users/upload/2023/10/64.png" alt="image.png" width="920" height="344" style="width: 920px; height: 344px;"><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">步骤1. </span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">进入原</span><span style="font-family:Calibri">hiveserver</span></span><span style="font-size: 14px">2</span><span style="font-family: 宋体;font-size: 14px">安装目录</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">步骤2. </span><span style="font-size: 14px">scp -r /opt/</span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:Calibri">ranger-2.3.0-hive-plugin</span></span><span style="font-size: 14px"> hd3:/opt/</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">步骤3. </span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">编辑</span> <span style="font-family:Calibri">install.properties</span></span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-family: 宋体;font-size: 14px"><span style="font-family:Calibri">vi</span></span><span style="font-size: 14px"> /</span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:Calibri">opt</span></span><span style="font-size: 14px">/</span><span style="font-size: 14px">ranger-2.3.0-hive-plugin</span><span style="font-size: 14px">/ install.properties</span></p><p style="margin: 0px 0px 0px 28px; text-align: left; font-family: Calibri; font-size: 14px; text-wrap: wrap; text-indent: 28px;"><span style="font-family: 宋体;font-size: 14px">修改红框中的主机名为当前主机名</span><img src="https://yunche.pro/blog/zb_users/upload/2023/10/19.png" alt="image.png" width="927" height="91" style="width: 927px; height: 91px;"> </p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">步骤4. </span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">执行初始化脚本</span><span style="font-family:Calibri">enable-hive-plugin.s</span></span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">https://yunche.pro/blog/enable-hive-plugin.s</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">步骤5. </span><span style="font-family: 宋体;font-size: 14px">检查文件是否正常生成</span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><img src="https://yunche.pro/blog/zb_users/upload/2023/10/59.png" alt="image.png" width="774" height="342" style="width: 774px; height: 342px;"><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">步骤6. </span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">登陆</span><span style="font-family:Calibri">ranger</span><span style="font-family:宋体">界面</span></span><span style="font-size: 14px">,</span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">点击</span><span style="font-family:Calibri">Au</span></span><span style="font-size: 14px">dit----&gt;PLugin</span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:Calibri">s</span><span style="font-family:宋体">查看权限是否同步</span></span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><img src="https://yunche.pro/blog/zb_users/upload/2023/10/12.png" alt="image.png" width="818" height="286" style="width: 818px; height: 286px;"><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">步骤1. </span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">执行如下命令启动</span><span style="font-family:Calibri">hiveserver</span></span><span style="font-size: 14px">2</span></p><p style=";font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">sudo -u hive /opt/hive/bin/hive --service hiveserver2&gt;/var/log/hive/hiveserver2.log 2&gt;&amp;1 &amp;</span></p><p style=";text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">步骤1. </span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">登陆</span><span style="font-family:Calibri">zk</span><span style="font-family:宋体">节点</span></span></p><p style=";text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">cd /opt/zookeeper/bin</span></p><p style=";text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">https://yunche.pro/blog/zkCli.sh -server hd2</span></p><p style=";text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">步骤2. </span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">执行</span><span style="font-family:Calibri">ls /hiveserver2_zk</span></span><span style="font-size: 14px"><span style="font-family:宋体">,</span></span><span style="font-family: 宋体;font-size: 14px">结果如下图说明已经成功</span></p><p style=";font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><img src="https://yunche.pro/blog/zb_users/upload/2023/10/35.png" alt="image.png" width="840" height="63" style="width: 840px; height: 63px;"><span style="font-size: 14px"> </span></p><p style=";font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">步骤3. </span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">登陆节点执行</span><span style="font-family:Calibri">kinit</span><span style="font-family:宋体">认证</span></span></p><p style=";text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px"><img src="https://yunche.pro/blog/zb_users/upload/2023/10/99.png" alt="image.png" width="811" height="151" style="width: 811px; height: 151px;"> </span></p><p style="margin: 0 0 0 28px;text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap"><span style="font-size: 14px">步骤4. </span><span style="font-family: 宋体;font-size: 14px"><span style="font-family:宋体">执行</span><span style="font-family:Calibri">beeline</span><span style="font-family:宋体">命令查看是否可用</span></span></p><p style=";font-family: Calibri;font-size: 14px;text-wrap: wrap;text-indent: 28px"><span style="font-size: 14px">beeline -u 'jdbc:hive2://hd1:2181,hd3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk'</span></p><p style=";text-align: justify;font-family: Calibri;font-size: 14px;text-wrap: wrap">        <img src="https://yunche.pro/blog/zb_users/upload/2023/10/90.png" alt="image.png" width="1" height="1" style="width: 1px; height: 1px;"></p><p><br></p> <p>客户想要将IDC服务器的数据库端口暴漏在公网上,然后其他业务来调数据库接口。为了保证安全,只开放指定的公网ip访问。</p><p>由于客户的IDC服务器与云ECS服务器通过专线打通,所以只需要在云ECS服务器上部署一个Nginx服务,把SLB的公网端口转发到IDC服务器数据库端口。同时,为了保证数据库的安全,须在SLB的端口监听上开启访问控制功能。</p><p><strong>SLB--&gt;Nginx--&gt;IDC数据库</strong></p><p><span style="text-wrap: nowrap;"></span></p><p><span style="text-wrap: nowrap;"></span><br></p><p><span style="text-wrap: nowrap;">在一台安装了sqlsplu客户端的服务器上进行连通性测试<br></span></p> <p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">说到集群,小伙伴们可能第一个问题是,如果我有一个</span> <span style="font-family:宋体">RabbitMQ 集群,那么是不是我的消息集群中的每一个实例都保存一份呢?</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">这其实就涉及到</span> <span style="font-family:宋体">RabbitMQ 集群的两种模式:</span></span></p><p style="margin: 0 0 0 48px;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">1)普通集群</span></p><p style="margin: 0 0 0 48px;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">2)镜像集群</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">普通集群模式,就是将</span> <span style="font-family:宋体">RabbitMQ 部署到多台服务器上,每个服务器启动一个 RabbitMQ 实例,多个实例之间进行消息通信。</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">此时我们创建的队列</span> <span style="font-family:宋体">Queue,它的元数据(主要就是 Queue 的一些配置信息)会在所有的 RabbitMQ 实例中进行同步,但是队列中的消息只会存在于一个 RabbitMQ 实例上,而不会同步到其他队列。</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">当我们消费消息的时候,如果连接到了另外一个实例,那么那个实例会通过元数据定位到</span> <span style="font-family:宋体">Queue 所在的位置,然后访问 Queue 所在的实例,拉取数据过来发送给消费者。</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">这种集群可以提高</span> <span style="font-family:宋体">RabbitMQ 的消息吞吐能力,但是无法保证高可用,因为一旦一个 RabbitMQ 实例挂了,消息就没法访问了,如果消息队列做了持久化,那么等 RabbitMQ 实例恢复后,就可以继续访问了;如果消息队列没做持久化,那么消息就丢了。</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="color: #;font-size: 16px">大致的流程图如下图:</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/35.png" alt="image.png"/></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">它和普通集群最大的区别在于</span> <span style="font-family:宋体">Queue 数据和原数据不再是单独存储在一台机器上,而是同时存储在多台机器上。也就是说每个 RabbitMQ 实例都有一份镜像数据(副本数据)。每次写入消息的时候都会自动把数据同步到多台实例上去,这样一旦其中一台机器发生故障,其他机器还有一份副本数据可以继续提供服务,也就实现了高可用。</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">大致流程图如下图:</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/54.png" alt="image.png"/></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">RabbitMQ 中的节点类型有两种:</span></p><p style="margin: 0 0 0 48px;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">1)RAM node:内存节点将所有的队列、交换机、绑定、用户、权限和 vhost 的元数据定义存储在内存中,好处是可以使得交换机和队列声明等操作速度更快。</span></p><p style="margin: 0 0 0 48px;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">2)Disk node:将元数据存储在磁盘中,单节点系统只允许磁盘类型的节点,防止重启 RabbitMQ 的时候,丢失系统的配置信息</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">RabbitMQ 要求在集群中至少有一个磁盘节点,所有其他节点可以是内存节点,当节点加入或者离开集群时,必须要将该变更通知到至少一个磁盘节点。如果集群中唯一的一个磁盘节点崩溃的话,集群仍然可以保持运行,但是无法进行其他操作(增删改查),直到节点恢复。为了确保集群信息的可靠性,或者在不确定使用磁盘节点还是内存节点的时候,建议直接用磁盘节点。</span></p><p style="margin: 0 0 0 48px;text-align: justify;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">系统系统:</span><span style="font-family:宋体">CentOS7 64位</span></span></p><p style="margin: 0 0 0 48px;text-align: justify;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">三台服务器:</span><span style="font-family:宋体">10.90.0.9/10/11</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">服务器规划</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">服务器用途主机名节点类型</span></p><div cellspacing="0" width="396"><tbody><tr><td valign="center" style="padding: 7px;border-left-width: 1px;border-left-color: windowtext;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px"><span style="font-size: 16px">10.90.0.9</span></p></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px"><span style="font-size: 16px">RabbitMQ 集群节点 2</span></p></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px"><span style="font-size: 16px">dev-big-data02</span></p></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px"><span style="font-size: 16px">磁盘节点</span></p></td></tr><tr><td valign="center" style="padding: 7px;border-left-width: 1px;border-left-color: windowtext;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px"><span style="font-size: 16px">10.90.0.10</span></p></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px"><span style="font-size: 16px">RabbitMQ 集群节点 3</span></p></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px"><span style="font-size: 16px">dev-big-data03</span></p></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px"><span style="font-size: 16px">磁盘节点</span></p></td></tr></tbody></div><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"># 下载erlang软件包源</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">wget </span><span style="text-decoration:underline;"><span style="color: #0000FF">https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm</span></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">sudo yum install epel-release -y</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"># 安装erlang软件包源</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">sudo rpm -Uvh erlang-solutions-1.0-1.noarch.rpm</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"># 安装erlang环境</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">sudo yum install erlang -y</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">验证</span><span style="font-family:宋体">:</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp;</span><img src="https://yunche.pro/blog/zb_users/upload/2023/11/15.png" alt="image.png"/></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"># 下载介质源</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">wget </span><span style="text-decoration:underline;"><span style="color: #0000FF">https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.9.16/rabbitmq-server-3.9.16-1.el7.noarch.rpm</span></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"># 安装介质源</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">yum install -y rabbitmq-server-3.9.16-1.el7.noarch.rpm</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"># 打开开启动</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">systemctl enable rabbitmq-server</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"># 启动服务</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">systemctl start rabbitmq-server</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"># 查看服务状态</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">systemctl status rabbitmq-server</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">验证:</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/08.png" alt="image.png"/></p><p style=";text-align: justify;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">RabbitMQ 集群是基于 erlang 进行同步的,在 erlang 的集群中各节点同步需要一个相同的 cookie,所以必须保证各节点 cookie 一致,不然节点之间就无法通信,</span><span style="color: #4D4D4D;font-size: 16px">,</span><span style="font-size: 16px"><span style="font-family:宋体">这个</span> <span style="font-family:宋体">cookie 默认存放在&nbsp;</span></span><span style="font-family: &#39;Courier New&#39;;font-size: 13px">/var/lib/rabbitmq/.erlang.cookie</span><span style="font-size: 16px">&nbsp;中。</span></p><p style=";text-align: justify;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">在任意一个节点中</span> <span style="font-family:宋体">copy&nbsp;</span></span><span style="font-family: &#39;Courier New&#39;;font-size: 13px">.erlang.cookie</span><span style="font-size: 16px">&nbsp;文件到其它所有节点,如在 node1 上进行 copy :</span></p><p style=";text-align: justify;font-family: 宋体;font-size: 16px;text-wrap: wrap"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/23.png" alt="image.png"/></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><strong><span style="color: #FF0000">注意:</span></strong><strong><span style="color: #FF0000"><br/></span></strong><strong><span style="color: #FF0000">&nbsp;&nbsp; &nbsp; </span></strong><strong><span style="color: #4D4D4D"><span style="font-family:宋体">各节点都必须停止</span>MQ服务</span></strong></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp; &nbsp; &nbsp;拷贝过去之后权限要进行修改,否则rabbitmq服务会无法启动</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp; &nbsp; &nbsp;chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie &nbsp; &nbsp; &nbsp; &nbsp;//属主,属组</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp; &nbsp; &nbsp;chmod 400&nbsp; /var/lib/rabbitmq/.erlang.cookie &nbsp; &nbsp; &nbsp; &nbsp; // 修改文件权限</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">重启所有服务</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">systemctl restart&nbsp; rabbitmq-server</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="color: #;font-size: 16px"><span style="font-family:宋体">将</span> <span style="font-family:宋体">node2、node3&nbsp; 节点加入 node1 节点集群中,</span></span><strong><span style="font-family:宋体">在</span> node2、node3中分别执行以下命令:</strong></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><strong># rabbitmqctl stop_app</strong><strong><br/></strong><strong># rabbitmqctl join_cluster rabbit@node1</strong><strong><br/></strong><strong># rabbitmqctl start_app</strong></p><p style="margin: 0 0 0 48px;text-align: justify;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">默认</span> <span style="font-family:宋体">RabbitMQ 启动后是磁盘节点,在这个 cluster 下,node1、node2 和 node3 都是是磁盘节点。</span></span></p><p style="margin: 0 0 0 48px;text-align: justify;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">如果要使</span> <span style="font-family:宋体">node2、node3 都是内存节点,加上&nbsp;</span></span><span style="font-family: &#39;Courier New&#39;;font-size: 13px">--ram</span><span style="font-size: 16px">&nbsp;参数即可,如&nbsp;</span><span style="font-family: &#39;Courier New&#39;;font-size: 13px">rabbitmqctl join_cluster --ram rabbit@node1</span><span style="font-size: 16px">。</span></p><p style="margin: 0 0 0 48px;text-align: justify;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">如果想要更改节点类型,可以使用命令</span><span style="font-family:宋体">&nbsp;</span></span><span style="font-family: &#39;Courier New&#39;;font-size: 13px">rabbitmqctl change_cluster_node_type disc(ram)</span><span style="font-size: 16px"><span style="font-family:宋体">,修改节点类型前需要先</span><span style="font-family:宋体">&nbsp;</span></span><span style="font-family: &#39;Courier New&#39;;font-size: 13px">rabbitmqctl stop_app</span><span style="font-size: 16px">。</span></p><p style="margin: 0 0 0 48px;text-align: justify;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">(Note: disk and disc are used interchangeably)</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><strong>验证是否加入:</strong></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/41.png" alt="image.png"/></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">镜像模式参数</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">&nbsp;</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">-p Vhost<span style="font-family:宋体">: &nbsp;可选参数,针对指定</span><span style="font-family:Courier New">vhost</span><span style="font-family:宋体">下的</span><span style="font-family:Courier New">queue</span><span style="font-family:宋体">进行设置</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">Name: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;policy<span style="font-family:宋体">的名称</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">Pattern: &nbsp;&nbsp;&nbsp;exchanges<span style="font-family:宋体">或</span><span style="font-family:Courier New">queue</span><span style="font-family:宋体">的匹配模式</span><span style="font-family:Courier New">(</span><span style="font-family:宋体">正则表达式</span><span style="font-family:Courier New">)</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">Definition<span style="font-family:宋体">:镜像定义,包括三个部分</span><span style="font-family:Courier New">ha-mode, ha-params, ha-sync-mode</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">&nbsp;&nbsp;&nbsp;&nbsp;ha-mode:<span style="font-family:宋体">指明镜像队列的模式,有效值为 </span><span style="font-family:Courier New">all/exactly/nodes</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all<span style="font-family:宋体">:表示在集群中所有的节点上进行镜像</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exactly<span style="font-family:宋体">:表示在指定个数的节点上进行镜像,节点的个数由</span><span style="font-family:Courier New">ha-params</span><span style="font-family:宋体">指定</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nodes<span style="font-family:宋体">:表示在指定的节点上进行镜像,节点名称通过</span><span style="font-family:Courier New">ha-params</span><span style="font-family:宋体">指定</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">&nbsp;&nbsp;&nbsp;&nbsp;ha-params<span style="font-family:宋体">:</span><span style="font-family:Courier New">ha-mode</span><span style="font-family:宋体">模式需要用到的参数</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">&nbsp;&nbsp;&nbsp;&nbsp;ha-sync-mode<span style="font-family:宋体">:进行队列中消息的同步方式,有效值为</span><span style="font-family:Courier New">automatic</span><span style="font-family:宋体">和</span><span style="font-family:Courier New">manual</span><span style="font-family:宋体">。</span><span style="font-family:Courier New">automatic:</span><span style="font-family:宋体">新增加节点自动同步全量数据。</span><span style="font-family:Courier New">manual: </span><span style="font-family:宋体">新增节点只同步新增数据,全量数据需要手工同步。</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">Priority<span style="font-family:宋体">:可选参数,</span><span style="font-family:Courier New">policy</span><span style="font-family:宋体">的优先级</span></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">设置实例</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px"># <span style="font-family:宋体">所有队列</span><span style="font-family:Courier New">exchangess </span><span style="font-family:宋体">或者 </span><span style="font-family:Courier New">queue</span><span style="font-family:宋体">都为镜像模式</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">[root@rabbitmq-01 ~]# rabbitmqctl set_policy ha-all &quot;^&quot; &#39;{&quot;ha-mode&quot;:&quot;all&quot;}&#39;</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">Setting policy &quot;ha-all&quot; for pattern &quot;^&quot; to &quot;{&quot;ha-mode&quot;:&quot;all&quot;}&quot; with priority &quot;0&quot; for vhost &quot;/&quot; ...</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">&nbsp;</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px"># <span style="font-family:宋体">对队列名称以</span><span style="font-family:Courier New">“queue_”</span><span style="font-family:宋体">开头的所有队列进行镜像,并在集群的两个节点上完成进行,</span><span style="font-family:Courier New">policy</span><span style="font-family:宋体">的设置命令为:</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">[root@rabbitmq-01 ~]# rabbitmqctl set_policy --priority 0 --apply-to queues mirror_queue &quot;^queue_&quot; &#39;{&quot;ha-mode&quot;:&quot;exactly&quot;,&quot;ha-params&quot;:2,&quot;ha-sync-mode&quot;:&quot;automatic&quot;}&#39;</span></p><h4 style="margin-top: 7px;margin-bottom: 7px;font-family: 宋体;font-size: 16px;text-wrap: wrap"><strong>3.3.1 开启插件</strong></h4><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">所有机器执行命令:</span> rabbitmq-plugins enable rabbitmq_management</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">设置账户:</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">rabbitmqctl add_user admin 密码 // 添加用户名</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">rabbitmqctl set_user_tags admin administrator // 提升管理员</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">rabbitmqctl set_permissions -p / admin &quot;.*&quot; &quot;.*&quot; &quot;.*&quot; // 为 admin 用户配置所有权限</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"><span style="font-family:宋体">在浏览器中访问</span> </span><span style="text-decoration:underline;"><span style="color: #0000FF">http://10.90.0.11:15672</span></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"><br/></span><img src="https://yunche.pro/blog/zb_users/upload/2023/11/16.png" alt="image.png"/></p><h4 style="margin-top: 7px;margin-bottom: 7px;font-family: 宋体;font-size: 16px;text-wrap: wrap"><strong>3.3.2镜像集群验证</strong></h4><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">上面我们已经设置过策略,全部队列都做镜像模式,这里我们创建一个队列</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/91.png" alt="image.png"/></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">可以看到我们创建了</span>queue_testQueue队列,</span><span style="color: #4D4D4D;font-size: 16px">Node中的+2表示备份,下图中的Mirrors就是备份的节点,若node3宕机了node1,node2就会代替node3继续提供服务</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/01.png" alt="image.png"/></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="color: #4D4D4D;font-size: 16px"><span style="font-family:宋体">测试:首先关闭</span>node3 节点</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/86.png" alt="image.png"/></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="color: #4D4D4D;font-size: 16px">&nbsp; &nbsp;然后查看node1,node2 节点上的镜像状态,发现在node1,node2 节点也进行了备份,以此说明:就算整个集群只剩下一台机器了,依然能消费队列里面的消息</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/96.png" alt="image.png"/></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp;</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp;</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp;</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp;</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp; &nbsp;yum install haproxy -y&nbsp;</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-family: &#39;Courier New&#39;;font-size: 13px">vim /etc/haproxy/haproxy.cfg</span><span style="color: #;font-size: 16px">&nbsp;编辑 haproxy 配置文件,修改如下</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/79.png" alt="image.png"/></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp;</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="color: #4D4D4C;font-size: 16px">systemctl restart haproxy &nbsp; &nbsp;//运行 haproxy&nbsp;</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp;</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="color: #4D4D4C;font-size: 16px">systemctl status haproxy &nbsp; &nbsp; &nbsp;//查看状态</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="color: #;font-size: 16px"><span style="font-family:宋体">浏览器访问</span> </span><span style="text-decoration:underline;"><span style="color: #0000FF">http://10.90.0.9:8888/stats</span></span><span style="text-decoration:underline;"><span style="color: #0000FF">,输入配置中的用户名和密码登录</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/80.png" alt="image.png"/></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp;<span style="font-family:宋体">集群是不能通过一个命令完全停止的,它必须对各个节点依次停止才能最终停止集群,而且基准节点要作为最后一个停止,先停止其它加入到基准节点的节点</span><span style="font-family:宋体">.</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">例如,我们上述将</span><span style="font-family:宋体">node2机器和node3机器的节点加入到node1机器的基准节点,那么停止时需要先停止node2机器和node3机器的节点,最后再停止node1机器节点(注:集群启动时就与此顺序相反,先启动node1机器的节点,再启动node2和node3的节点),按照顺序执行如下:</span></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">https://yunche.pro/blog/rabbitmqctl stop</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"><span style="font-family:宋体">按照</span><span style="font-family:宋体">node3、node2、node1的顺序执行此条命令即可停止整个集群。</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">重启某一个节点执行步骤如下:</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">https://yunche.pro/blog/rabbitmqctl stop</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">https://yunche.pro/blog/rabbitmq-server -detached</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">注:重启节点实际上就是先执行停止,再启动即可,不需要再次加入到集群节点中,启动之后节点自动会加入到集群中(初次加入集群就需要加入某一个节点)。重置某一个节点,就是先停止该节点,然后执行</span><span style="font-family:宋体">reset命令清除所有数据,接着加入到集群中并启动,如下/rabbitmqctl stop_app</span></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">https://yunche.pro/blog/rabbitmqctl reset</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">https://yunche.pro/blog/rabbitmqctl join_cluster rabbit@NodeName</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">https://yunche.pro/blog/rabbitmqctl start_app</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"><span style="font-family:宋体">注:重启过程中,节点停止后主节点同步过来的数据将无法保存在此节点,同理重置过程中,节点停止后也将无法获取同步的数据,</span><span style="font-family:宋体">reset重置还会将此节点原来所有的数据(队列、交换器、虚拟机、用户和同步过来的消息等)全部清除,直到重新加入集群、重启节点后可再次同步数据。</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">前面说到内存节点和磁盘节点的区别,当我们把一个节点加入到集群中时,默认是以磁盘节点加入集群的,如果要以内存节点加入集群,只需要在加入集群时带上</span><span style="font-family:宋体">–ram参数就行了,如下:</span></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">https://yunche.pro/blog/rabbitmqctl join_cluster --ram rabbit@NodeName1</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">通过改变节点类型可以将磁盘节点改为内存节点,也可以将内存节点改为磁盘节点,如下:</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">https://yunche.pro/blog/rabbitmqctl stop_app</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">https://yunche.pro/blog/rabbitmqctl change_cluster_node_type disc</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"># disc是磁盘节点,ram是内存节点</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">https://yunche.pro/blog/rabbitmqctl start_app</span></p><p><br/></p> <p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">rabbitmq共有两种迁移方案:</span></p><div cellspacing="0"><tbody><tr><td valign="center" style="padding: 7px;border-left-width: 1px;border-left-color: windowtext;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px;break-after: avoid"><span style="font-size: 16px">文件导入方式</span></p></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px;break-after: avoid"><span style="font-size: 16px"><span style="font-family:宋体">数据</span>100%成功</span></p></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style="margin: 7px 0;font-family: 宋体;font-size: 16px"><span style="font-size: 16px">业务要修改地址</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px"><span style="font-size: 16px">暂停提供服务</span></p></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px;break-after: avoid"><span style="font-size: 16px">可以使用</span></p></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px;break-after: avoid"><span style="font-size: 16px">拷贝元数据方式</span></p></td></tr><tr><td valign="center" style="padding: 7px;border-left-width: 1px;border-left-color: windowtext;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px;break-after: avoid"><span style="font-size: 16px">添加集群方式</span></p></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><br/></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><br/></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px;break-after: avoid"><span style="font-size: 16px">不可用,数据会丢失(添加机器之前会清空之前所有的信息)</span></p></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><br/></td></tr><tr><td valign="center" style="padding: 7px;border-left-width: 1px;border-left-color: windowtext;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px"><span style="font-size: 16px">Shovel 方式</span></p></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px;break-after: avoid"><span style="font-size: 16px"><span style="font-family:宋体">数据</span>100%成功</span></p></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px;break-after: avoid"><span style="font-size: 16px">业务要修改连接地址</span></p></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px;break-after: avoid"><span style="font-size: 16px">可以使用</span></p></td><td valign="center" style="padding: 7px;border-left: none;border-right-width: 1px;border-right-color: windowtext;border-top: none;border-bottom-width: 1px;border-bottom-color: windowtext"><p style=";font-family: 宋体;font-size: 16px;break-after: avoid"><span style="font-size: 16px"><span style="font-family:宋体">类似于转发功能,</span>client--单机群--多集群,单集群没有数据,都落在多集群上,配置好策略就可以</span></p></td></tr></tbody></div><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">1 文件导入方式</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">2 服务器加入集群方式</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp; &nbsp;7.1.1先从需要被迁移的机器上导出需要的文件,最下面可以选择划分的虚拟机</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/95.png" alt="image.png"/></span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap">&nbsp; 7.1.2选择导入的服务页面,选择备份文件,选择虚拟主机,虚拟机主机事先要创建好<br/></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/45.png" alt="image.png"/></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp;&nbsp;<span style="font-family:宋体">7.1.3 出现如下页面说明已成功</span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/48.png" alt="image.png"/></span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体"><br/></span></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp;&nbsp;<span style="font-family:宋体">7.1.4 设置镜像策略</span></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">&nbsp;&nbsp;</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">&nbsp;&nbsp;<img src="https://yunche.pro/blog/zb_users/upload/2023/11/32.png" alt="image.png"/></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">&nbsp;&nbsp;<span style="font-family:宋体">7.1.5 &nbsp;验证数据是否为镜像集群模式</span></span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">&nbsp;&nbsp;&nbsp;<span style="font-family:宋体">我们可以看到队列一个主节点,两个镜像节点,说明数据会有三份</span></span><span style="font-size: 16px"><br/></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/24.png" alt="image.png"/></span></span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">7.2.1 需要先暂停单机服务器,备份/var/lib/rabbitmq/.erlang.cookie 文件。</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">7.2.2 从node1 机器上拷贝&nbsp; .erlang.cookie 文件 到单机机器的/var/lib/rabbitmq/ 目录下</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">7.2.3 单机机器执行如下命令</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp; &nbsp; &nbsp;rabbitmqctl stop_app</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">&nbsp; &nbsp; &nbsp;rabbitmqctl join_cluster rabbit@node1</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">&nbsp; &nbsp; &nbsp;rabbitmqctl start_app</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">7.2.4 查看是否加入</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp; &nbsp;没有加入之前</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/01.png" alt="image.png"/></span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><br/></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp; 加入之后</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/04.png" alt="image.png"/></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">&nbsp;查看队列是否存在,这种方式数据是不存在的</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/72.png" alt="image.png"/></span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><br/></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">7.3.1 在需要迁移的机器上分别安装shovel 插件</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">rabbitmq-</span><span style="font-size: 16px">plugins enable rabbitmq_shovel</span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">rabbitmq</span><span style="font-size: 16px">-plugins enable rabbitmq_shovel_management</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px">我需要从单机机器迁移到集群服务器</span><span style="font-size: 16px"><br/></span><span style="font-size: 16px"><span style="font-family:宋体">首先登陆到单机机器</span><span style="font-family:宋体">web页面会看到已安装插件</span></span><span style="font-size: 16px"><br/></span></p><p style=";font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/95.png" alt="image.png"/></span></span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">7.3.2 配置shovel 迁移任务</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/10.png" alt="image.png"/></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">7.3.3 新增成功页面</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/34.png" alt="image.png"/></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">检查状态</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/73.png" alt="image.png"/></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><span style="font-family:宋体">注:</span>shovel是针对queue(队列)来操作的,有多少个队列要迁移数据,就要创建多少个对应的shovel。</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">7.3.4 验证</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">hovel创建好后,如果检查状态正常的话,它会自动进行迁移数据。现在我们来检查旧集群shovel_demo_queue队列的数据是否移到到新集群中。</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">在新集群中通过以下界面查看,而且数据都是镜像模式</span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/40.png" alt="image.png"/></span></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><br/></p><p style="margin: 7px 0;font-family: 宋体;font-size: 16px;text-wrap: wrap"><span style="font-size: 16px">在旧集群中通过以下界面查看</span></p><p style="margin: 7px 0px; font-family: 宋体; font-size: 16px; text-wrap: wrap;"><img src="https://yunche.pro/blog/zb_users/upload/2023/11/35.png" alt="image.png"/></p> 

讯享网

3、执行mcasttest检测组播

小讯
上一篇 2025-04-25 09:48
下一篇 2025-06-07 11:29

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/192194.html