『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 11786|回复: 21

[进阶教程] MQTT的主备方案

[复制链接]

5

主题

193

帖子

2718

积分

金牌会员

Rank: 6Rank: 6

积分
2718
金钱
2525
HASS币
0
发表于 2019-6-28 15:59:24 | 显示全部楼层 |阅读模式
本帖最后由 straw 于 2019-7-1 11:59 编辑

更新于2019-07-01

配置文件修改了一个bug


一个HASS同时连多个MQTT服务器的方法——MQTT桥接
https://bbs.hassbian.com/thread-7520-1-1.html
(出处: 『瀚思彼岸』» 智能家居第一站)
这个帖子里有人问主备问题,
我是这么实现的

说习惯了,virtual ip,也就是第2个ip
通过ip addr 看出来是这样的
5: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 8c:21:0a:d9:e5:11 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.204/24 brd 192.168.1.255 scope global br-lan
       valid_lft forever preferred_lft forever
    inet 192.168.1.205/24 scope global secondary br-lan
       valid_lft forever preferred_lft forever


这是keepalived的简单配置(在linux服务器上)

在第一台openwrt上是这样的:
config global_defs
config ipaddress
        option name     "ipaddress2"
        option address  "192.168.1.205/24"
        option device   "br-lan"
config vrrp_instance
        option name                     "VI_1"
        option state                    "MASTER"
        option interface                "br-lan"
        option auth_type                "PASS"
        option auth_pass                "passwordxxx"
        list virtual_ipaddress          "ipaddress2"
        option virtual_router_id        "128"
        option priority                 "128"
        option advert_int               "5"


在第2台openwrt上是这样配置的:/etc/config/keepalived
config global_defs
config ipaddress
        option name     "ipaddress2"
        option address  "192.168.1.205/24"
        option device   "br-lan"
config vrrp_instance
        option name                     "VI_1"
        option state                    "BACKUP"
        option interface                "br-lan"
        option auth_type                "PASS"
        option auth_pass                "passwordxxxx"
        list virtual_ipaddress          "ipaddress2"
        option virtual_router_id        "128"
        option priority                 "128"
        option advert_int               "5"



然后再enable keepalived为开机程序
/etc/init.d/keepalived enable
/etc/init.d/mosquitto enable

以上是keepalived的配置,当keepalived检测到vip不通时会自动在backup node上增加192.168.1.205。这样你的mqtt就不会中断了

---------------------------------

2台mqtt broker,
第一台broker原来的配置。
第二台mosquitto broker增加如下配置:
connection name
address firstnodeip:1883
topic # both "" ""
try_private true
notifications true
cleansession true


然后在2台broker上配置vip,用keepalived来控制vip

隐藏没有内容

游客,如果您要查看本帖隐藏内容请回复



评分

参与人数 1金钱 +20 收起 理由
+ 20 纳尼,还有这种操作?

查看全部评分

回复

使用道具 举报

5

主题

193

帖子

2718

积分

金牌会员

Rank: 6Rank: 6

积分
2718
金钱
2525
HASS币
0
 楼主| 发表于 2019-7-1 10:58:25 | 显示全部楼层
本帖最后由 straw 于 2019-7-1 12:01 编辑

说习惯了,virtual ip,也就是第2个ip
通过ip addr 看出来是这样的
5: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 8c:21:0a:d9:e5:11 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.204/24 brd 192.168.1.255 scope global br-lan
       valid_lft forever preferred_lft forever
    inet 192.168.1.205/24 scope global secondary br-lan
       valid_lft forever preferred_lft forever


这是keepalived的简单配置(在linux服务器上)

在第一台openwrt上是这样的:
config global_defs
config ipaddress
        option name     "ipaddress2"
        option address  "192.168.1.205/24"
        option device   "br-lan"
config vrrp_instance
        option name                     "VI_1"
        option state                    "MASTER"
        option interface                "br-lan"
        option auth_type                "PASS"
        option auth_pass                "passwordxxx"
        list virtual_ipaddress          "ipaddress2"
        option virtual_router_id        "128"
        option priority                 "128"
        option advert_int               "5"


在第2台openwrt上是这样配置的:/etc/config/keepalived
config global_defs
config ipaddress
        option name     "ipaddress2"
        option address  "192.168.1.205/24"
        option device   "br-lan"
config vrrp_instance
        option name                     "VI_1"
        option state                    "BACKUP"
        option interface                "br-lan"
        option auth_type                "PASS"
        option auth_pass                "passwordxxxx"
        list virtual_ipaddress          "ipaddress2"
        option virtual_router_id        "128"
        option priority                 "128"
        option advert_int               "5"



然后再enable keepalived为开机程序
/etc/init.d/keepalived enable
/etc/init.d/mosquitto enable
回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16410
金钱
11664
HASS币
45
发表于 2019-6-28 16:18:10 | 显示全部楼层
vip是什么啊?
回复

使用道具 举报

73

主题

1165

帖子

6643

积分

论坛元老

Rank: 8Rank: 8

积分
6643
金钱
5473
HASS币
30
发表于 2019-6-28 17:03:25 | 显示全部楼层
学习一下
回复

使用道具 举报

0

主题

52

帖子

801

积分

高级会员

Rank: 4

积分
801
金钱
749
HASS币
0
发表于 2019-6-28 18:00:25 | 显示全部楼层
简单点,可以用硬件的负载均衡器来做。
回复

使用道具 举报

15

主题

656

帖子

2832

积分

金牌会员

Rank: 6Rank: 6

积分
2832
金钱
2175
HASS币
91

教程狂人

QQ
发表于 2019-6-28 18:40:58 | 显示全部楼层
大家都在攻MQTT
回复

使用道具 举报

3

主题

37

帖子

413

积分

中级会员

Rank: 3Rank: 3

积分
413
金钱
376
HASS币
0
发表于 2019-6-28 21:32:18 来自手机 | 显示全部楼层
谢谢分享
回复

使用道具 举报

15

主题

335

帖子

2454

积分

金牌会员

Rank: 6Rank: 6

积分
2454
金钱
2119
HASS币
10
发表于 2019-6-28 22:06:06 | 显示全部楼层
学习学习
回复

使用道具 举报

1

主题

265

帖子

2577

积分

金牌会员

Rank: 6Rank: 6

积分
2577
金钱
2312
HASS币
0
发表于 2019-6-28 23:13:45 | 显示全部楼层
谢谢分享!!!!
回复

使用道具 举报

8

主题

870

帖子

5218

积分

论坛元老

Rank: 8Rank: 8

积分
5218
金钱
4348
HASS币
0
发表于 2019-6-28 23:45:56 | 显示全部楼层
学习学习,谢谢
回复

使用道具 举报

75

主题

1976

帖子

8181

积分

元老级技术达人

积分
8181
金钱
6155
HASS币
430

活跃会员教程狂人

发表于 2019-6-29 00:50:39 | 显示全部楼层
关注。谢谢分享。
所有过往,皆为序章。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-25 21:25 , Processed in 0.204658 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表