连接rabbitmq集群报ProbableAuthenticationError

来源:互联网 发布:百度人工智能研究 编辑:程序博客网 时间:2024/06/05 00:35
   

我有3台rabbitmq节点,rabbitmq版本3.6.5,linux为centos7,组成一个集群,并且使用了haproxy负载均衡策略,haproxy版本为1.7.5,haproxy配置文件如下:

# HAProxy Config for Local RabbitMQ Cluster#/(hap.0) Logging optionsgloballog 127.0.0.1local0 infomaxconn 4096stats socket /tmp/haproxy.socket uid haproxy mode 770 level admindaemon#/(hap.1) Load balancing defaultsdefaultslogglobalmode    tcpoptiontcplogoptiondontlognullretries3option redispatchmaxconn2000timeout connect5stimeout client 120stimeout server 120s#/(hap.2) Front-end IP for our consumers and producerslisten rabbitmq_local_cluster    bind 127.0.0.1:5670    timeout client 3h    timeout server 3h    #/(hap.3) Load balancing options    mode tcp    balance roundrobin    #/(hap.4) Cluster nodes HAProxy will be load balancing.                server rabbit1 10.100.73.241:5672 check inter 5000 rise 2 fall 3    server rabbit2 10.100.73.129:5672 check inter 5000 rise 2 fall 3    server rabbit3 10.100.73.216:5672 check inter 5000 rise 2 fall 3#/(hap.5) Statistics pagelisten private_monitoring     bind 10.100.73.241:8100    mode http    option httplog    stats enable    stats uri   /stats    stats refresh 5s   



我用python写了一个脚本consumer.py文件,想测试集群,consumer.py连接集群部分内容如下:

if __name__ == "__main__":    AMQP_SERVER = sys.argv[1]    AMQP_PORT = int(sys.argv[2])        #/(ctc.3) Establish broker connection settings    creds_broker = pika.PlainCredentials("guest", "guest")    conn_params = pika.ConnectionParameters( AMQP_SERVER,                                             port=AMQP_PORT,                                             virtual_host="/",                                             credentials=creds_broker)

然后我在终端输入#python consumer.py localhost  5670   ,然后就报错ProbableAuthenticationError,意思就是登录失败

在网上查说是guest用户仅限于localhost连接,不能用于远程连接,要想用于远程连接,就必须修改rabbitmq配置文件

#cp /usr/share/doc/rabbitmq-server-3.6.2/rabbitmq.config.example   /etc/rabbitmq/rabbitmq.config

#vi  /etc/rabbitmq/rabbitmq.config
将%% {loopback_users, [<<"guest">>]},   改为 {loopback_users, []},改完后重启,我按照网上说的做,结果rabbitmq启动不了,还报如下错误:

{"could not start kernel pid",application_controller,"error in config file "/etc/rabbitmq/rabbitm.config\" (296): syntax error before ']' "}

我又改回来,又可以启动了,后来又在网上搜到了另一个解决办法:

Starting with RabbitMQ 3.3 you need to create a new account to use remotely, andguest/guest can only be used locally.
翻译过来就是从3.3版本开始远程连接只能新创建用户,guest只能本地连接,所以

远程访问rabbitmq:自己增加一个用户,步骤如下:l1.  创建一个admin用户:sudo rabbitmqctl add_user admin 123123l2.  设置该用户为administrator角色:sudo rabbitmqctl set_user_tags admin administratorl3.  设置权限:sudo rabbitmqctl  set_permissions  -p  '/'  admin '.' '.' '.'l4.  重启rabbitmq服务:sudo service rabbitmq-server restart之后就能用admin用户远程连接rabbitmq server了。


创建完后,修改consumer.py文件,将连接信息改为如下

if __name__ == "__main__":    AMQP_SERVER = sys.argv[1]    AMQP_PORT = int(sys.argv[2])        #/(ctc.3) Establish broker connection settings    creds_broker = pika.PlainCredentials("admin", "123123")    conn_params = pika.ConnectionParameters( AMQP_SERVER,                                             port=AMQP_PORT,                                             virtual_host="/",                                             credentials=creds_broker)

在终端输入#python consumer.py localhost  5670
就ok了,连上了集群,通过了负载均衡测试,原来就是换一个账号,别用guest,如果你的集群是在一台机器上搭建的,即单机模式的话,guest说不定可以,我没试过

0 0