mod_proxy_balancerに独自振り分けロジックを追加できる気がする

Apache2.2について。
一部のモジュールでは、ap_register_providerを使って、関数を文字列と紐付けて登録し、設定ファイルでそれを指定するという機構を利用している。
実際に使用箇所はこのような感じなのだが、別モジュールにて関数を登録し、それを指定させることも可能。

例えば、mod_proxy_balanerに対し、mod_wanko.c というソースを別途作成して、独自の振り分けロジックを設定する場合はこんな感じ。 [c num=1]#include "httpd.h"

include "http_config.h"

include "http_protocol.h"

include "ap_config.h"

include "mod_proxy.h"

module AP_MODULE_DECLARE_DATA proxy_balancer_module;

static proxy_worker find_best_bywanko(proxy_balancer balancer, request_rec r) { proxy_worker mycandidate = NULL; / なんか処理を書く / return mycandidate; }

static const proxy_balancer_method bywanko = { "bywanko", &find_best_bywanko, NULL };

static void wanko_register_hooks(apr_pool_t *p) { ap_register_provider(p, PROXY_LBMETHOD, "bywanko", "0", &bywanko); }

module AP_MODULE_DECLARE_DATA wanko_module = { STANDARD20_MODULE_STUFF, NULL, / create per-dir config structures / NULL, / merge per-dir config structures / NULL, / create per-server config structures / NULL, / merge per-server config structures / NULL, / table of config file commands / wanko_register_hooks / register hooks / };[/c] httpd.conf は以下のように設定し、lbmethodも独自の「bywanko」というものを指定できる。

LoadModule wanko_module       modules/mod_wanko.so
ProxyPass /lb balancer://TEST lbmethod=bywanko

正直なところ、mod_proxy_balancerの振り分けロジック(PROXY_LBMETHOD)だとどうもいいのが思いつかなかった。
が、認証(AUTHN_PROVIDER_GROUP)とかキャッシュ機構(CACHE_PROVIDER_GROUP)でも同様の仕組みがとられているみたいなので、そちらで試してみるのもいいかもしれない。