2019-02-11 09:55:32AIX、UNIX、Linuxin-memory, redis, unbound

Unbound logo

DNSのキャッシュサーバとして有名なUnboundですが(最近はコンテンツサーバ的な機能を実装しているみたいですが)、今さらながらバックエンドにredisなどを指定できるようになっていたこと知りました・・・

Changelogを確認する限り、1.7.1からみたいですね。

2016-02-20 09:53:25zabbixunbound, unixtime, zabbix, 統計情報

https://www.zabbix.com/documentation/3.0/manpages/zabbix_sender

自宅環境で、Zabbix3.0を使用しているわけですが、Unboundの統計情報をZabbixに送信しようとしてうまく遅れていないことに気が付きました。

manページを見る限り、それに言及する言葉はないようにみえるのですが、どうにも添付する際のUnixtimeはint型でなければ駄目のようです。

2014-05-18 10:46:56AIX、UNIX、Linuxcache, DNS, linux, unbound

https://nlnetlabs.nl/projects/unbound/about/

通常unboundのサービスの再起動を伴うと、それまでキャッシュしていたDNSの情報は全て消去されます。
場合によってはDNSキャッシュを持っておいたほうが、反応時間の改善としては良い場合があります。

執筆時点でのUnboundのSVN Revision 3131で、キャッシュのウォームスタートを行うことができるスクリプトが追加されました。
しかしながら作成者がロシアの方なのか、ロシア関連のドメインしか先読みしないようになっています。
ということで自分用に少しinitスクリプトを編集して、キャッシュのウォームスタートが出来るような仕掛けを作ってみました。

検証環境:

2014-04-16 10:27:37AIX、UNIX、Linuxcompile, DNS, linux, unbound, コンパイル

Unbound /
http://unbound.nlnetlabs.nl/index.html

Unboundの開発版であるSVN RepositoryのChangelogを見ていると、パフォーマンスの改善や機能実装の追加などが色々と盛り込まれているのを確認したところ、ちょっと試してみたくなったのでコンパイルしてみることにしました。

しかし、コンパイルしようとすると./configureは通るのですが、makeが通らないという問題に直面しました。

2014-03-13 10:39:23AIX、UNIX、LinuxDNS, linux, unbound

Unbound /
http://unbound.net/download.html

高速でBINDに比べても安全と言われているDNSキャッシュサーバ、unboundの1.4.22が公開されました。

gearbest

2014-02-24 15:37:11ARMarm, armhf, cubietruck, DNS, subversion, svn, unbound

先日ARMボードであるCubietruckを入手したわけですが、現在、DNSのSlaveとして動作させている、Raspberry Piの代わりをさせようかと、DNSキャッシュサーバであるUnboundを導入しようと思っていたのですが、コンパイルが中々通らず四苦八苦していました。

というのもGCCを導入してもなぜかLTO-Wrapperというものが要求され、そのせいでUnboundのコンパイルが通らない状況でした。lto-wrapper自体は以下のパスに存在しているので、なぜ要求されるのかずっと分かりませんでした。

2013-12-04 10:05:27AIX、UNIX、LinuxCentOS, NSD, script, systemd, unbound, スクリプト

上記のような記事を書いてきたわけですが、やはり再起動を繰り返してみるとUnboundおよびNSDの起動に失敗することが分かりました。インターフェースのIPアドレスのアサインまで間に合っていないようです。

AIX、UNIX、LinuxCentOS, init, NSD4, unbound

自宅環境でKVM上で動作しているCentOS 6.4 x64なサーバがあるのですが、その上でUnboundとNSD4を動かし宅内DNSサーバとして稼働させています。
しかしながら以前から掲題のような問題が発生していました。

問題の出た環境

# cat /etc/redhat-release
CentOS release 6.4 (Final)
# unbound-control status
version: 1.4.22
verbosity: 2
threads: 2
modules: 2 [ validator iterator ]
uptime: 2345 seconds
unbound (pid 1145) is running...
# nsd-control status
version: 4.0.0
verbosity: 1
ratelimit: 200
# cat /var/log/boot.log
FATAL: Module scsi_wait_scan not found.
Welcome to CentOS
Starting udev:                                             [  OK  ]
~中略~
Starting nsd4...                                           [FAILED]
Starting unbound: Nov 27 22:45:15 unbound[1097:0] error: can't bind socket: Cannot assign requested address
Nov 27 22:45:15 unbound[1097:0] debug: failed address 2001:xxxx:xxxx:xxxx:xxxx::249 port 53
Nov 27 22:45:15 unbound[1097:0] fatal error: could not open ports
[FAILED]
# tail /var/log/nsd4/nsd4.log
[1385559915] nsd[1083]: error: can't bind udp socket: Cannot assign requested address
[1385559915] nsd[1083]: error: server initialization failed, nsd could not be started

どうやら、ネットワークインターフェースにIPv6アドレスが付与されるまでの間にサービスが起動しようとして、紐付けが出来なくて起動に失敗しているようです。ただし、bootが終わったあと普通にservice unbound start など実行すれば正常に起動してくるので、単純に起動時のヒモ付の問題だけのようです。

そのことをTwitterで呟いたところ、@wakadannacom さんからアドバイスが。


というありがたいあどばいすを頂いたので、拙い知識ではありますが、起動スクリプトを修正してみることにしました。

具体的には、起動スクリプトのstart句の部分に、ネットワークインターフェースがupしているかどうかの判定をいれ、起動していないようであればSleepさせて起動を待つ、というような感じにしています。

# starting wait
# Source networking configuration.
. /etc/sysconfig/network # check net-if up

if [ $NETWORKING = "no" ]; then
	sleep 3
fi;

これで再起動を実施してみたところ、無事に起動してくることを確認しました。

# cat /var/log/boot.log
FATAL: Module scsi_wait_scan not found.
Welcome to CentOS
Starting udev:                                             [  OK  ]
Setting hostname dns1.kometch.local:                       [  OK  ]
Remounting root filesystem in read-write mode:             [  OK  ]
Mounting local filesystems:                                [  OK  ]
Enabling /etc/fstab swaps:                                 [  OK  ]
Entering non-interactive startup
Starting monitoring for VG VolGroup:   2 logical volume(s) in volume group "VolGroup" monitored
[  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:                                [  OK  ]
Starting sshd:                                             [  OK  ]
Starting ntpd:                                             [  OK  ]
Starting nsd4...                                           [  OK  ]
Starting unbound:                                          [  OK  ]
Starting tuned:                                            [  OK  ]
Starting Zabbix agent:                                     [  OK  ]
Starting crond:                                            [  OK  ]

今回はunboundもNSDもソースからコンパイルし、その中に入っているinitファイルを使用してこの問題に直面しましたが、他の方でこの問題に遭遇している人はいないのか気になっています。

また、今回の問題の対処方法以外にも以下のような方法もあるようです。


ただ、今回は起動スクリプト中にしっかりと「Required-Start: $network」が指定されているにもかかわらず、それに準じた動きをしていないのが、非常に気になりました。この辺りの事情をご存じの方がいらっしゃいましたら、是非ともご教授ください。

今回の問題に付き合っていただいた@wakadannacom さん、本当にありがとうございました。

参考:

LSBInitScripts – Debian Wiki /
https://wiki.debian.org/LSBInitScripts

DVD付 CentOS徹底入門 第3版
DVD付 CentOS徹底入門 第3版
(2012/03/09)
中島 能和、飛田 伸一郎 他

 

商品詳細を見る

Linuxエンジニア養成読本 [仕事で使うための必須知識&ノウハウ満載!] (Software Design plus)
Linuxエンジニア養成読本 [仕事で使うための必須知識&ノウハウ満載!] (Software Design plus)
(2011/04/08)
SoftwareDesign編集部

 

商品詳細を見る

2013-06-27 10:26:07zabbixunbound, zabbix, zabbix_sender

以前に上記のような記事を書いたのですが、以前の方法だとUserParameterで、監視項目数分、unbound-controlがkickされることになるので、以下の様なメッセージがlogに頻繁に出てくるのと、負荷が気になって来ました。

Jun 24 23:30:01 unbound[8176:0] info: control cmd:  stats_noreset

有効な監視項目は全てではないとはいえ、この数分unbound-controlを実行するのは負荷やタイムアウトの懸念から現実的では無いと思いました。