OpenWrt测试双WAN和双机高可用
So here’s a quick example. OpenWrt shows capability to provide business-level internet access reliabilities – with not only load balancing/failover between 2 or more ISPs, but also VRRP based hardware (dual x86 vm in this experiment) level redundancy.
从以下的例子可以看出,OpenWrt基本满足了提供小型商业级Internet访问可靠性的初步要求。它不仅可以在多个ISP之间实现负载均衡以及故障切换,在此基础上同时提供基于VRRP的硬件冗余(本实验中为双x86虚拟机)。
先开仨虚拟机,前两台做OpenWrt,可以先做1台,复制1台。注意要安装mwan3和keepalived。
双WAN做好后,断开一路wan做测试。这里的wanb,用的是楼道里的不可靠wifi,通过Raspberry Pi向下路由一层转成有线网,能体现出不稳定的ISP接入状态。
本来是两路负载均衡的策略,wanb断开后,5s之内可以让所有对外请求都稳定落在wan上。
下一步,把MASTER的br-lan断开,模拟一个路由器硬件直接宕掉。
这个切换时间很短,还没反应过来,BACKUP就接管了VIP地址,对外请求几乎不受什么影响。
这是VIP地址漂移后,刷新页面,需要重新输入router密码(因为漂移到了BACKUP机),wanb自动恢复了,两个ISP显示均可用。
点开Detailed Status,可以看到当前使用的规则,一条是https,另一条是其他所有访问走balanced。
最后大家可以看下,不停的使用curl查询自己的公网IP,balanced模式下,两路ISP同样metric值,所以都会用到,而占比则是按照mwan3设定的weight权重来分配的。
当然,喜欢的话,也可以把mwan3设置成两路metric大小不一,基本就是failover方式了(weight就意义不大了)。适合一路宽带,一路4G/5G,既可以保证冗余切换,也不无谓消耗流量的使用场景。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
bash-3.2$ curl http://httpbin.org/ip { "origin": "43.224.44.192" } bash-3.2$ curl http://httpbin.org/ip { "origin": "43.224.44.192" } bash-3.2$ curl http://httpbin.org/ip { "origin": "43.224.44.192" } bash-3.2$ curl http://httpbin.org/ip { "origin": "124.64.17.194" } bash-3.2$ curl http://httpbin.org/ip { "origin": "124.64.17.194" } bash-3.2$ curl http://httpbin.org/ip { "origin": "43.224.44.192" } bash-3.2$ curl http://httpbin.org/ip { "origin": "124.64.17.194" } bash-3.2$ curl http://httpbin.org/ip { "origin": "124.64.17.194" } |
BTW,单机(没有VRRP硬件冗余)的双wan我还测试了一个硬件版本,效果相当不错。
按评论区小伙伴要求,贴一下keepalived的配置,也是实验使用的最简单配置,仅供参考。
OpenWRT #1号机
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
root@Gondor:/# cat /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state BACKUP interface br-lan virtual_router_id 51 priority 95 advert_int 1 authentication { auth_type PASS auth_pass hithere } virtual_ipaddress { 192.168.40.254/24 dev br-lan } } |
OpenWRT #2号机
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
root@Rohan:/# cat /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state BACKUP interface br-lan virtual_router_id 51 priority 55 advert_int 1 authentication { auth_type PASS auth_pass hithere } virtual_ipaddress { 192.168.40.254/24 dev br-lan } } |
文章的脚注信息由WordPress的wp-posturl插件自动生成
你好,之前在Centos系统中通过keepalive做VRRP可以。
看到你的文章,打算测试openwrt路由器热备的。
不知道能否借鉴你的配置…感谢
当然,请问你需要什么?其实只做双机热备的话,vrrp用到openwrt跟用到centos上并不会有什么显著差异哈。
配置贴到文章了,如果这是你需要的。