当前位置: 首页 > news >正文

佛山优秀网站建设大学电子商务网站建设方案

佛山优秀网站建设,大学电子商务网站建设方案,环保网站建设维护情况报告,百度自助建站官网RabbitMQ集群搭建详细介绍以及解决搭建过程中的各种问题——实操型 1. 准备工作1.1 安装RabbitMQ1.2 简单部署搭建设计1.3 参考官网 2. RabbitMQ 形成集群的方法3. 搭建RabbitMQ集群3.1 部署架构3.2 rabbitmq集群基础知识3.2.1 关于节点名称#xff08;标识符#xff09;3.2.… RabbitMQ集群搭建详细介绍以及解决搭建过程中的各种问题——实操型 1. 准备工作1.1 安装RabbitMQ1.2 简单部署搭建设计1.3 参考官网 2. RabbitMQ 形成集群的方法3. 搭建RabbitMQ集群3.1 部署架构3.2 rabbitmq集群基础知识3.2.1 关于节点名称标识符3.2.1.1 节点名称3.2.1.2 主机解析 3.2.2 端口访问3.2.3 群集中的节点3.2.3.1 配置 Erlang Cookie 3.3 搭建集群步骤3.3.1 开放4369端口、25672端口3.3.2 修改每台机器的 /etc/hosts 文件3.3.3 停止服务、配置 Erlang Cookie3.3.4 启动独立节点3.3.5 创建集群3.3.5.1 创建集群步骤3.3.5.2 遇到的问题3.3.5.2.1 问题13.3.5.2.1 问题2——移除节点之后重新加入的问题 3.3.6 查看集群状态命令查看3.3.7 查看集群状态UI界面查看 3.4 为集群创建用户3.5 集群——简单实用3.5.1 查看是否启用了自动集群发现机制3.5.2 自动集群发现机制简单演示 3.6 解除集群节点 4. 镜像队列4.1 普通模式集群存在的问题4.1.1 演示问题——不能备份4.1.2 引入镜像队列 1. 准备工作 1.1 安装RabbitMQ 准备3台机器分别安装上RabbitMQ这里就不多说了关于安装可以参考下面的文章里面写的很详细如下 RabbitMQ入门RabbitMQ的安装 解决RabbitMQ安装过程中的版本等问题 解决启动RabbitMQ服务失败等问题 Java客户端使用. 1.2 简单部署搭建设计 服务器情况 节点(理解用)节点名称计算生成主机名主机IPnode1rabbitVM-24-15-centosVM-24-15-centos49.xxx.99node2rabbithello-TQ2hello-TQ215xxxx212node3rabbithello_TQ1hello_TQ143.xxx.116 部署设计如下 1.3 参考官网 找官网参考如下 https://www.rabbitmq.com/clustering.html#node-count. 2. RabbitMQ 形成集群的方法 官方说了以下几种感兴趣的可以试试 接下来介绍的是最好一种手动使用 rabbitmqctl 3. 搭建RabbitMQ集群 3.1 部署架构 这里详细见1.2中的介绍。 3.2 rabbitmq集群基础知识 3.2.1 关于节点名称标识符 3.2.1.1 节点名称 RabbitMQ 节点由节点名称标识。节点名称由两部分组成前缀通常是 rabbit和主机名。例如rabbitnode1.messaging.svc.local 是一个节点名称前缀为 rabbit主机名为 node1.messaging.svc.local。再例如rabbitVM-24-15-centos、rabbithello_TQ1。在群集中节点使用节点名称相互标识和联系。这意味着必须解析每个节点名称的主机名部分。CLI 工具还使用节点名称识别和寻址节点。当节点启动时它会检查是否已为其分配节点名称。这是通过RABBITMQ_NODENAME环境变量完成的。如果未显式配置任何值则节点将解析其主机名并将 rabbit 附加到它以计算其节点名称。 3.2.1.2 主机解析 如下 3.2.2 端口访问 开放4369端口、25672端口关于相关端口如下 3.2.3 群集中的节点 3.2.3.1 配置 Erlang Cookie CLI工具如何对节点进行身份验证以及节点之间的身份验证 RabbitMQ 节点和 CLI 工具例如 rabbitmqctl使用 cookie 来确定它们是否被允许相互通信。为了使两个节点能够通信它们必须具有相同的共享密钥称为Erlang cookie。Cookie 只是一个字母数字字符字符串最大为 255 个字符。它通常存储在本地文件中。该文件必须仅供所有者访问例如具有 600 或类似的 UNIX 权限。每个群集节点必须具有相同的 Cookie。 关于cookie 文件的位置 RabbitMQ 服务启动时erlang VM 会自动创建该 cookie 文件cookie通常位于 /var/lib/rabbitmq/.erlang.cookie由服务器使用和$HOME/.erlang.cookie由CLI工具使用中。 所以下面搭建集群时需要统一一下.erlang.cookie文件要求相同的 Cookie 将node1机器上的.erlang.cookie文件分别拷贝到node2和node3上拷贝时候记得停止RabbitMQ服务。 3.3 搭建集群步骤 3.3.1 开放4369端口、25672端口 云服务器的话开放 4369、25672 端口如果防火墙是开启的话执行下面命令firewall-cmd --state # 查看防火墙的状态sudo firewall-cmd --add-port4369/tcp --permanent sudo firewall-cmd --add-port25672/tcp --permanentfirewall-cmd --reloadfirewall-cmd --list-all如果不开放此端口后面执行 rabbitmqctl stop_app 时报错不能链接此端口。 3.3.2 修改每台机器的 /etc/hosts 文件 vim /etc/hosts让集群节点间需能互相访问故每个集群节点的hosts文件应包含集群内所有节点的信息以保证互相解析。 需要注意的是这里的主机名不是随便填写的你要看你3台服务器的主机名是什么比如我在node1节点的主机名是VM-24-15-centosnode2节点的主机名是hello-TQ2node3节点的主机名是hello_TQ1所以我在每台服务器上的配置如下服务器IP1 VM-24-15-centos 服务器IP2 hello-TQ2 服务器IP3 hello_TQ1重启网络便于系统识别hostssystemctl restart network备注如果你是刚初始化的服务器可以修改主机名但是如果你服务器上已经装了很多东西就没必要修改主机名了谨慎修改关于修改主机名的可以看下面的文章 云服务器修改主机名hostname. 3.3.3 停止服务、配置 Erlang Cookie 这个详细的话见上面说的操作的话只需将node1我这里是VM-24-15-centos主机上的.erlang.cookie文件分别拷贝到 node2 和 node3 对应的机器上。停止所有服务构建Erlang的集群环境systemctl stop rabbitmq-server或 service rabbitmq-server stop开始拷贝.erlang.cookiescp /var/lib/rabbitmq/.erlang.cookie rootnode2服务IP:/var/lib/rabbitmq/ scp /var/lib/rabbitmq/.erlang.cookie rootnode3服务IP:/var/lib/rabbitmq/3.3.4 启动独立节点 启动三台RabbitMQ以正常方式在所有节点上启动 RabbitMQ启动命令rabbitmq-server -detached3.3.5 创建集群 3.3.5.1 创建集群步骤 为了将集群中的三个节点连接起来我们告诉其中两个节点比如rabbithello-TQ2和rabbithello_TQ1加入node1节点的集群比如rabbitVM-24-15-centos。在此之前必须重置两个新加入的成员。 分别在要加入的两个机上上执行下面的操作命令rabbitmqctl stop_app # 1.关闭RabbitMQ服务rabbitmqctl reset # 2.重置节点# 3.节点加入, 在一个node加入cluster之前必须先停止该node的rabbitmq应用即先执行stop_app rabbitmqctl join_cluster rabbitVM-24-15-centosrabbitmqctl start_app # 4.启动服务注意 abbitmqctl stop 会将Erlang虚拟机关闭rabbitmqctl stop_app 只关闭rabbitMQ服务rabbitmqctl start_app 只启动应用服务 加入节点、重置节点注意 我们首先将 rabbithello-TQ2与rabbithello_TQ1 加入一个集群。为此我们要在 rabbithello-TQ2与rabbithello_TQ1 上停止 RabbitMQ 应用程序并加入 rabbitVM-24-15-centosnode1节点 群集然后重新启动 node2、node3的RabbitMQ 应用程序。请注意节点必须重置后才能加入现有群集。重置节点会删除该节点上以前存在的所有资源和数据。这意味着节点不能在成为群集成员的同时保留其现有数据。如果需要这样做可以使用蓝/绿部署策略或备份和还原。 操作如下 3.3.5.2 遇到的问题 3.3.5.2.1 问题1 问题如下unable to connect to epmd (port 4369) on VM-24-15-centos: nxdomain (non-existing domain)解决问题修改/etc/hosts让集群节点间需能互相访问故每个集群节点的hosts文件应包含集群内所有节点的信息以保证互相解析。如果按上面步骤操作应该不会报这个错所以此处不做过多解释详细见3.3.2节。 3.3.5.2.1 问题2——移除节点之后重新加入的问题 问题描述第一次加没问题移除再次加入直接报错在执行rabbitmqctl reset 命令时报错错误如下Error: {:cannot_start_mnesia, {{:shutdown, {:failed_to_start_child, :mnesia_kernel_sup, :killed}}, {:mnesia_app, :start, [:normal, []]}}}解决问题 第一先解决上面的问题解决方法就是删除存储的数据如下cd /var/lib/rabbitmq/mnesia/rabbithello_TQ1 rm -rf ./*cd /var/lib/rabbitmq rm -rf erl_crash.dump rm -rf MnesiaCore*第二解决之后换了新错误如下 Error: {:corrupt_or_missing_cluster_files, {:error, :enoent}, {:error, :enoent}}解决问题rest之前执行一下命令rabbitmqctl cluster_status一连串的操作如下上面那个应该也可以按这个解决不用手动rm-rf不知道没尝试但是感觉可以rabbitmq-server -detached rabbitmqctl start_app # 先启 rabbitmqctl cluster_status rabbitmqctl stop_app # 再停 rabbitmqctl reset # 重置rabbitmqctl join_cluster rabbitVM-24-15-centos rabbitmqctl start_app3.3.6 查看集群状态命令查看 通过在任一节点上运行 rabbitmqctl cluster_status 命令我们可以看到这两个节点已加入集群中rabbitmqctl cluster_status3.3.7 查看集群状态UI界面查看 如下 3.4 为集群创建用户 如下在任一台机器上创建即可创建之后3个IP都可以登录rabbitmqctl add_user mqAdmin2 123456rabbitmqctl set_user_tags mqAdmin2 administratorrabbitmqctl set_permissions -p / mqAdmin2 .* .* .*3.5 集群——简单实用 3.5.1 查看是否启用了自动集群发现机制 rabbitmq集群发现机制 如果集群中默认配置中启用了RabbitMQ的自动集群发现机制。那么在一个节点上创建Exchange或Queue时它会自动地在整个集群中被发现。当您在一个节点上创建Exchange或Queue时该节点会将其信息广播到整个集群中其他节点会收到这个广播消息并自动地创建相应的Exchange或Queue。这种方式可以使得集群中的Exchange和Queue自动地分布到所有节点上从而提高系统的可用性和可伸缩性。 另外前提我这里的版本是 RabbitMQ 3.9.13 Erlang 23.3.4.18没有找到默认的 rabbitmq.conf 文件 或 rabbitmq.conf.d文件。 一般情况下这两个文件在/etc/rabbitmq目录下如果有这个配置文件的可以查看配置文件里的 cluster_formation.peer_discovery_backend 行的配置如果该行的值为rabbit_peer_discovery_classic_config则表示启用了自动集群发现机制。如果该行的值为其他任何值则表示未启用自动集群发现机制。如果没有配置文件的也可通过 rabbitmqctl environment 命令查看配置如下rabbitmqctl environment | grep peer_discovery_backend3.5.2 自动集群发现机制简单演示 如下在node1上和node3上分别创建一个队列其他节点上都能发现 并且可以消费消费一次在node2上消费之后其他节点就不会再有此已消费的消息。 3.6 解除集群节点 如果想解除node3rabbithello_TQ1 首先在node3机器上做如下操作命令如下rabbitmqctl stop_app # 关闭rabbitMQ服务然后在node1上做忘记node3节点的操作如下rabbitmqctl forget_cluster_node rabbithello_TQ1操作此命令之前一定要先关闭被忘记的节点的服务否则如下错误 根据提示可知上面两步操作可以都在node1上完成直接先stop再forget如下rabbitmqctl -n rabbithello-TQ2 stop_apprabbitmqctl forget_cluster_node rabbithello-TQ24. 镜像队列 4.1 普通模式集群存在的问题 4.1.1 演示问题——不能备份 上面集群虽然可以启动自动集群发现机制但是存在的问题是如果创建队列发送消息的rabbitmq服务宕机了消息就丢失了比如上面node3节点上创建了队列发送了消息其他node可以发现但是如下现在node3宕机了再看下效果 所以问题是只能被发现但是没有备份 4.1.2 引入镜像队列 RabbitMQ的自动集群发现机制可以帮助集群中的Exchange和Queue自动地分布到所有节点上从而提高系统的可用性和可伸缩性。然而这种机制并不能完全保证消息的高可用性。如果某个节点出现故障该节点上的Exchange和Queue可能会丢失或不可用从而导致消息丢失或无法传递。为了解决这个问题RabbitMQ提供了镜像队列Mirrored Queue的功能。关于镜像队列的见下篇
http://www.yutouwan.com/news/213354/

相关文章:

  • 怎样建设游戏网站网站黑链
  • 网站被墙了什么意思nodejs的网站开发
  • 国外做足球数据的网站有哪些建设软件资源网站
  • 文联网站建设方案有什么国企是做网站的
  • 北京有什么网上推广的网站吗p2p商城网站建设方案
  • h5网站开发工具有哪些网站建站专业
  • 网站建设多少钱需要excel做网站页面布局
  • 地方网站域名选择wordpress 自动超链接
  • 网站安全建设步骤网页设计学校网站制作
  • 企业网站策划大纲模板html网页设计模板和源代码
  • 哪个公司做网站推广最好dw做网站时怎么改为绝对路径
  • 旅游网站建设建议中山建站服务
  • 珠海企业网站设计公司做会计需要了解的网站及软件
  • 怎么制作营销网站开发者模式开着好不好
  • 网站源码客户网站设计公司 上海
  • 一站式做网站费用动漫制作专业累吗
  • 找人做网站一般要多少钱象山县建设局网站
  • 南京建设企业网站推广软文300字范文
  • 手机网站 扁平化趋势网站建设售后服务合同
  • 黑龙江建设网官方网站特种作业python3 网站建设
  • 建网站和建网页的区别wordpress仿北京时间
  • 贵阳网站建设多钱钱线上推广费用预算
  • 做网站 域名 网站 空间wordpress 访客 用户
  • 做网站怎么优化wordpress 缓慢
  • 做网站jw100商务网站是什么
  • 卫生监督 网站建设方案现在还有人做网站吗
  • 做盗版视频网站吗企业网站制作报价单
  • 能用pinduoduo做网站吗极速微网站建设cms
  • 无锡公司做网站塘沽做网站公司
  • 制作logo免费网站微网站建设开发