专栏首页大数据入坑指南Rabbitmq haproxy keepalived ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN.

Rabbitmq haproxy keepalived ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN.

在使用java连接rabbitmq时报如下错误:

Exception in thread "main" com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:339)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:813)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:767)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:857)
at com.gildata.RabbitProducer.getConnection(RabbitProducer.java:37)
at com.gildata.RabbitProducer.publish1(RabbitProducer.java:42)
at com.gildata.RabbitProducer.main(RabbitProducer.java:27)

出现这种错误的情况有多种,比如guest用户访问时只允许localhost访问,或者用户名密码错误等。

我的rabbitmq运用到了haproxy和keepalived来实现高可用的负载均衡,直接通过haproxy机器的IP访问时是没问题的,但是使用keepalived的VIP来访问就有问题,后来通检查发现需要在keepalived.conf做相应的配置,keepalived.conf配置如下: MASTER上的keepalived.conf

global_defs {
        notification_email {
                ric@xxx.com
        }   
        notification_email_from cloud@xxx.com
        smtp_server smtp.xxx.com  # NAU Mail Relay Server
        smtp_connect_timeout 300 
        router_id NodeA
        vrrp_skip_check_adv_addr
        vrrp_garp_interval 0
        vrrp_gna_interval 0
}

#自定义监控脚本
vrrp_script chk_haproxy {
        script "/etc/keepalived/check_haproxy.sh"
        interval 5
        weight 2
}

vrrp_instance VI_1 {
        state MASTER # MASTER on haproxy1, BACKUP on haproxy2
        interface ens160 #interface to monitor
        virtual_router_id 51
        priority 101 # 101 on haproxy1, 100 on haproxy2
        advert_int 1
        smtp_alert # Activate SMTP notifications
        authentication {
                auth_type PASS
                auth_pass 1111
        }
        track_script {
                chk_haproxy
        }
        track_interface {
                ens160
        }
        virtual_ipaddress {
                10.1.12.200 #virtual ip address
        }
}

#虚拟服务器定义块
virtual_server 10.1.12.200 5672 {
        delay_loop 30
        lb_algo wrr
        lb_kind NAT
        persistence_timeout 50
        protocol TCP

        real_server 10.1.12.146 5670 {
                weight 2
                TCP_CHECK {
                        connect_port 5670
                        connect_timeout 3
                }
        }
}

BACKUP上的keepalived.conf

global_defs {
        notification_email {
                ric@xxx.com
        }
        notification_email_from cloud@xxx.com
        smtp_server smtp.gildata.com  # NAU Mail Relay Server
        smtp_connect_timeout 300
        router_id NodeA
        vrrp_skip_check_adv_addr
        vrrp_garp_interval 0
        vrrp_gna_interval 0
}

#自定义监控脚本
vrrp_script chk_haproxy {
        script "/etc/keepalived/check_haproxy.sh"
        interval 5
        weight 2
}

vrrp_instance VI_1 {
        state BACKUP # MASTER on haproxy1, BACKUP on haproxy2
        interface ens160 #interface to monitor
        virtual_router_id 51
        priority 100 # 101 on haproxy1, 100 on haproxy2
        advert_int 1
        smtp_alert # Activate SMTP notifications
        authentication {
                auth_type PASS
                auth_pass 1111
        }
        track_script {
                chk_haproxy
        }
        track_interface {
                ens160
        }
        virtual_ipaddress {
                10.1.12.200 #virtual ip address
        }
}

#虚拟服务器定义块
virtual_server 10.1.12.200 5672 {
        delay_loop 30
        lb_algo wrr
        lb_kind NAT
        persistence_timeout 50
        protocol TCP

        real_server 10.1.12.151 5670 {
                weight 2
                TCP_CHECK {
                        connect_port 5670
                        connect_timeout 3
                }
        }
}

注意其中的虚拟服务器定义块这一部分,当时就是由于缺少这一部分的配置,使得程序一直报错。 Java客户端连接的时候IPAddress使用的是VIP,port使用的是5672

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • cmd下运行java程序报错:错误: 找不到或无法加载主类

    通常出现这种问题有以下三种原因: 第一:环境变量配置不正确,配置环境变量时一定要将CLASSPATH配上,(配置教程) 第二:执行方法有误,进入java...

    我是李超人
  • crontab JAVA_HOME not found

    虽然环境变量中配置的JAVA_HOME,但是crontab在执行shell脚本时依然报JAVA_HOME not found。需要在shell脚本上方手动配置环...

    我是李超人
  • CentOs7下Zabbix安装教程——准备工作

    CentOs7下安装zabbix 关闭selinux 1.临时关闭(不用重启机器): setenforce 0 设...

    我是李超人
  • 权限何必那么高

    用户1127987
  • iOS开发·网络请求方法总结复习(NSURLConnection,NSURLSession,AFNetworking)

    iOS的开发中的网络下载方式包括NSData(最原始,实际开发基本不会用),NSURLConnection(古老又过气的苹果原生网络框架),NSURLSessi...

    陈满iOS
  • 程序员通过跳槽来涨工资是否比较普遍?

    从事软件开发十几年,加上现在创业的公司总共经历了四家企业,可以肯定的讲程序员通过跳槽涨工资是一种有效的方法,但如果仅仅是为了提高收入而跳槽这种容易把自己导向一个...

    程序员互动联盟
  • 数据库

    1.分组查询 -- 查询选修三门课以上的学生的学号 select Sno from SC group by Sno having count(*)>3; 2.修...

    yawn
  • Kubernetes与区块链

    一切都那么快,难以想象,如火如荼的Kubernetes刚刚才满三岁,但是它现在的影响力却是空前绝后的。甚至说,它将成为IT历史上最成功的开源软件。

    CNCF
  • objective-C中的扩展方法与partial class

     在c#中要扩展一个现有类很容易,比如这样: public static class Utils { public static void PrintT...

    菩提树下的杨过
  • 【论文笔记】Optimized Cost per Click in Taobao Display Advertising

    淘宝作为世界上最大的电商平台,每天为上百万的广告主提供十亿多在线广告曝光的机会。从商业目的上说,广告主为特定的场景和目标人群进行竞标以竞争商业流量。平台方在十毫...

    公众号-不为谁写的歌

扫码关注云+社区

领取腾讯云代金券