时间:2021-07-15 | 标签: | 作者:Q8 | 来源:layveen网络
小提示:您能找到这篇{阿里云环境迁移记录 - RabbitMQ集群搭建}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的阿里云环境迁移记录 - RabbitMQ集群搭建内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您! |
RabbitMQ模式大概分为以下三种: (1)单一模式。 (2)普通模式(默认的集群模式)。 (3) 镜像模式(把需要的队列做成镜像队列,存在于多个节点,属于RabbiMQ的HA方案,在对业务可靠性要求较高的场合中比较适用)。 要实现镜像模式,需要先搭建一个普通集群模式,在这个模式的基础上再配置镜像模式以实现高可用。 RabbitMQ的集群节点包括内存节点、磁盘节点。 RabbitMQ支持消息的持久化也就是数据写在磁盘上,默认是磁盘节点物业危机公关应急预案。 RabbitMQ相关端口 4369 (epmd), 25672 (Erlang distribution) 5672, 5671 (AMQP 0-9-1 without and with TLS) 15672 (if management plugin is enabled) 61613, 61614 (if STOMP is enabled) 1883, 8883 (if MQTT is enabled) RabbitMQ 集群节点设置 server103.example.com IP: 192.168.72.103 Node: disk server105.example.com IP: 192.168.72.105 Node: disk server106.example.com IP: 192.168.72.106 Node: disk rabbitMQ单机安装配置 1. 安装erlang依赖 yum install -y epel-release 或者通过yum源安装 #添加EPEL源 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 添加Erlang源 rpm -Uvh http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm 2. 安装RabbitMQ Server yum install -y rabbitmq-server (默认安装目录为:/usr/lib/rabbitmq/bin/) 或者通过yum源安装 wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.1/rabbitmq-server-3.6.1-1.noarch.rpm rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc yum install rabbitmq-server-3.6.1-1.noarch.rpm 3. 单机配置 #调整系统限制 vi /etc/sysctl.conf fs.file-max = 300000 #设置生效 sysctl -p #查看 sysctl fs.file-max #调整用户限制 vi /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 #添加host echo "192.168.72.103 server103" >> /etc/hosts #防火墙打开端口 firewall-cmd --permanent --add-port=15672/tcp firewall-cmd –-reload #设置自动重启 chkconfig rabbitmq-server on service rabbitmq-server start #启动监控插件 rabbitmq-plugins list //查看插件安装情况 rabbitmq-plugins enable rabbitmq_management //启用rabbitmq_management服务 4. 用户管理 #添加用户 rabbitmqctl add_user admin admin rabbitmqctl add_user travel 88gongxiangrbq #设置用户角色 rabbitmqctl set_user_tags admin administrator rabbitmqctl set_user_tags travel administrator #设置用户权限(设置admin用户配置、写、读的权限) rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" rabbitmqctl set_permissions -p / travel ".*" ".*" ".*" #删除guest用户 rabbitmqctl delete_user guest rabbitmq从3.3.0开始禁止使用guest/guest权限通过除localhost外的访问。 如果想使用guest/guest通过远程机器访问,需要在rabbitmq配置文件中(/etc/rabbitmq/rabbitmq.config)中设置loopbackusers为[]。 [{rabbit, [{loopbackusers, []}]}]. #管理界面 在浏览器中打开http://192.268.72.104:15672 #默认配置说明 cat /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.1/sbin/rabbitmq-defaults 系统prefix是空 配置文件路径是 /etc/rabbitmq/rabbitmq.config (erlang会自动加上.config后缀) 环境配置文件是 /etc/rabbitmq/rabbitmq-env.conf 日志文件目录是 /var/log/rabbitmq 插件文件目录是 安装目录下的plugins,这里RPM安装方式下是 /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.1/plugins 集群配置 1. 配置三台机器的主机名(三台机器分别执行) hostnamectl set-hostname server103 hostnamectl set-hostname server105 hostnamectl set-hostname server106 查看效果: hostname 配置三台机器的hosts解析(三台机器都添加如下配置) vi /etc/hosts 192.168.72.103 server103 192.168.72.105 server105 192.168.72.106 server106 2. 设置每个节点Cookie Rabbitmq的集群是依赖于erlang的集群来工作的,所以必须先构建起erlang的集群环境。Erlang的集群中各节点是通过一个magic cookie来实现的,这个cookie存放在 /var/lib/rabbitmq/.erlang.cookie 中,文件是400的权限。所以必须保证各节点cookie保持一致,否则节点之间就无法通信 选择其中一台作为集群主节点,将其cookiecopy到另外两台机器上。 chmod 700 /var/lib/rabbitmq/.erlang.cookie echo -n "YACWQCCKIKHSVKFFJYBL" > /var/lib/rabbitmq/.erlang.cookie chmod 400 /var/lib/rabbitmq/.erlang.cookie 网上看到有些朋友,将其中一台的cookie,远程发送到其他节点服务器,这样容易导致cookie文件的属组变化,默认为rabbitmq,下面的一个错误会提到。 #修改cookie后需要重启mq ps -ef | grep ^rabbitmq | awk '{print $2}' | xargs kill -9 service rabbitmq-server start 常见的启动失败: Starting rabbitmq-server (via systemctl): Job for rabbitmq-server.service failed because the control process exited with error code. S企业出海是什么意思ee "systemctl status rabbitmq-server.service" and "journalctl -xe" for details. 查看日志: tail -f /var/log/rabbitmq/startup_log {error_logger,{{2019,2,19},{16,10,19}},"Error when reading /var/lib/rabbitmq/.erlang.cookie: eacces",[]} {error_logger,{{2019,2,19},{16,10,19}},crash_report,[[{initial_call,{auth,init,['Argument__1']}},{pid,<0.20.0>},{registered_name,[]},{error_info,{exit,{"Error when reading /var/lib/rabbitmq/.erlang.cookie: eacces",[{auth,init_cookie,0,[{file,"auth.erl"},{line,285}]},{auth,init,1,[{file,"auth.erl"},{line,139}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,304}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]},[{gen_server,init_it,6,[{file,"gen_server.erl"},{line,328}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}},{ancestors,[net_sup,kernel_sup,<0.10.0>]},{messages,[]},{links,[<0.18.0>]},{dictionary,[]},{trap_exit,true},{status,running},{heap_size,610},{stack_size,27},{reductions,643}],[]]} 主要是访问cookie失败导致的,可以尝试修改cookie的权限和属组: cd /var/lib/rabbitmq/ chown rabbitmq:rabbitmq .erlang.cookie chmod 400 .erlang.cookie 启动成功后查看状态: rabbitmqctl status 状态显示可能会遇到链接不上的错误,如下: Status of node rabbit@server104 ... Error: unable to connect to node rabbit@server104: nodedown DIAGNOSTICS attempted to contact: [rabbit@server104] rabbit@server104: * connected to epmd (port 4369) on server104 * epmd reports node 'rabbit' running on port 25672 * TCP connection succeeded but Erlang distribution failed * suggestion: hostname mismatch? * suggestion: is the cookie set correctly? * suggestion: is the Erlang distribution using TLS? 原因: RabbitMQ的erlang.cookie和用户的cookie冲突了,需要用rabbitmq的cookie去覆盖用户的cookie。 解决方式: sudo cp /var/lib/rabbitmq/.erlang.cookie ——/.erlang.cookie 重启 加入集群 将 server103、server105 、server106组成集群: 默认是磁盘节点,如果是内存节点的话,需要加--ram参数 在server103、server105上分别运行: rabbitmqctl stop_app rabbitmqctl join_cluster rabbit@server106 --ram rabbitmqctl start_app #将节点从集群中去掉 rabbitmqctl forget_cluster_node rabbit@server104 节点恢复过程中把数据删掉很重要,恢复一单结点,再清数据 节点增加: 1. rabbitmq-server -detached --- .erlang.cooike的权限,400 属主rabbitmq 2. rabbitmqctl stop_app 3. rabbitmqctl join_cluster --ram rabbit@rabbitmq1 4. rabbitmqctl start_app 5. rabbitmqctl cluster_status 节点删除 1. rabbitmq-server -detached 以上为基础,正常运行的mq节点直接进行2、3两步;4可省略或更改为rabbitmqctl stop 2. rabbitmqctl stop_app 3. rabbitmqctl reset 4. rabbitmqctl start_app 设置镜像策略 rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}' 如果想切换节点类型,譬如由disc-->ram,可以先恢复到单结点,重启,清数据,再添加集群。 |
上一篇:敦煌网|拼团促销攻略
下一篇:DHgate|店铺商品优惠券使用
基于对传统行业渠道的理解,对互联网行业的渠道我们可以下这样一个定义:一切...
小米应用商店的后台操作和苹果是比较相似的,因为都能填写100字符关键词,允许...
小米的规则目前是在变更中的,但是根据经验小米的搜索排名评分的高低是个很重...
为了恰饭,有时候是要接入一些广告的,所以FB也专门有一个广告的SDK,这就是A...
在 2018 年于旧金山举行的游戏开发者大会上,Amazon Web Services (AWS) 曾宣布,目前世...
关于Facebook Audience Network如何收款的问题,其实官方已经给了详细的步骤。本文主要...
本文介绍了Audience Network对广告载体的质量检查,以及它重点广告形式需要注意的问...
随着iOS开发,作为开发者或公司需要针对iOS App开发涉及的方方面面作出对应的信息...
Facebook和谷歌对出海企业广告渠道都很熟悉,但事实上,在国外还有一些渠道也很...
卖家从做号的第1分钟开始,就一定要想好变现路径是什么?一定要以变现为目的去...
小提示:您应该对本页介绍的“阿里云环境迁移记录 - RabbitMQ集群搭建”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通阿里云环境迁移记录 - RabbitMQ集群搭建的相关事宜。
关键词:阿里云环境迁移记录,-,R