![](https://blog.komeho.info/wp-content/uploads/2019/04/201902110942360fb-1.png)
DNSのキャッシュサーバとして有名なUnboundですが(最近はコンテンツサーバ的な機能を実装しているみたいですが)、今さらながらバックエンドにredisなどを指定できるようになっていたこと知りました・・・
Changelogを確認する限り、1.7.1からみたいですね。
![](https://nlnetlabs.nl/static/logos/NLnetLabs/Mark_NLnet_Labs.png)
Add
--with-libhiredis
, unbound support for a new cachedb backend that uses a Redis server as the storage. This implementation depends on the hiredis client library (https://redislabs.com/lp/hiredis/). And unbound should be built with both--enable-cachedb
and--with-libhiredis[=PATH]
(where$PATH/include/hiredis/hiredis.h
should exist). Patch from Jinmei Tatuya (Infoblox).
![](https://nlnetlabs.nl/static/logos/NLnetLabs/Mark_NLnet_Labs.png)
バックエンドのredisを使用する場合は、以下のパラメータを設定するだけのようです。
server:
<snip>
module-config: "subnetcache validator cachedb iterator"
<snip>
cachedb:
backend: "redis"
redis-server-host: 192.168.1.2
redis-server-port: 6379
redis-timeout: 100
パッケージをbuildする際は--enable-cachedb --with-libhiredis
を付けてbuildすることが必要です(現在配布されているパッケージでデフォルトでこのフラグがONになっているかは未確認です)。
フロントエンドはdockerなどでscaleするようにして、バックエンドにredisを使用するようにしてやれば、ある程度性能を確保できそうな気がします(quad9とかCloudflare DNSとかもフロントエンドにknot-resolverで、バックエンドに何らかのDBの構成のようですが)。