分类网站建设与开发,怎么在百度发布个人简介,广州云购网站建设,上海做网站的公司排名1 RabbitMQ集群简介RabbitMQ 集群是一个或多个节点的逻辑分组#xff0c;每个节点共享用户、虚拟主机、队列、流、交换机、绑定、运行时参数和其他分布式状态。集群中的节点名称必须是唯一的。在集群中#xff0c;节点使用节点名称来识别和相互联系。这意味着每个节点名称的主…1 RabbitMQ集群简介RabbitMQ 集群是一个或多个节点的逻辑分组每个节点共享用户、虚拟主机、队列、流、交换机、绑定、运行时参数和其他分布式状态。集群中的节点名称必须是唯一的。在集群中节点使用节点名称来识别和相互联系。这意味着每个节点名称的主机名部分必须可以解析。CLI 工具也使用节点名称来识别和寻址节点。当节点启动时它会检查是否已为其分配了节点名称。如果未显式配置值则节点会解析其主机名并在其前面加上rabbit 以计算其节点名称。RabbitMQ代理操作所需的所有数据/状态都在所有节点之间复制。消息队列是此规则的例外默认情况下消息队列驻留在一个节点上但可以从所有节点查看和访问。要在集群中的节点之间复制队列请使用支持复制的队列类型。一般提到的RabbitMQ镜像集群实际上由集群加上经典消息队列的镜像复制策略构成。RabbitMQ 4.0及后续版本不再支持经典消息队列的镜像复制功能因此本例采用RabbitMQ 3.13.7版实现。2 安装配置规划配置项 主机一 主机二IP地址 10.10.1.45 10.10.1.46主机名称 KL5 KL6配置用户 kylin kylin安装文件目录 /home/kylin/Install /home/kylin/Install消息队列目录 /data/rabbitmq /data/rabbitmq相关端口 使用默认值 使用默认值MQ测试用户 test/passwordMQ虚拟主机 /test/镜像策略名 jxjq3 安装RabbitMQ3.1 安装版本说明RabbitMQ仅4.0以下版本支持经典队列镜像因此本例选择RabbitMQ 3.x版本中最新的3.13.7版。根据官方网站上RabbitMQ与Erlang的版本兼容性矩阵Erlang版本选择26.x中最新的26.2.5.15。银河麒麟V10的桌面版和服务器版的安装体系差异很大默认已经安装的包也不同因此在安装Erlang之前银河麒麟V10的桌面版和服务器版需要安装不同的包。本例基于以下银河麒麟版本建立。Kylin-Desktop-V10-GFB-HWE-Release-020-X86_64Kylin-Desktop-V10-GFB-020-Release-20.1.3-ARM64Kylin-Server-V10-GFB-Release-030-X86_64Kylin-Server-V10-GFB-030-Release-30.1.3-ARM643.2 麒麟V10桌面版(GFB)3.2.1 安装前准备使用管理员用户创建安装文件目录。kylinKL5:~$ mkdir Install3.2.2 安装ncurses3.2.2.1 使用deb包安装银河麒麟V10桌面版(GFB)默认已安装libtinfo6、libncurses6、libncursesw6版本为6.2-0kylin2需要安装对应版本的libncurses-dev。本例拿到的是6.2-0kylin2.1版本因为依赖关系除安装libncurses-dev外需要安装对应版本的libtinfo6、libncurses6、libncursesw6。使用管理员账户执行dpkg -i命令安装libncurses-dev及其依赖包。kylinKL5:~/Install$ sudo dpkg -i libncurses-dev_6.2-0kylin2.1_amd64.deb libtinfo6_6.2-0kylin2.1_amd64.deb libncurses6_6.2-0kylin2.1_amd64.deb libncursesw6_6.2-0kylin2.1_amd64.deb正在选中未选择的软件包 libncurses-dev:amd64。(正在读取数据库 ... 系统当前共安装有 187718 个文件和目录。)准备解压 libncurses-dev_6.2-0kylin2.1_amd64.deb ...正在解压 libncurses-dev:amd64 (6.2-0kylin2.1) ...准备解压 libtinfo6_6.2-0kylin2.1_amd64.deb ...正在解压 libtinfo6:amd64 (6.2-0kylin2.1) 并覆盖 (6.2-0kylin2) ...准备解压 libncurses6_6.2-0kylin2.1_amd64.deb ...正在解压 libncurses6:amd64 (6.2-0kylin2.1) 并覆盖 (6.2-0kylin2) ...准备解压 libncursesw6_6.2-0kylin2.1_amd64.deb ...正在解压 libncursesw6:amd64 (6.2-0kylin2.1) 并覆盖 (6.2-0kylin2) ...正在设置 libtinfo6:amd64 (6.2-0kylin2.1) ...正在设置 libncurses6:amd64 (6.2-0kylin2.1) ...正在设置 libncursesw6:amd64 (6.2-0kylin2.1) ...正在设置 libncurses-dev:amd64 (6.2-0kylin2.1) ...正在处理用于 man-db (2.9.1-1kylin0k1) 的触发器 ...正在处理用于 libc-bin (2.31-0kylin9.1k20.8) 的触发器 ...如果无法获取麒麟官方安装包可以下载debian提供的包版本为6.220201114-2或其他接近版本。可以使用中科大的镜像网站。3.2.2.2 使用源代码安装从gnu官方网站下载最新版本的源代码包ncurses-6.5.tar.gz放置到安装目录。解压缩后进入解压后的目录执行configure命令。kylinKL5:~/Install$ tar -zxf ncurses-6.5.tar.gzkylinKL5:~/Install$ cd ncurses-6.5/kylinKL5:~/Install/ncurses-6.5$ ./configurechecking for ggrep... nochecking for grep... grepchecking for egrep... grep -EConfiguring NCURSES 6.5 ABI 6 (Fri Sep 19 10:43:14 CST 2025)…………这里很多提示信息此处省略。…………** Configuration summary for NCURSES 6.5 20240427:extended funcs: yesxterm terminfo: xterm-newbin directory: /usr/binlib directory: /usr/libinclude directory: /usr/includeman directory: /usr/share/manterminfo directory: /usr/share/terminfo继续执行make指令进行编译。kylinKL5:~/Install/ncurses-6.5$ make( cd man make DESTDIR RPATH_LIST/usr/lib all )make[1]: 进入目录“/home/kylin/Install/ncurses-6.5/man”/bin/sh ./MKterminfo.sh ./terminfo.head ./../include/Caps ./../include/Caps-ncurses ./terminfo.tail terminfo.5…………这里很多提示信息此处省略。…………compiling demo (obj_s)/usr/bin/g -o demo ../objects/demo.o -L../lib -lncursesw -L../lib -lformw -lmenuw -lpanelw -lncursesw -lutil -DHAVE_CONFIG_H -DBUILDING_NCURSES_CXX -I../c -I. -I../include -D_DEFAULT_SOURCE -D_XOPEN_SOURCE600 -DNDEBUG -O2 -DNCURSES_STATICmake[1]: 离开目录“/home/kylin/Install/ncurses-6.5/c”编译成功后用管理员账户执行make install安装。kylinKL5:~/Install/ncurses-6.5$ sudo make install( cd man make DESTDIR RPATH_LIST/usr/lib install )make[1]: 进入目录“/home/kylin/Install/ncurses-6.5/man”/bin/sh ../edit_man.sh normal installing /usr/share/man . terminfo.5 *-config.1 ./*.[0-9]* ...made /home/kylin/Install/ncurses-6.5/man_alias.sed…………这里很多提示信息此处省略。…………installing ./cursesapp.h in /usr/includeinstalling ./cursesf.h in /usr/includeinstalling ./cursesm.h in /usr/includeinstalling ./cursesp.h in /usr/includeinstalling ./cursesw.h in /usr/includeinstalling ./cursslk.h in /usr/includeinstalling etip.h in /usr/includemake[1]: 离开目录“/home/kylin/Install/ncurses-6.5/c”3.2.3 安装OpenSSL从OpenSSL官方网站下载指定版本的源代码包openssl-1.1.1w.tar.gz放置到安装目录。解压缩openssl-OpenSSL_1_1_1w.zip进入解压后的目录。kylinKL5:~/Install$ unzip openssl-OpenSSL_1_1_1w.zipArchive: openssl-OpenSSL_1_1_1w.zipe04bd3433fd84e1861bf258ea37928d9845e6a86creating: openssl-OpenSSL_1_1_1w/inflating: openssl-OpenSSL_1_1_1w/ACKNOWLEDGEMENTSinflating: openssl-OpenSSL_1_1_1w/AUTHORSinflating: openssl-OpenSSL_1_1_1w/CHANGESinflating: openssl-OpenSSL_1_1_1w/CONTRIBUTING…………这里很多提示信息此处省略。…………inflating: openssl-OpenSSL_1_1_1w/util/shlib_wrap.sh.ininflating: openssl-OpenSSL_1_1_1w/util/su-filter.plinflating: openssl-OpenSSL_1_1_1w/util/unlocal_shlib.com.increating: openssl-OpenSSL_1_1_1w/wycheproof/kylinKL5:~/Install$ cd openssl-OpenSSL_1_1_1w/执行config命令指定安装目录进行配置。kylinKL5:~/Install/openssl-OpenSSL_1_1_1w$ ./config --prefix/usr/local/opensslOperating system: x86_64-whatever-linux2Configuring OpenSSL version 1.1.1w (0x1010117fL) for linux-x86_64Using os-specific seed configurationCreating configdata.pmCreating Makefile************************************************************************* ****** OpenSSL has been successfully configured ****** ****** If you encounter a problem while building, please open an ****** issue on GitHub https://github.com/openssl/openssl/issues ****** and include the output from the following command: ****** ****** perl configdata.pm --dump ****** ****** (If you are new to OpenSSL, you might want to consult the ****** Troubleshooting section in the INSTALL file first) ****** *************************************************************************继续执行make指令进行编译。kylinKL5:~/Install/openssl-OpenSSL_1_1_1w$ make/usr/bin/perl -I. -Mconfigdata util/dofile.pl \-oMakefile include/crypto/bn_conf.h.in include/crypto/bn_conf.h/usr/bin/perl -I. -Mconfigdata util/dofile.pl \-oMakefile include/crypto/dso_conf.h.in include/crypto/dso_conf.h/usr/bin/perl -I. -Mconfigdata util/dofile.pl \-oMakefile include/openssl/opensslconf.h.in include/openssl/opensslconf.hmake depend make _all…………这里很多提示信息此处省略。…………/usr/bin/perl -I. -Mconfigdata util/dofile.pl \-oMakefile util/shlib_wrap.sh.in util/shlib_wrap.shchmod ax util/shlib_wrap.shmake[1]: Leaving directory /home/kylin/Install/openssl-OpenSSL_1_1_1w编译成功后用管理员账户执行make install安装。kylinKL5:~/Install/openssl-OpenSSL_1_1_1w$ sudo make installmake depend make _build_libsmake[1]: Entering directory /home/kylin/Install/openssl-OpenSSL_1_1_1wmake[1]: Leaving directory /home/kylin/Install/openssl-OpenSSL_1_1_1wmake[1]: Entering directory /home/kylin/Install/openssl-OpenSSL_1_1_1wmake[1]: Nothing to be done for _build_libs.make[1]: Leaving directory /home/kylin/Install/openssl-OpenSSL_1_1_1w…………这里很多提示信息此处省略。…………/usr/local/openssl/share/doc/openssl/html/man7/SM2.html/usr/local/openssl/share/doc/openssl/html/man7/ssl.html/usr/local/openssl/share/doc/openssl/html/man7/X25519.html/usr/local/openssl/share/doc/openssl/html/man7/X448.html - /usr/local/openssl/share/doc/openssl/html/man7/X25519.html/usr/local/openssl/share/doc/openssl/html/man7/x509.html3.3 麒麟V10高级服务器版(GFB)3.3.1 安装前准备银河麒麟V10高级服务器版允许使用root直接登录这里安全起见创建用户kylin并加入wheel组作为管理员用户使用。[rootlocalhost ~]# adduser kylin[rootlocalhost ~]# passwd kylin更改用户 kylin 的密码 。新的 密码重新输入新的 密码passwd所有的身份验证令牌已经成功更新。[rootlocalhost ~]# usermod -aG wheel kylin再使用root用户创建/data共享目录。[rootlocalhost ~]# mkdir /data[rootlocalhost ~]# chmod arwx /data[rootlocalhost ~]# chmod -t /data使用root用户修改主机名并重新登录。[rootlocalhost ~]# hostnamectl set-hostname KL5[rootlocalhost ~]# logout使用kylin用户创建目录Install用于放置所有安装文件。[kylinKL5 ~]$ mkdir Install3.3.2 安装ncurses在麒麟V10高级服务器版扩展盘中可以找到ncurses-devel的RPM包其中x86版文件名为“ncurses-devel-6.2-3.gfb03.ky10.x86_64.rpm”ARM版文件名为“ncurses-devel-6.2-3.gfb03.ky10.aarch64.rpm”。使用管理员账户安装RPM包。[kylinKL5 Install]$ sudo rpm -i ncurses-devel-6.2-3.gfb03.ky10.x86_64.rpm警告ncurses-devel-6.2-3.gfb03.ky10.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 34fe765a: NOKEY3.4 安装Erlang从Erlang官网网站下载指定版本的源代码包otp_src_26.2.5.15.tar.gz放置到安装目录。解压缩安装包后进入解压后的目录执行configure命令。[kylinKL5 Install]$ tar -zxf otp_src_26.2.5.15.tar.gz[kylinKL5Install]$ cd otp_src_26.2.5.15/[kylinKL5 otp_src_26.2.5.15]$ ./configure Running configure in /home/kylin/Install/otp_src_26.2.5.15/erts ./configure --disable-option-checking --cache-file/dev/null --srcdir/home/kylin/Install/otp_src_26.2.5.15/ertschecking build system type... x86_64-pc-linux-gnuchecking host system type... x86_64-pc-linux-gnuchecking target system type... x86_64-pc-linux-gnu…………这里很多提示信息此处省略。…………*********************************************************************在配置Erlang的时候会提示因为缺少ODBC library、GLU headers等导致odbc、wx等不可用这个不影响RabbitMQ的一般使用暂时不用理会。继续执行make指令进行编译。[kylinKL5 otp_src_26.2.5.15]$ makeMAKE dependmake[1]: 进入目录“/home/kylin/Install/otp_src_26.2.5.15/erts/emulator”MAKE generatemake[2]: 进入目录“/home/kylin/Install/otp_src_26.2.5.15/erts/emulator”GEN x86_64-pc-linux-gnu/opt/jit/OPCODES-GENERATEDGEN x86_64-pc-linux-gnu/opt/jit/beam_asm_global.hpp…………这里很多提示信息此处省略。…………GEN /home/kylin/Install/otp_src_26.2.5.15/bin/start.scriptGEN /home/kylin/Install/otp_src_26.2.5.15/bin/start_sasl.scriptGEN /home/kylin/Install/otp_src_26.2.5.15/bin/start_clean.scriptGEN /home/kylin/Install/otp_src_26.2.5.15/bin/no_dot_erlang.scriptmake[2]: 离开目录“/home/kylin/Install/otp_src_26.2.5.15/erts/start_scripts”make[1]: 离开目录“/home/kylin/Install/otp_src_26.2.5.15/erts”编译成功后用管理员账户执行make install安装。[kylinKL5 otp_src_26.2.5.15]$ sudo make installMAKE erl_interfacemake[1]: 进入目录“/home/kylin/Install/otp_src_26.2.5.15/lib/erl_interface” Entering application erl_interfacemake[2]: 进入目录“/home/kylin/Install/otp_src_26.2.5.15/lib/erl_interface/src”…………这里很多提示信息此处省略。…………ln -s ../lib/erlang/bin/dialyzer dialyzerln -s ../lib/erlang/bin/typer typerln -s ../lib/erlang/bin/escript escriptln -s ../lib/erlang/bin/ct_run ct_run[kylinKL5 otp_src_26.2.5.15]$测试Erlang使用erl命令进入Erlang控制台使用crypto:start测试OpenSSL使用halt命令退出。[kylinKL5 otp_src_26.2.5.15]$ erlErlang/OTP 26 [erts-14.2.5.11] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [jit:ns]Eshell V14.2.5.11 (press CtrlG to abort, type help(). for help)1 crypto:start().ok2 halt().3.5 安装RabbitMQ解压缩rabbitmq-server-generic-unix-3.13.7.tar.xz将解压后的目录移动到指定位置。[kylinKL5 Install]$ tar -xf rabbitmq-server-generic-unix-3.13.7.tar.xz[kylinKL5 Install]$ mv rabbitmq_server-3.13.7/ /data/rabbitmq编辑配置文件/etc/profile将/data/rabbitmq/sbin加入到PATH环境变量中使用source /etc/profile命令更新环境变量。[kylinKL5 Install]$ sudo vi /etc/profile…………其他配置内容。…………export PATH$PATH:/data/rabbitmq/sbin[kylinKL5 Install]$ source /etc/profile使用rabbitmq-server -detached以后台服务方式启动RabbitMQ使用rabbitmqctl status查看RabbitMQ状态可以看到RabbitMQ开启了5672端口和25672端口分别服务于amqp和clustering协议。[kylinKL5 ~]$ rabbitmq-server -detached[kylinKL5 ~]$ rabbitmqctl statusStatus of node rabbitlocalhost ...chaRuntimeOS PID: 122102OS: LinuxUptime (seconds): 7Is under maintenance?: falseRabbitMQ version: 3.13.7…………此处有很多状态信息此处忽略。…………ListenersInterface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communicationInterface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0使用rabbitmqctl start_app和rabbitmq-plugins enable rabbitmq_management命令开启管理控制台再使用rabbitmqctl status查看RabbitMQ状态可以看到15672端口已经打开此时可以使用浏览器管理消息队列。[kylinKL5 ~]$ rabbitmqctl start_apprabbitmqctl start_appStarting node rabbitlocalhost ...[kylinKL5 ~]$ rabbitmq-plugins enable rabbitmq_managementrabbitmq-plugins enable rabbitmq_managementEnabling plugins on node rabbitlocalhost:rabbitmq_managementThe following plugins have been configured:rabbitmq_managementrabbitmq_management_agentrabbitmq_web_dispatchApplying plugin configuration to rabbitlocalhost...The following plugins have been enabled:rabbitmq_managementrabbitmq_management_agentrabbitmq_web_dispatchstarted 3 plugins.[kylinKL5 ~]$ rabbitmqctl statusStatus of node rabbitlocalhost ...Runtime…………此处有很多状态信息此处忽略。…………ListenersInterface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communicationInterface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0Interface: [::], port: 15672, protocol: http, purpose: HTTP API3.6 注册RabbitMQ为服务使用管理员用户编辑/etc/systemd/system/rabbitmq.service文件在文件中加入如下内容。[kylinKL5 ~]$ sudo vi /etc/systemd/system/rabbitmq.service[Unit]Description RabbitMQ ServerAfter network.target[Service]Type simpleUser kylinGroup kylinExecStart /data/rabbitmq/sbin/rabbitmq-serverExecStop /data/rabbitmq/sbin/rabbitmqctl stopRestart on-failureRestartSec 60sLimitNOFILE 65536[Install]WantedBy multi-user.target重新加载服务将服务设置为开机启动。[kylinKL5 system]$ sudo systemctl daemon-reload[kylinKL5 system]$ sudo systemctl enable rabbitmqCreated symlink /etc/systemd/system/multi-user.target.wants/rabbitmq.service → /etc/systemd/system/rabbitmq.service.启动服务并查看服务状态。如果之前RabbitMQ已启动先结束进程。[kylinKL5 ~]$ ps -AL|grep beam2212 2212 ? 00:00:00 beam.smp[kylinKL5 ~]$ kill 2212[kylinKL5 ~]$ sudo systemctl start rabbitmq[kylinKL5 ~]$ sudo systemctl status rabbitmq● rabbitmq.service - RabbitMQ ServerLoaded: loaded (/etc/systemd/system/rabbitmq.service; enabled; vendor preset: disabled)Active: active (running) since Wed 2025-09-24 10:24:47 CST; 2s agoMain PID: 1012826 (rabbitmq-server)Tasks: 26Memory: 124.6MCGroup: /system.slice/rabbitmq.service├─1012826 /bin/sh /data/rabbitmq/sbin/rabbitmq-server├─1012833 /usr/local/lib/erlang/erts-14.2.5.11/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -pc unicode -P 1048576 -t 5000000 -stbt db -zdbbl ├─1012839 erl_child_setup 65536├─1012858 sh -s disksup├─1012860 /usr/local/lib/erlang/lib/os_mon-2.9.1/priv/bin/memsup├─1012861 /usr/local/lib/erlang/lib/os_mon-2.9.1/priv/bin/cpu_sup├─1012862 /usr/local/lib/erlang/erts-14.2.5.11/bin/inet_gethost 4├─1012863 /usr/local/lib/erlang/erts-14.2.5.11/bin/inet_gethost 4└─1012916 /bin/sh -s rabbit_disk_monitor4 配置RabbitMQ集群4.1 修改hosts文件修改/etc/hosts文件将集群涉及的主机名称添加到hosts文件中。kylinKL5:~$ sudo vi /etc/hosts127.0.0.1 localhost10.10.1.45 KL510.10.1.46 KL64.2 开放防火墙端口麒麟高级服务器版默认开启了防火墙需要开放RabbitMQ相关的端口包括4369EPMD、5671-5672AMQP、15672管理页面、25672节点间通讯、35672-35682CLI工具等以上端口均为TCP协议。[kylinKL5 ~]$ sudo firewall-cmd --add-port4369/tcp --permanentsuccess[kylinKL5 ~]$ sudo firewall-cmd --add-port5671-5672/tcp --permanentsuccess[kylinKL5 ~]$ sudo firewall-cmd --add-port15672/tcp --permanentsuccess[kylinKL5 ~]$ sudo firewall-cmd --add-port25672/tcp --permanentsuccess[kylinKL5 ~]$ sudo firewall-cmd --add-port35672-35682/tcp --permanentsuccess[kylinKL5 ~]$ sudo firewall-cmd --reloadsuccess[kylinKL5 ~]$ sudo firewall-cmd --list-ports4369/tcp 15672/tcp 25672/tcp 35672-35682/tcp 5671-5672/tcp4.3 复制cookie文件将.erlang.cookie从主机服务器复制到其他服务器相同目录。本例中.erlang.cookie文件在kylin用户目录下。如果提示没有权限需要先修改从机上的文件权限。kylinKL5:~$ scp .erlang.cookie kylinKL6:/home/kylinkylinKL6s password:.erlang.cookie 100% 20 7.8KB/s 00:00修改.erlang.cookie文件之前如果已经用rabbitmq-server启动了消息队列在修改.erlang.cookie文件会无法使用rabbitmqctl控制需要结束进程rabbitmq的进程名称为beam.smp。[kylinKL5 ~]$ ps -AL|grep beam.smp33029 33029 ? 00:00:00 beam.smp[kylinKL5 ~]$ kill 330294.4 将从机加入集群分别启动主机和从机的服务后在从机上使用rabbitmqctl stop_app指令停止应用使用rabbitmqctl join_cluster指令将从机加入主机集群再使用rabbitmqctl start_app指令启动应用。此时可以使用rabbitmqctl cluster_status指令查看集群状态。kylinKL6:~$ rabbitmqctl stop_appStopping rabbit application on node rabbitKL6 ...kylinKL6:~$ rabbitmqctl join_cluster rabbitKL5Clustering node rabbitKL6 with rabbitKL5kylinKL6:~$ rabbitmqctl start_appStarting node rabbitKL6 ...kylinKL6:~$ rabbitmqctl cluster_statusCluster status of node rabbitKL6 ...BasicsCluster name: rabbitKL6Total CPU cores available cluster-wide: 8Cluster Tags(none)Disk NodesrabbitKL5rabbitKL6Running NodesrabbitKL5rabbitKL6VersionsrabbitKL6: RabbitMQ 3.13.7 on Erlang 26.2.5.15rabbitKL5: RabbitMQ 3.13.7 on Erlang 26.2.5.15CPU CoresNode: rabbitKL6, available CPU cores: 4Node: rabbitKL5, available CPU cores: 4Maintenance statusNode: rabbitKL6, status: not under maintenanceNode: rabbitKL5, status: not under maintenance…………此处有很多状态信息此处忽略。…………此时集群已经建立但模式为普通模式下一步需要将队列配置为镜像模式。配置可以采用管理页面方式也可以使用命令行方式配置。4.5 配置镜像策略4.5.1 页面方式配置镜像使用浏览器打开主机的配置页面使用默认用户guest/guest登录创建需要的用户、虚拟主机、交换机、消息队列等在创建消息队列时选择classic类型。使用有管理员权限用户登录在Admin-Policies-User Policies管理项下增加管理策略。Pattern填写“^”Apply to选择“Exchanges and queues”Definition定义“ha-modeall”、“ha-sync-modeautomatic”。页面方式配置镜像4.5.2 命令方式配置镜像使用rabbitmqctl set_policy命令设置复制策略。[kylinKL5 ~]$ rabbitmqctl set_policy jxjq ^ {ha-mode:all,ha-sync-mode:automatic} -p /test/Setting policy jxjq for pattern ^ to {ha-mode:all,ha-sync-mode:automatic} with priority 0 for vhost /test/ ...其中“jxjq”为策略名称“^”为匹配字符“{ha-mode:all,ha-sync-mode:automatic}”为JSON格式的策略定义“-p /test/”表示应用的Virtual host。5 集群切换测试集群启动-后连接管理页面可以查看集群状态、队列状态此时队列显示主节点为KL5KL5为集群主机KL6为集群从机。双机正常集群状态在正常状态下测试向消息队列faultQueue发送了6条数据。双机正常队列状态通过暂停虚拟机的方式将KL5主机暂停。在KL5主机暂停的最初十几秒内从机上的消息队列暂时不可连接管理页面也没有响应应该在切换集群主从。之后可正常连接从机上的消息队列收发消息管理页面可以看到KL5节点变成停止状态消息队列显示主节点为KL6KL6为集群主机。双机故障集群状态在KL5故障状态下向消息队列faultQueue又发送了8条数据现在KL6显示共有14条数据。双机故障队列状态