单臂模式使用华硕路由器
背景
在规划家里网络的时候,打算将路由器放到客厅,因为这个位置比较居中,能够比较好的将wifi覆盖到各个方向,而我的弱电箱在入户走廊,因此一般的方式就是,从光猫(入户走廊)出来的网线接到路由器(客厅)的 wan 口上,然后路由器 lan 口出来的网线接回交换机(入户走廊)上,再由交换机接到其他房间。因此弱电箱和客厅应该有两根网线,预想如图:

结果预留网线的时候弱电箱到客厅的网线只预埋了一根,于是上述的预想就泡汤了,那么接下来有大概以下几种方案:
- 重新开槽,很显然不太现实;
- 将路由器放回弱电箱,这会导致wifi信号可能覆盖不全;
- 使用光猫拨号,用光猫做路由,客厅的路由器只提供wifi功能。不过我以前已经对光猫做路由有阴影了,也基本不考虑了;
- 采用 vlan trunk 的方式,把进出路由器的流量隔离起来,这也是本文所采用的方案。
从原始的预想图中可以看出,与路由器 wan 口相连的设备为光猫,与路由器 lan 口相连的设备为交换机,所以我们可以简单划分两个 vlan,暂且就先叫做 vlan:wan 和 vlan:lan 吧。
vlan trunk 就是在发送数据包的时候在包中带上 vlan tag,标明该数据包所属的 vlan,接收的交换机识别 tag 之后,移除该 tag,并发往正确的 vlan 中。一般采用的标准为 IEEE 802.1Q。
从以上描述可以看出,除了路由器需要支持 vlan trunk 之外,与他相连的设备也需要支持 vlan trunk,所以需要选购一台支持的交换机,我这里使用的是 CISCO SG250-08 交换机,具体的网络图如下:

RT-AC88U 的设置
基本的想法确定之后,接下来就看看如何配置。首先,我的路由器型号为 RT-AC88U,我们先看看路由器的架构:

可以简单的认为整个路由器由两部分组成,switch 和 linux 系统,路由器对外的网口都是插到的这个 switch,switch 上 8 号网口与 linux 系统的 eth0 网口相连,在路由器上使用robocfg show
命令查看:
VLANs: BCM5301x enabled mac_check mac_hash
1: vlan1: 0 1 2 3 5 7 8t
2: vlan2: 4 8u
可以看到这个 switch 本身就划分了两个 vlan:vlan1 和 vlan2,而这个 8 号网口与 linux 的 eth0 口其实就用了 vlan trunk 通信,vlan1 的数据从 8 口收发的时候是带上了 tag 的,而 vlan2 的数据从 8 口收发的时候是不带 tag 的。另外 4 口其实对应的是路由器面板上 wan 口,所以其实路由器本身划分的两个 vlan,vlan1 和 vlan2 就是对应我们之前暂定的 vlan:lan 和vlan:wan。
接着我们通过ip
命令发现 lan 口的 ip 是配置得到了 br0 网口上,通过brctl show
查看
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.244bfe4200c8 yes vlan1
eth1
eth2
其中 eth1 和 eth2 分别对应的是 2.4G 和 5G 的无线网口,很显然应该是 lan 口,因此再一次说明了 vlan1 代表之前的 vlan:lan。 很显然我们沿用路由器的设定会比较简单,即 vlan1 带 tag,vlan2 不带 tag,路由器上的设置只需要如下语句:
robocfg vlan 1 ports "0 1 2 3 4t 5 7 8t"
其实就是增加了4t
,让vlan1的数据也能在 4 口上转发,并且带上其 tag。
我的路由器刷了梅林固件,因此将上面语句直接放到了/jffs/scripts/services-start
脚本中,保证重启后也能正确的设置 vlan。
交换机设置
按照以上思路,交换机的设置也就比较清楚了,总共 8 个网口:
- 将 1-6 口划为 vlan1,即 lan 口,用于与其他房间的连接;
- 7 口为 vlan2,即 wan 口,用于与光猫连接;
- 8 口为 trunk 口,用于与路由器连接。
同样的,trunk 口的配置也按照 vlan1 带 tag,vlan2 不带 tag 的方式进行配置即可,如图所示:

总结
至此,整个的配置就完全结束了。我们简单做下分析:
会不会影响带宽?
从我自己的分析来看,应该不影响:
- 局域网访问,如果是有线与有线相互访问,其实是有交换机在进行转发,并不会通过 vlan trunk 口,肯定是不影响的。
- 局域网访问,如果是无线与有线相互访问,最初我认为会有影响,毕竟两个网口退化为一个网口了,但是当我发现路由器结构后,发现其内部用的就是 vlan trunk,因此路由器内部本身就退化为一个网口了,所以我个人认为不影响。
- 局域网访问,无线与无线互通,也不会通过 vlan trunk 口,肯定也不影响。
- 有线上网,首先自家的宽带才 300M,1G 网口就算损失一点 vlan tag 的带宽,也绰绰有余,另外加上上述第 2 点,我认为是不会有影响的。
- 无线上网,也不会通过 vlan trunk 口,肯定不会有影响。
vlan2 不带 tag 的好处?
在我最初的设想图中,vlan:lan 和 vlan:wan 都应该是带 tag 的,为了最小改动,才将 vlan2 设置为不带 tag。不过,现在思考后发现,其实不带 tag 有一个巨大的好处:假设路由器坏掉,临时换用其他路由器时,可以直接将网线接到新的路由器上,就能直接拨号了。虽然少了 vlan1,但是只会影响有线的网络,无线仍然可以正常使用。
RT-AX86U 的设置
2021-05-05 更新:使用了快两年的 RT-AC88U 由于电源开关有点问题,京东直接免费更换了一个 RT-AX86U,不得不夸一下京东的售后。这里更新一下 RT-AX86U 的配置。
更换路由器后是可以直接拨号并上网的,同时无线也能正常使用,所以可以用笔记本去登录路由器。登录之后发现没有robocfg
命令,说明其内部结构应该与 RT-AC88U 不同。
通过ip
命令可以看到 lan 口 ip 仍然配置在了 br0 上,所以还是用brctl show
查看一下:
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.fc3497390200 yes eth1
eth2
eth3
eth4
eth5
eth6
eth7
很显然 linux 接管了所有的网口,不再有类似 switch 的东西了。我们现在的问题是局域网的有线网络还用不了,也就是 vlan1 还没有加入到这个 br0,通过排除法,剩余的网口 eth0 就是我们之前定义的 vlan trunk 口,所以只需要在上面创建一个 vlan1,并把他加入到 br0 中即可:
ip link add link eth0 name eth0.1 type vlan id 1
ip link set eth0.1 up
brctl addif br0 eth0.1
同样,将上面语句放到/jffs/scripts/services-start
保证开机能够执行即可。
既然路由器内部不再是 vlan trunk 的方式了,因此之前总结的无线与有线的互通,在这台路由器上应该是有影响的了。
Blog 换为 Jekyll
由于受不了经常性的 OOM,所以现在把 Blog 换到了 Jekyll 上了,评论系统采用了多说。主题用的是 Freshman21,稍微做了下修改。
文章和评论应该都完全迁移过来了。不过现在还存在一个问题,就是多说的评论中第三方的头像会使用非 HTTPS 的连接,导致 Blog 的页面不完全是 HTTPS 的。
当前是没有太好的办法解决了,就先这样吧。
是时候换Blog程序了
由于现在的 Blog 是放到 DO 的 VPS 上的,内存只有可怜的 512M,导致现在的经常性的 OOM,虽然我已经增加量 1G 的 swap 空间,仍然作用不大,贴一个日志让大家感受下:
Jun 29 09:17:43 zlb kernel: [15847900.740029] mysqld invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0
Jun 29 09:17:44 zlb kernel: [15847900.742638] mysqld cpuset=/ mems_allowed=0
Jun 29 09:17:44 zlb kernel: [15847900.742661] CPU: 0 PID: 30714 Comm: mysqld Not tainted 3.13.0-27-generic #50-Ubuntu
Jun 29 09:17:44 zlb kernel: [15847900.742663] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
Jun 29 09:17:44 zlb kernel: [15847900.742665] 0000000000000000 ffff88001c9f7978 ffffffff817199c4 ffff880019ef5fc0
Jun 29 09:17:44 zlb kernel: [15847900.742972] ffff88001c9f7a00 ffffffff817142ff ffffffff81067876 ffff88001c9f79d8
Jun 29 09:17:44 zlb kernel: [15847900.742975] ffffffff810c74dc ffffffff811a1b16 ffff88001fffae28 ffffffff8104ea2e
Jun 29 09:17:44 zlb kernel: [15847900.742977] Call Trace:
Jun 29 09:17:44 zlb kernel: [15847900.743385] [<ffffffff817199c4>] dump_stack+0x45/0x56
Jun 29 09:17:44 zlb kernel: [15847900.743390] [<ffffffff817142ff>] dump_header+0x7f/0x1f1
Jun 29 09:17:44 zlb kernel: [15847900.743435] [<ffffffff81067876>] ? put_online_cpus+0x56/0x80
Jun 29 09:17:44 zlb kernel: [15847900.743448] [<ffffffff810c74dc>] ? rcu_oom_notify+0xcc/0xf0
Jun 29 09:17:44 zlb kernel: [15847900.743486] [<ffffffff811a1b16>] ? kmem_cache_alloc_trace+0x1c6/0x1f0
Jun 29 09:17:44 zlb kernel: [15847900.743503] [<ffffffff8104ea2e>] ? kvm_async_pf_task_wake+0x8e/0x110
Jun 29 09:17:44 zlb kernel: [15847900.743520] [<ffffffff8115196e>] oom_kill_process+0x1ce/0x330
Jun 29 09:17:44 zlb kernel: [15847900.743554] [<ffffffff812d3395>] ? security_capable_noaudit+0x15/0x20
Jun 29 09:17:44 zlb kernel: [15847900.743556] [<ffffffff811520a4>] out_of_memory+0x414/0x450
Jun 29 09:17:44 zlb kernel: [15847900.743560] [<ffffffff81158377>] __alloc_pages_nodemask+0xa87/0xb20
Jun 29 09:17:44 zlb kernel: [15847900.743562] [<ffffffff81196333>] alloc_pages_current+0xa3/0x160
Jun 29 09:17:44 zlb kernel: [15847900.743569] [<ffffffff8114e567>] __page_cache_alloc+0x97/0xc0
Jun 29 09:17:44 zlb kernel: [15847900.743572] [<ffffffff8114ff75>] filemap_fault+0x185/0x410
Jun 29 09:17:44 zlb kernel: [15847900.743578] [<ffffffff8117485f>] __do_fault+0x6f/0x530
Jun 29 09:17:44 zlb kernel: [15847900.743581] [<ffffffff81178a02>] handle_mm_fault+0x492/0xf10
Jun 29 09:17:44 zlb kernel: [15847900.743588] [<ffffffff8109df24>] ? arch_vtime_task_switch+0x94/0xa0
Jun 29 09:17:44 zlb kernel: [15847900.743590] [<ffffffff8109df54>] ? vtime_common_task_switch+0x24/0x40
Jun 29 09:17:44 zlb kernel: [15847900.743598] [<ffffffff81097498>] ? finish_task_switch+0x128/0x170
Jun 29 09:17:44 zlb kernel: [15847900.743607] [<ffffffff81720202>] ? mutex_lock+0x12/0x2f
Jun 29 09:17:44 zlb kernel: [15847900.743615] [<ffffffff81725924>] __do_page_fault+0x184/0x560
Jun 29 09:17:44 zlb kernel: [15847900.743638] [<ffffffff8101b7d9>] ? sched_clock+0x9/0x10
Jun 29 09:17:44 zlb kernel: [15847900.743641] [<ffffffff8109d13d>] ? sched_clock_local+0x1d/0x80
Jun 29 09:17:44 zlb kernel: [15847900.743658] [<ffffffff811112ec>] ? acct_account_cputime+0x1c/0x20
Jun 29 09:17:44 zlb kernel: [15847900.743661] [<ffffffff8109d76b>] ? account_user_time+0x8b/0xa0
Jun 29 09:17:44 zlb kernel: [15847900.743662] [<ffffffff8109dd84>] ? vtime_account_user+0x54/0x60
Jun 29 09:17:44 zlb kernel: [15847900.743665] [<ffffffff81725d1a>] do_page_fault+0x1a/0x70
Jun 29 09:17:44 zlb kernel: [15847900.743667] [<ffffffff81725399>] do_async_page_fault+0x29/0xe0
Jun 29 09:17:44 zlb kernel: [15847900.743670] [<ffffffff817221b8>] async_page_fault+0x28/0x30
Jun 29 09:17:44 zlb kernel: [15847900.743672] Mem-Info:
Jun 29 09:17:44 zlb kernel: [15847900.743674] Node 0 DMA per-cpu:
Jun 29 09:17:44 zlb kernel: [15847900.743954] CPU 0: hi: 0, btch: 1 usd: 0
Jun 29 09:17:44 zlb kernel: [15847900.743957] Node 0 DMA32 per-cpu:
Jun 29 09:17:44 zlb kernel: [15847900.743959] CPU 0: hi: 186, btch: 31 usd: 4
Jun 29 09:17:44 zlb kernel: [15847900.743963] active_anon:46557 inactive_anon:46639 isolated_anon:0
Jun 29 09:17:44 zlb kernel: [15847900.743963] active_file:37 inactive_file:49 isolated_file:0
Jun 29 09:17:44 zlb kernel: [15847900.743963] unevictable:0 dirty:0 writeback:0 unstable:0
Jun 29 09:17:44 zlb kernel: [15847900.743963] free:1174 slab_reclaimable:2934 slab_unreclaimable:8396
Jun 29 09:17:44 zlb kernel: [15847900.743963] mapped:27514 shmem:28359 pagetables:12997 bounce:0
Jun 29 09:17:44 zlb kernel: [15847900.743963] free_cma:0
Jun 29 09:17:44 zlb kernel: [15847900.743966] Node 0 DMA free:1964kB min:88kB low:108kB high:132kB active_anon:3176kB inactive_anon:3492kB active_file:8kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15992kB managed:15908kB mlocked:0kB dirty:0kB writeback:0kB mapped:1768kB shmem:1788kB slab_reclaimable:1132kB slab_unreclaimable:1936kB kernel_stack:1336kB pagetables:716kB unstable:0kB bounce:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:13 all_unreclaimable? yes
Jun 29 09:17:44 zlb kernel: [15847900.743975] lowmem_reserve[]: 0 471 471 471
Jun 29 09:17:44 zlb kernel: [15847900.743979] Node 0 DMA32 free:2732kB min:2732kB low:3412kB high:4096kB active_anon:183052kB inactive_anon:183064kB active_file:140kB inactive_file:196kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:507896kB managed:485940kB mlocked:0kB dirty:0kB writeback:0kB mapped:108288kB shmem:111648kB slab_reclaimable:10604kB slab_unreclaimable:31648kB kernel_stack:3560kB pagetables:51272kB unstable:0kB bounce:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:535 all_unreclaimable? yes
Jun 29 09:17:44 zlb kernel: [15847900.743997] lowmem_reserve[]: 0 0 0 0
Jun 29 09:17:44 zlb kernel: [15847900.743999] Node 0 DMA: 33*4kB (E) 191*8kB (UEMR) 17*16kB (MR) 1*32kB (R) 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 1964kB
Jun 29 09:17:44 zlb kernel: [15847900.744036] Node 0 DMA32: 181*4kB (UEM) 134*8kB (UEMR) 13*16kB (EM) 3*32kB (R) 2*64kB (R) 4*128kB (R) 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 2740kB
Jun 29 09:17:44 zlb kernel: [15847900.744047] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB
Jun 29 09:17:44 zlb kernel: [15847900.744048] 47613 total pagecache pages
Jun 29 09:17:44 zlb kernel: [15847900.744050] 19172 pages in swap cache
Jun 29 09:17:44 zlb kernel: [15847900.744053] Swap cache stats: add 3213543, delete 3194371, find 3380499/3672513
Jun 29 09:17:44 zlb kernel: [15847900.744054] Free swap = 0kB
Jun 29 09:17:44 zlb kernel: [15847900.744055] Total swap = 1023996kB
Jun 29 09:17:44 zlb kernel: [15847900.744056] 130972 pages RAM
Jun 29 09:17:44 zlb kernel: [15847900.744057] 0 pages HighMem/MovableOnly
Jun 29 09:17:44 zlb kernel: [15847900.744058] 5489 pages reserved
Jun 29 09:17:44 zlb kernel: [15847900.744059] [ pid ] uid tgid total_vm rss nr_ptes swapents oom_score_adj name
Jun 29 09:17:44 zlb kernel: [15847900.744064] [ 343] 0 343 4902 0 13 80 0 upstart-udev-br
Jun 29 09:17:44 zlb kernel: [15847900.744067] [ 352] 0 352 12803 0 27 134 -1000 systemd-udevd
Jun 29 09:17:44 zlb kernel: [15847900.744069] [ 365] 102 365 9807 0 24 100 0 dbus-daemon
Jun 29 09:17:44 zlb kernel: [15847900.744071] [ 422] 0 422 10863 1 25 93 0 systemd-logind
Jun 29 09:17:44 zlb kernel: [15847900.744072] [ 444] 0 444 3852 0 11 82 0 upstart-file-br
Jun 29 09:17:44 zlb kernel: [15847900.744075] [ 779] 0 779 3914 0 12 141 0 upstart-socket-
Jun 29 09:17:44 zlb kernel: [15847900.744076] [ 849] 0 849 3955 1 12 41 0 getty
Jun 29 09:17:44 zlb kernel: [15847900.744078] [ 853] 0 853 3955 1 13 41 0 getty
Jun 29 09:17:44 zlb kernel: [15847900.744080] [ 861] 0 861 3955 1 13 39 0 getty
Jun 29 09:17:44 zlb kernel: [15847900.744081] [ 862] 0 862 3955 1 12 39 0 getty
Jun 29 09:17:44 zlb kernel: [15847900.744083] [ 867] 0 867 3955 1 13 41 0 getty
Jun 29 09:17:44 zlb kernel: [15847900.744085] [ 901] 0 901 3786 0 11 69 0 starter
Jun 29 09:17:44 zlb kernel: [15847900.744087] [ 904] 0 904 188212 0 75 606 0 charon
Jun 29 09:17:44 zlb kernel: [15847900.744089] [ 909] 0 909 15341 0 34 173 -1000 sshd
Jun 29 09:17:44 zlb kernel: [15847900.744090] [ 914] 0 914 1092 0 8 36 0 acpid
Jun 29 09:17:44 zlb kernel: [15847900.744092] [ 915] 0 915 5914 1 17 62 0 cron
Jun 29 09:17:44 zlb kernel: [15847900.744094] [ 916] 0 916 4785 0 13 42 0 atd
Jun 29 09:17:44 zlb kernel: [15847900.744096] [ 933] 105 933 83921 0 62 324 0 whoopsie
Jun 29 09:17:44 zlb kernel: [15847900.744098] [ 1012] 109 1012 1874 1 9 35 0 epmd
Jun 29 09:17:44 zlb kernel: [15847900.744100] [ 1208] 0 1208 6336 13 16 64 0 master
Jun 29 09:17:44 zlb kernel: [15847900.744101] [ 1212] 107 1212 6893 0 18 85 0 qmgr
Jun 29 09:17:44 zlb kernel: [15847900.744103] [ 1226] 0 1226 2671 0 10 43 0 pptpd
Jun 29 09:17:44 zlb kernel: [15847900.744105] [ 1392] 0 1392 3955 1 13 40 0 getty
Jun 29 09:17:44 zlb kernel: [15847900.744107] [20601] 0 20601 26260 162 53 939 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744109] [20903] 110 20903 13652 1 28 345 0 freshclam
Jun 29 09:17:44 zlb kernel: [15847900.744111] [ 2653] 101 2653 64154 0 39 6835 0 rsyslogd
Jun 29 09:17:44 zlb kernel: [15847900.744113] [ 9233] 109 9233 155041 0 63 9920 0 beam
Jun 29 09:17:44 zlb kernel: [15847900.744114] [ 9459] 109 9459 1865 0 9 37 0 inet_gethost
Jun 29 09:17:44 zlb kernel: [15847900.744116] [ 9460] 109 9460 3446 1 12 39 0 inet_gethost
Jun 29 09:17:44 zlb kernel: [15847900.744118] [30310] 0 30310 6293 28 16 301 0 tmux
Jun 29 09:17:44 zlb kernel: [15847900.744119] [30311] 0 30311 5704 2 16 562 0 bash
Jun 29 09:17:44 zlb kernel: [15847900.744130] [30356] 0 30356 1111 1 7 39 0 mysqld_safe
Jun 29 09:17:44 zlb kernel: [15847900.744133] [30705] 106 30705 223086 731 89 15800 0 mysqld
Jun 29 09:17:44 zlb kernel: [15847900.744135] [12526] 33 12526 26222 152 51 975 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744137] [12529] 33 12529 30512 149 53 1093 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744139] [12530] 33 12530 30500 126 53 1103 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744141] [12540] 33 12540 30492 125 53 1105 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744142] [12569] 33 12569 30497 313 53 921 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744144] [12572] 33 12572 89683 1048 130 4350 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744146] [12697] 33 12697 89041 1644 122 2873 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744148] [12785] 33 12785 30488 149 53 1076 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744150] [12791] 33 12791 30488 143 53 1082 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744152] [12800] 33 12800 30472 151 53 1056 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744154] [12806] 33 12806 30476 190 53 1023 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744155] [12813] 33 12813 30488 129 53 1096 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744157] [12818] 107 12818 6852 0 17 69 0 pickup
Jun 29 09:17:44 zlb kernel: [15847900.744159] [12819] 33 12819 30472 151 53 1058 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744161] [12825] 33 12825 30476 146 53 1065 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744163] [12828] 33 12828 30476 225 53 986 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744164] [12829] 33 12829 30488 147 53 1076 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744166] [12835] 33 12835 87146 1278 116 2639 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744168] [12837] 33 12837 88395 508 122 3788 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744169] [12839] 33 12839 30488 171 53 1054 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744171] [12842] 33 12842 30476 140 53 1069 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744173] [12848] 33 12848 30476 140 53 1069 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744175] [12851] 33 12851 30488 133 53 1085 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744176] [12854] 33 12854 30476 141 53 1068 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744178] [12855] 33 12855 30488 257 53 979 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744180] [12860] 33 12860 30482 151 53 1068 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744182] [12861] 33 12861 30476 140 53 1069 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744183] [12862] 33 12862 30488 152 53 1073 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744185] [12865] 33 12865 30476 146 53 1062 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744187] [12872] 33 12872 30482 140 53 1077 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744188] [12873] 33 12873 30476 140 53 1069 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744190] [12875] 33 12875 30476 264 53 947 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744192] [12876] 33 12876 30476 152 53 1057 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744194] [12883] 33 12883 30482 152 53 1067 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744195] [12885] 33 12885 30488 200 53 1023 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744197] [12886] 33 12886 30482 152 53 1064 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744199] [12897] 33 12897 30472 151 53 1057 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744200] [12898] 33 12898 30488 200 53 1032 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744202] [12899] 33 12899 30488 152 53 1072 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744204] [12900] 33 12900 30472 293 53 913 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744205] [12901] 33 12901 30490 140 53 1083 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744207] [12904] 33 12904 30476 140 53 1069 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744209] [12908] 33 12908 30485 136 53 1081 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744225] [12914] 33 12914 30488 234 53 990 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744228] [12919] 33 12919 30476 122 53 1087 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744230] [12921] 33 12921 30482 128 53 1091 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744232] [12925] 33 12925 30466 140 53 1063 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744234] [12926] 33 12926 30472 152 53 1057 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744235] [12933] 33 12933 30488 227 53 995 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744237] [12936] 33 12936 30488 152 53 1073 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744239] [12937] 33 12937 30485 152 53 1066 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744240] [12938] 33 12938 30482 140 53 1077 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744242] [12945] 33 12945 30485 255 53 962 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744246] [12948] 33 12948 30476 233 53 976 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744248] [12949] 33 12949 30470 140 53 1065 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744250] [12954] 33 12954 30488 127 53 1093 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744251] [12955] 33 12955 30488 130 53 1093 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744253] [12958] 33 12958 30466 274 53 929 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744255] [12959] 33 12959 30482 152 53 1067 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744257] [12969] 33 12969 30488 261 53 973 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744258] [12970] 33 12970 30482 152 53 1065 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744260] [12971] 33 12971 30488 137 53 1085 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744262] [12972] 33 12972 30488 130 53 1088 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744263] [12977] 33 12977 30488 139 53 1083 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744265] [12984] 33 12984 30488 140 53 1082 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744267] [12987] 33 12987 30488 123 53 1099 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744269] [12988] 33 12988 30485 138 53 1079 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744270] [12995] 33 12995 30482 248 53 973 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744272] [12996] 33 12996 30488 151 53 1071 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744274] [12998] 33 12998 30488 213 53 1010 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744275] [13001] 33 13001 30488 152 53 1070 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744277] [13006] 33 13006 30482 152 53 1065 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744279] [13012] 33 13012 30488 152 53 1070 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744280] [13013] 33 13013 30488 152 53 1070 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744282] [13014] 33 13014 30488 133 53 1090 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744284] [13026] 33 13026 30488 228 53 997 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744286] [13027] 33 13027 30488 152 53 1070 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744287] [13031] 33 13031 30488 138 53 1083 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744289] [13033] 33 13033 30482 152 53 1065 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744291] [13041] 33 13041 30482 150 53 1068 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744293] [13042] 33 13042 30482 139 53 1078 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744294] [13043] 33 13043 30482 140 53 1077 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744296] [13044] 33 13044 30488 204 53 1032 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744298] [13045] 33 13045 30488 133 53 1089 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744299] [13049] 33 13049 30482 308 53 911 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744301] [13060] 33 13060 30488 145 53 1077 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744303] [13063] 33 13063 30488 135 53 1088 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744312] [13066] 33 13066 30488 318 53 906 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744315] [13069] 33 13069 30592 320 53 917 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744317] [13075] 33 13075 30488 152 53 1070 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744318] [13078] 33 13078 30488 151 53 1071 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744320] [13081] 33 13081 30488 316 53 906 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744322] [13086] 33 13086 30482 140 53 1077 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744323] [13087] 33 13087 30482 138 53 1079 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744325] [13090] 33 13090 30488 131 53 1092 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744327] [13091] 33 13091 30488 136 53 1088 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744329] [13096] 33 13096 30488 133 53 1090 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744330] [13097] 33 13097 30485 152 53 1065 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744332] [13102] 33 13102 30482 138 53 1079 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744334] [13104] 33 13104 30482 134 53 1083 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744335] [13108] 33 13108 30482 140 53 1077 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744337] [13113] 33 13113 30488 152 53 1072 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744339] [13117] 33 13117 30488 133 53 1089 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744340] [13122] 33 13122 30482 152 53 1067 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744342] [13124] 33 13124 30482 137 53 1080 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744344] [13126] 33 13126 30488 313 53 912 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744346] [13127] 33 13127 30488 191 53 1032 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744347] [13132] 33 13132 30472 139 53 1067 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744349] [13137] 33 13137 86636 1646 114 2199 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744351] [13139] 33 13139 30485 152 53 1069 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744352] [13140] 33 13140 30488 126 53 1098 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744354] [13141] 33 13141 30488 134 53 1083 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744356] [13147] 33 13147 30482 287 53 933 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744357] [13151] 33 13151 30476 151 53 1058 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744359] [13153] 33 13153 30488 229 53 993 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744361] [13154] 33 13154 30488 134 53 1083 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744362] [13163] 33 13163 30482 151 53 1066 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744364] [13169] 33 13169 30488 212 53 1012 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744366] [13170] 33 13170 30488 134 53 1090 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744368] [13175] 33 13175 30476 139 53 1070 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744369] [13180] 33 13180 30485 154 53 1063 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744371] [13185] 33 13185 30470 152 53 1051 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744373] [13186] 33 13186 30485 160 53 1065 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744374] [13187] 33 13187 86139 1513 111 1828 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744376] [13194] 33 13194 84169 1654 105 1337 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744378] [13195] 33 13195 84681 1116 104 1271 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744380] [13196] 33 13196 30485 151 53 1066 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744381] [13198] 33 13198 84169 1821 107 1324 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744383] [13199] 33 13199 30470 152 53 1051 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744385] [13202] 33 13202 86121 1434 110 1848 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744386] [13205] 33 13205 30476 152 53 1057 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744388] [13208] 33 13208 84153 1643 105 1355 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744398] [13209] 33 13209 30482 130 53 1087 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744401] [13212] 33 13212 30439 206 53 975 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744402] [13214] 33 13214 84582 1571 105 1470 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744404] [13216] 33 13216 30485 246 53 973 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744406] [13218] 33 13218 84556 1643 104 1345 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744407] [13220] 33 13220 84390 1436 103 1477 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744409] [13226] 33 13226 84454 1371 106 1543 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744411] [13227] 33 13227 84305 1147 104 1431 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744412] [13228] 33 13228 30482 159 53 1059 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744414] [13230] 33 13230 30482 148 53 1069 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744416] [13232] 33 13232 30482 140 53 1077 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744417] [13233] 33 13233 30482 140 53 1077 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744419] [13234] 33 13234 30482 139 53 1078 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744421] [13235] 33 13235 30482 137 53 1080 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744423] [13251] 33 13251 84582 2072 108 1482 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744425] [13257] 33 13257 30476 152 53 1057 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744426] [13259] 33 13259 30485 140 53 1078 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744428] [13263] 33 13263 30488 144 53 1074 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744430] [13264] 33 13264 30488 133 53 1080 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744431] [13270] 33 13270 30485 152 53 1065 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744433] [13271] 33 13271 30488 139 53 1085 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744435] [13272] 33 13272 30485 152 53 1065 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744437] [13280] 33 13280 84262 1302 106 1593 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744438] [13289] 33 13289 84043 1516 106 1247 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744440] [13291] 33 13291 84009 1500 104 1327 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744442] [13292] 33 13292 84073 1571 103 1228 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744444] [13294] 33 13294 84017 1588 103 1382 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744445] [13296] 33 13296 83951 1448 101 1232 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744447] [13300] 33 13300 84015 1593 102 1367 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744449] [13303] 33 13303 83816 1268 101 1158 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744450] [13305] 33 13305 83823 1289 102 1185 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744452] [13307] 33 13307 83817 1486 100 1113 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744454] [13309] 33 13309 83970 1752 102 1354 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744456] [13315] 33 13315 83624 1634 101 820 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744457] [13318] 33 13318 83496 1296 102 934 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744459] [13320] 33 13320 83815 1537 101 942 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744461] [13322] 33 13322 83495 1273 99 920 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744462] [13324] 33 13324 83819 1557 100 944 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744464] [13326] 33 13326 83408 1314 98 880 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744466] [13329] 33 13329 83460 1295 98 895 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744468] [13332] 33 13332 83420 1296 99 837 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744469] [13333] 33 13333 83340 989 95 844 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744471] [13334] 33 13334 83163 708 99 837 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744473] [13336] 33 13336 83275 2259 99 826 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744482] [13338] 33 13338 83276 2508 95 516 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744484] [13341] 33 13341 83196 2415 96 338 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744486] [13342] 33 13342 83196 2392 95 378 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744488] [13343] 33 13343 49053 775 89 252 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744490] [13346] 33 13346 46740 599 88 149 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744491] [13348] 33 13348 46806 752 83 69 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744493] [13351] 33 13351 46806 711 89 68 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744495] [13352] 33 13352 30150 324 58 48 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744497] [13354] 33 13354 12318 288 28 7 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744498] [13358] 33 13358 27220 344 52 11 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744500] [13360] 33 13360 11586 134 24 0 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744502] [13363] 33 13363 11236 38 18 0 0 php-cgi
Jun 29 09:17:44 zlb kernel: [15847900.744504] [13365] 33 13365 26222 239 48 881 0 apache2
Jun 29 09:17:44 zlb kernel: [15847900.744512] Out of memory: Kill process 30705 (mysqld) score 43 or sacrifice child
可以看到有无数的 apache2 和 php-cgi 进程,占用的大量内存,最后导致 mysqld 被杀死,页面访问不了。
而这种情况也不是一次两次了,实在忍受不了,所以打算换成静态 Blog,把 apache 也一并换为 nginx。希望可以降低一些内存占用。
OpenStack LBaaS 笔记
近日一段时间在折腾 OpenStack,由于组件太多,就先从简单的看起,而我的工作又和负载均衡相关,因此就看了负载均衡的部分。
LBaaS 的 API 在 OpenStack Networking 组件的 API 中进行了定义,可以通过该 API 来创建 VIP, pool, member 以及 health monitor。其接口的定义的功能还是非常简单的,同时也意味着它只能完成最基本的四层负载,并不支持高级的七层负载功能。
配置方法
在 OpenStack 中实现 Networking 组件的项目叫 Neutron,其配置 LBaaS 的方法如下:
- 开启 lbaas:修改 Neutron 配置文件中的
service_plugins
,加入 lbaas,如:
service_plugins = router,lbaas
- 指定负载均衡具体的实现:设置 Neutron 配置文件中的
service_provider
,Neutron 默认使用 HAProxy,其配置如下:
service_provider=LOADBALANCER:Haproxy:neutron.services.loadbalancer.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default
其格式如下:
<service_type>:<name>:<driver>[:default]
service_type
表示是哪种服务的实现,可以是以下之一:LOADBALANCER, FIREWALL, VPN, ROUTER。
name
为该实现指定一个名字。
driver
具体的实现,指向一个类名。
default
可选项,表明是该服务类型的默认实现。
- 进行各个不同负载均衡实现的配置,比如使用 HAProxy 的,可能还需要在各个 agent 中进行配置
具体实现
在现有的框架下要实现一个 service_provider
是非常简单的,只需要编写一个继承 LoadBalancerAbstractDriver
的类,并实现其中的接口,最后修改 service_provider
指向这个类即可。所有对 LBaaS API 的调用最终都会调用到这些接口上,其接口如下:
def create_vip
def update_vip
def delete_vip
def create_pool
def update_pool
def delete_pool
def stats
def create_member
def update_member
def delete_member
def update_pool_health_monitor
def create_pool_health_monitor
def delete_pool_health_monitor
不过这样虽然简单,但是不够灵活,因为这个是运行在 neutron-server 中的,而 neutron-server 可能并不一定在 OpenStack 的网络环境中,另外如果有多个不同的网络和网络节点,处理起来也比较麻烦。
Agent 方案
所以 OpenStack 提供了一套使用 Agent 的方法,neutron-server 中只是将 API 的请求通过 RPC 调用发送到某个 Agent 去处理,而 Agent 一般就处在 OpenStack 的网络环境中,因此就解决了上述的问题。
默认的 HAProxy 的实现中,他的 service_provider
是继承的 AgentDriverBase
(当然这个 AgentDriverBase
是继承的 LoadBalancerAbstractDriver
)。这个 AgentDriverBase
就会选择一个合适的 Agent 出来,然后再调用对应的 RPC 接口。
要实现这种类型的自定义 service_provider
也是非常简单的:
- 在 neutron-server 端,自定义一个类继承至
AgentDriverBase
,指定device_driver
的名字,例如:
class MyTestLBDriver(agent_driver_base.AgentDriverBase):
device_driver = 'MyTestAG'
这样,neutron-server 就会去选择一个名称为 ‘MyTestAG’ 的 Agent 出来,并将对应请求发送过去。
- 在需要运行的 Agent 端,继承
AgentDeviceDriver
类,并实现其方法,注意,需要在get_name
方法中返回该 Agent 的名字,本例中应为 “MyTestAG”。
最后,在lbaas-agent.ini
配置文件中将device_driver
指定为上述实现的类即可。
最后,由于我自己对 Python 并不熟悉,所以如有错误之处,谢谢指出。
eyerest v0.1
在发布 eyerest 之后就一直没有更新过了,主要是因为自己没时间,并且已有的功能都基本能用了。最近有点时间,对其进行了一些修改,欢迎使用:
- 将项目进行了拆分,eyerest 只保留了 eyerest-daemon 和 eyerest-cli 程序,其他的桌面扩展什么的分别在以下的项目中:
- 将提醒的逻辑放到了 eyerest-daemon 中
- 配置文件中可以控制在通知的时候是否发送动作列表,以适应不同的 notifyd
- 增加了检测是否在运行全屏程序的逻辑,在运行这类程序时会暂停