首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在与emqx代理相同的设备上获得haproxy并保持工作状态

如何在与emqx代理相同的设备上获得haproxy并保持工作状态
EN

Server Fault用户
提问于 2019-02-06 18:07:03
回答 1查看 2.2K关注 0票数 0

我对此很陌生,所以请耐心点。

我的设置基本上是使用mqtt的设备,通过两个代理连接,两个代理都在运行emqx。两个emqx代理程序也应该被设置为haproxy负载平衡器,并保持不变,以防出现故障。

经纪人1's IP是192.168.1.201

经纪人2's IP地址是192.168.1.202

维持的虚拟IP为192.168.1.200

haproxy.cfg是

代码语言:javascript
复制
frontend emqx_tcp
    bind *:1883
    option tcplog
    mode tcp
    default_backend emqx_tcp_back

backend emqx_tcp_back
    balance roundrobin
    server emqx_node_1 192.168.1.201:1883 check
    server emqx_node_2 192.168.1.202:1883 check

keepalived.conf是

代码语言:javascript
复制
global_defs {
        lvs_id haproxy01
}

vrrp_sync_group SyncGroup01 {
        group {
                VI_1
        }
}

vrrp_script chkhaproxy {
        script "/usr/bin/killall -0 haproxy"
        script "/usr/sbin/service haproxy start"
        interval 9
        timeout 3
        weight 20
        rise 2
        fall 4
}

vrrp_instance VI_1 {
        interface eth0                # interface to monitor
        state MASTER
        virtual_router_id 51          # Assign one ID for this route
        priority 101                  # 101 on MASTER, 100 on BACKUP
        advert_int 5
        authentication {
                auth_type PASS
                auth_pass password
        }
        virtual_ipaddress {
                192.168.1.200         # the virtual IP
        }
        track_script {
                chkhaproxy
        }
}

问题是,我似乎既不能得到代理,也不能按预期保持工作。当我只运行代理1(未运行),直接从客户端连接到代理1's IP地址时,似乎只将连接转发到broker 2。它似乎无法连接到broker 1(是的,我检查了它们是否都已启动)。如果只挂起broker 2,客户端就不会连接)。经过一番调查,我认为这可能是因为haproxy和代理使用相同的IP。所以我试着用一个虚拟IP来保存。但是在尝试之后,我发现我甚至无法连接到虚拟IP。客户端试图连接到它时,会给我错误"OSError:Errno 113 No路由到主机“。

我遗漏了什么?

编辑:在使用this /var/log/syslog跟踪日志时,结果是

2月7日14:56:19 pi01 Keepalived_healthcheckers10453:打开文件‘/etc/ file’。2月7日14:56:19 pi01 Keepalived_healthcheckers10453:未知关键字'lvs_id‘2月7日:56:19 pi01 Keepalived_vrrp10454:默认接口eth0不存在,也没有指定接口。跳过静态地址192.168.1.200。2月7日14:56:19 pi01 Keepalived_vrrp10454:无法加载ipset库- libipset.so.3:无法打开共享对象文件:没有这样的文件或目录2月7日14:56:19 pi01 Keepalived_vrrp10454:VRRP_Instance(VI_1)未知接口!pi01 Keepalived_healthcheckers10453:使用LinkWatch内核netlink反射器.2月7日14:56:20 pi01 Keepalived_vrrp10454:Stopped 14:56:20 pi01 Keepalived10450:Keepalived_vrrp与永久错误配置一起退出。终止2月7日14:56:20 pi01 Keepalived10450:Stopped 7 14:56 pi01 Keepalived_healthcheckers10453:Stopped 7 14:56:25 pi01 Keepalived10450:Stopped Keepalivev1.3.2(2016年12月25日)

它似乎在使用"LinkWatch内核netlink反射器“时始终失败。

EN

回答 1

Server Fault用户

发布于 2019-02-06 20:39:47

第一个问题: HAProxy被配置为在emqx使用的同一个端口上的所有接口上侦听。这会给你带来麻烦的。

如果您想让它们使用相同的端口,或者让HAProxy和emqx侦听不同的端口,就可以为保留的/HAProxy侦听器设置一个特定的NIC。

一旦你成功了,就该看看“守护神”了。我最好的建议是跟踪你的日志。确保主机和备份之间的路由器ID是相同的,并且备份得到的优先级比主机低。坦率地说,我不记得从我的头顶,如果你必须允许mac欺骗或类似的开关,使VRRP (协议所使用的保持)工作。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/952653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档