背景

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

home networking plan

结果预留网线的时候弱电箱到客厅的网线只预埋了一根,于是上述的预想就泡汤了,那么接下来有大概以下几种方案:

  • 重新开槽,很显然不太现实;
  • 将路由器放回弱电箱,这会导致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 交换机,具体的网络图如下:

home networking vlan

RT-AC88U 的设置

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

asus

可以简单的认为整个路由器由两部分组成,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 的方式进行配置即可,如图所示:

home networking switch

总结

至此,整个的配置就完全结束了。我们简单做下分析:

会不会影响带宽?

从我自己的分析来看,应该不影响:

  1. 局域网访问,如果是有线与有线相互访问,其实是有交换机在进行转发,并不会通过 vlan trunk 口,肯定是不影响的。
  2. 局域网访问,如果是无线与有线相互访问,最初我认为会有影响,毕竟两个网口退化为一个网口了,但是当我发现路由器结构后,发现其内部用的就是 vlan trunk,因此路由器内部本身就退化为一个网口了,所以我个人认为不影响。
  3. 局域网访问,无线与无线互通,也不会通过 vlan trunk 口,肯定也不影响。
  4. 有线上网,首先自家的宽带才 300M,1G 网口就算损失一点 vlan tag 的带宽,也绰绰有余,另外加上上述第 2 点,我认为是不会有影响的。
  5. 无线上网,也不会通过 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 的方式了,因此之前总结的无线与有线的互通,在这台路由器上应该是有影响的了。


由于受不了经常性的 OOM,所以现在把 Blog 换到了 Jekyll 上了,评论系统采用了多说。主题用的是 Freshman21,稍微做了下修改。

文章和评论应该都完全迁移过来了。不过现在还存在一个问题,就是多说的评论中第三方的头像会使用非 HTTPS 的连接,导致 Blog 的页面不完全是 HTTPS 的。

当前是没有太好的办法解决了,就先这样吧。


由于现在的 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 的 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 之后就一直没有更新过了,主要是因为自己没时间,并且已有的功能都基本能用了。最近有点时间,对其进行了一些修改,欢迎使用:

  • 将项目进行了拆分,eyerest 只保留了 eyerest-daemon 和 eyerest-cli 程序,其他的桌面扩展什么的分别在以下的项目中:
  • 将提醒的逻辑放到了 eyerest-daemon 中
  • 配置文件中可以控制在通知的时候是否发送动作列表,以适应不同的 notifyd
  • 增加了检测是否在运行全屏程序的逻辑,在运行这类程序时会暂停