我在rabbitmq-serverLucid EC2 实例上进行了全新安装。主机名设置正确,但 rabbitmq 不会获取主机名,并坚持调用自身localhost。知道如何说服它吗?
$ cat /etc/hostname
mifune
$ hostname
mifune
$ cat /etc/hosts
127.0.0.1 localhost mifune
...
$ sudo rabbitmqctl status
Status of node rabbit@localhost ...
[{running_applications,[{rabbit,"RabbitMQ","1.7.2"},
{mnesia,"MNESIA CXC 138 12","4.4.12"},
{os_mon,"CPO CXC 138 46","2.2.4"},
{sasl,"SASL CXC 138 11","2.1.8"},
{stdlib,"ERTS CXC 138 10","1.16.4"},
{kernel,"ERTS CXC 138 10","2.13.4"}]},
{nodes,[rabbit@localhost]},
{running_nodes,[rabbit@localhost]}]
...done.
Run Code Online (Sandbox Code Playgroud) 我想在 Ubuntu 10.04 上卸载 RabbitMQ,并发出以下命令:
sudo apt-get --purge autoremove rabbitmq-server
Run Code Online (Sandbox Code Playgroud)
它卸载了所有依赖项,例如 erlang 库,但未能删除 rabbitmq-server 本身。
当我重复上面的命令时,我得到:
(Reading database ... 26297 files and directories currently installed.)
Removing rabbitmq-server ...
* Stopping message broker rabbitmq-server
* message broker already stopped
[ OK ]
invoke-rc.d: initscript rabbitmq-server, action "stop" failed.
dpkg: error processing rabbitmq-server (--purge):
subprocess installed pre-removal script returned error exit status 3
* Starting message broker rabbitmq-server
* FAILED - check /var/log/rabbitmq/startup_\{log, _err\}
[fail]
invoke-rc.d: initscript rabbitmq-server, action "start" failed.
dpkg: …Run Code Online (Sandbox Code Playgroud) 我已经设置了一个 RabbitMQ 集群,并且正在遵循有关设置镜像队列(高可用队列)的文档。它说:
通过将 ha-sync-mode 策略键设置为自动,可以将队列设置为自动同步。ha-sync-mode 也可以设置为手动。如果未设置,则假定为手动。
为什么手动同步是默认设置?手动同步有哪些用例?
同时,我使用了:
rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all", "ha-sync-mode": "automatic"}'
我在 Apache mod_proxy 后面运行了 RabbitMQ,因此我可以通过端口 80 访问 Web 管理界面:
<VirtualHost *:80>
ServerName rabbit.example.com
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:15672/
ProxyPassReverse / http://localhost:15672/
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
但是,这似乎有效,例如,当我转到“队列”页面并单击列出的队列之一时,我会看到一个“未找到”页面和一个如下所示的 URL:
http://rabbit.example.com/#/queues/%2F/myqueue
Run Code Online (Sandbox Code Playgroud)
同样的事情也适用于连接、频道等。我似乎只能访问首页,但任何更深的页面似乎都会导致未找到。
在 Apache mod_proxy 后面配置 RabbitMQ 的正确方法是什么?
我一直在按照官方文档一遍又一遍地在 CentOS7.2 上设置 sensu 但是我一直无法让它工作:
我似乎无法连接到 API。Uchiwa 给出了错误:
ALERT
Datacenter site1 returned:
Connection error. Is the Sensu API running?`
Run Code Online (Sandbox Code Playgroud)
我试过:curl -I http://localhost:4567/clients
...我没有得到回应。
这是/var/log/sensu/sensu-api.log http://pastebin.com/wHEHE0bH
我一直在创建一个脚本以使设置可重复。请参阅下面显示我的配置 的脚本:http : //pastebin.com/QEt5Msku 如果您在 CentOS7 上运行该脚本,它应该会重复这个问题。
问题在下面的回答中。在遵循在新 VM 上成功安装 sensu 的非官方指南之后,我比较了两个设置步骤,并在新 VM 上进行了几次构建后,一点一点地交换了步骤,我想出了用非官方指南中的一个替换 repo指向一个稍微不同的 URL 修复了我的问题(CentOS6 的 repo 但它适用于 7,它只安装了一个非当前版本 0.20.3)。
echo '[sensu]
name=sensu-main
baseurl=http://repos.sensuapp.org/yum/el/6/x86_64/
gpgcheck=0
enabled=1' > /etc/yum.repos.d/sensu.repo
Run Code Online (Sandbox Code Playgroud) 尝试使用时rabbitmqctl,出现以下错误:
$ which rabbitmqctl
/usr/sbin/rabbitmqctl
$ sudo rabbitmqctl status
/usr/lib/rabbitmq/bin/rabbitmqctl: line 29: exec: erl: not found
Run Code Online (Sandbox Code Playgroud)
(/usr/sbin/rabbitmqctl最有可能/usr/lib/rabbitmq/bin/rabbitmqctl在其来源中调用:/usr/lib/rabbitmq/bin/${SCRIPT}- guessing${SCRIPT}评估为rabbitmqctl)
但是,当简单地erl从 shell访问时,我按预期到达了 erlang shell
$ which erl
/usr/local/bin/erl
$ ls -la /usr/local/bin/erl
lrwxrwxrwx 1 root root 21 Jul 18 02:03 /usr/local/bin/erl -> ../lib/erlang/bin/erl
$ erl
Erlang R15B01 (erts-5.9.1) [source] [64-bit] [smp:16:16] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.9.1 (abort with ^G)
1>
Run Code Online (Sandbox Code Playgroud)
设置信息:
otp_src_R15B01.tar.gz 我在一个相当大的服务器(32GB RAM、duel SSD、Octa Core Intel 等)上运行一个 RabbitMQ 实例,并且有大量的应用程序从 RabbitMQ 发布和消费,没有任何问题。
今天早上在部署另一个应用程序时,它根本不会开始抱怨它无法连接。我减少了我的应用程序中的消费者数量,它连接得很好。查看我的 RabbitMQ 仪表板,我可以看到消费者数量固定为 900;再次增加我的应用程序中的使用者数量,并且该应用程序抛出各种无法连接到 RabbitMQ 的异常。
所以看看固定在 900 的消费者数量和我看到的行为,我猜我已经达到了某种消费者限制。
服务器闲置在 1% 并查看可用的 Erlang 进程,我看到了1048576 available,因此服务器上剩余大量容量。
我如何增加 900 名消费者的人为限制?
我使用以下命令删除了节点:
rabbitmqctl -n mynode@hostname stop_app
rabbitmqctl stop_app;
rabbitmqctl -n mynode@hostname reset
rabbitmqctl start_app;
Run Code Online (Sandbox Code Playgroud)
当我签入集群时,节点不再存在:
rabbitmqctl cluster_status
Run Code Online (Sandbox Code Playgroud)
问题是当我检查重置节点的状态时,节点仍然存在:
rabbitmqctl -n mynode@G2dev2 status
Run Code Online (Sandbox Code Playgroud)
所以我的问题是如何永久删除节点?
手册页上没有关于此的信息:https : //www.rabbitmq.com/man/rabbitmqctl.1.man.html
谢谢
rabbitmq ×8
apache-2.2 ×1
apt ×1
centos7 ×1
hostname ×1
mod-proxy ×1
monitoring ×1
redis ×1
sensu ×1
ubuntu ×1
ubuntu-10.04 ×1
uninstall ×1