2019年09月08日(日) - 20:41 | カテゴリ:
Linux
自鯖のグローバルロードバランサ(GSLB)にはgdnsdとdnsdistを組み合わせつつ、
CloudGarageのVPS上に構築していたのだが、
元となるVPSサービス終了によって、何処かに引っ越す必要が出てきた (´・ω・`)
何故にこの構成を取っていたかと言うと、GLSBを構築した時は通常の権威DNSと、
gdnsdを上手く同居させる術が無かった為、サーバを別立てしていた。
しかし、dnsdistをDNSロードバランサとして動かす事により、
DNSクエリの振り分けが出来る様になったので、権威DNSとGSLBの同居構成も可能となった。
という事でサーバ引越しの第一弾として、CloudGarageのVPSからGSLB切り離しを行いつつ、
“ns-lab BB”のInternet用権威DNSサーバに、グローバルロードバランサも合体させてみた。
全体の構成は下記の通り。ユーザクエリを待受ける一番外側にはdnsdistを採用してクエリログを採取。
クエリを都度分析してGSLB宛のクエリならばgdnsd、
それ以外のクエリはBINDに流し込む構成にしてみた。

構築手順はwikiに書いてあるので、この場では割愛。
この構成ならバックエンドへのクエリロードバランスが出来たり、
PowerDNSなど他の権威DNSサーバを組み合わせる事も出来るので重宝しそう。
試運転も兼ねて2週間ほど実クエリを捌き続けているのだが、
メモリ2GBの低スペックサーバでも問題無く稼働している。
クエリも、秒間100発程度なら余裕で捌けているので、
チューニング次第ではエンタープライズ用途でも利用出来そうだった。
dnsdistをエンタープライズで利用している事例はほぼ無いのだが、
BINDからの脱却として様々な権威DNSの研究が進んでいる昨今を考えると、
今後は上記の様なマルチアプリケーションを採用した権威DNSが出てくるのかもしれない。
« 続きを隠す
2019年08月24日(土) - 22:35 | カテゴリ:
Network
“ns-lab BB”のIPv6アドレスはHurricaneElectricからトンネルで調達している為、
接続点となるゲートウェイにはGREトンネルを張れるJuniperSRXを採用している。
年開けにルータが1回不機嫌になったのだが当時はその場で復旧させて様子見をしていたが、
先日の夏コミが終わり一段落した辺りで、このルータが故障して起動しなくなった。
別途出力しているログを解析した所、Junosを保存しているファイルシステムが吹っ飛び、
リカバリすら処理出来ない状態になった結果、
リカバリの再起動がスタックして通信出来なくなっている事が判明した。
メール鯖・DNS鯖は自宅とVPSでハイブリッド構成にしているので、
AAAAレコードをDNSゾーンから消す事で障害復旧したが、
DigiLoog含むWEB鯖は自宅サーバで稼働している事もあり、IPv6接続経路がないのは致命的だった。
さらに、ノートPC・スマホ用にIPv6のみを専用に喋るAPも動いており、
ルータが壊れるとInternetも見れなくなる環境がある為、IPv6接続環境を早めに修復する必要があった。
………
いくら嘆いても、壊れた物が直る訳では無いので代替手段を即検討開始。
上がったのは、
- 従来通りJuniperSRXを利用
- VyOSで仮想ルータ化
- IIJ SEILなど他ルータを入れて環境リプレース
の3択。
最後まで迷ったのだが、VyOSを動かせるリソースが仮想サーバ基板に無い事と、
他ルータに入れ替える際のH/W選定も出来ていなかったので、従来通りJuniperSRXを購入する事にした。

という事で、Juniper SRX100H2を2台買って来た。
常時稼働しているのは1台だが、以前から検証用途にも使いたかった為、今回を機に2台にした。
ちなみに、今まで稼働していた機種を正確に書くと「Juniper SRX100B」
今回購入したのは、マイナーチェンジ版となる「Juniper SRX100H2」となる。
SRX100シリーズは基本スペックに違いは無いのだが、
搭載しているメモリ・フラッシュ容量が下記の通り拡張されていたり、
サポートしているJunosバージョンが上がっていたりする。
Model |
DRAM |
FLASH |
Juniper SRX100B |
512MB |
1024MB |
Juniper SRX100H |
1024MB |
1024MB |
Juniper SRX100H2 |
2048MB |
2048MB |
今回は、SRX100シリーズの最終モデルとなるSRX100H2を購入した事もあり、
公式サポート中の12.3X48-D85以降を稼働させる事も出来るが、大きなメリットの一つとなる。
………

左:Juniper SRX100B
右:Juniper SRX100H2
基板レベルだと搭載パーツに違いがほぼ無く、チップのマイナーバージョン上がっているのみに見える。
それ以外だと、SRX100Bのメーカーロゴはジュニパーの木を模した古いロゴとなっている点と、
メーカーロゴに近くに制御用COMピンヘッダが半田付けされている事くらい。
という事で、H/Wレベルの大きな違いが無い事も判ったので、
バックアップコンフィグを使って設定リストアを実施。
Junosのメジャーバージョンが12.1から12.3に上がった点が気になったが、
コマンドを投入したら問題無くバックアップコンフィグを認識した。
………
以前は自宅NW基盤をH/Wレベルで冗長化している時期もあったが、
電気代がバカにならないので数年前にシングル構成に直した所、今回のルータ故障が直撃した。
とは言っても、普段は使わない機種を電源いれっぱなしにするのも辛い昨今なので、
同機種を検証機として使い回す事で一種の「コールドスタンバイ」とする事にした。
最近はネットワーク系から少し離れているので、そろそろNW層の追っ掛けも再開したい所。
ネットワーク仮想化・サービスチェイニングの概念が今後は出てきそうなので、
この辺りを今回購入したルータを使って構築出来るかチャレンジするのも良さそう。
技術ネタを追いかけるのは大変な事もあるが、
実環境に即反映出来る楽しい分野でもあるので精進したいと思う。
« 続きを隠す
2019年08月03日(土) - 22:57 | カテゴリ:
Linux
“ns-lab”には様々な自宅サーバが稼働しているのだが、
その内の2台でClamAVが起動しなくなる事象が出た。
その2台は古めの仮想サーバホストに収容しており、
ClamAVが起動しきる前にsystemdによってdaemonをkillされている事が判った。
ClamAVはパターンファイルのサイズが肥大化しているので、
結果として起動時に読み込むパターンサイズも大きくなっている。
結果、起動する前にsystemdによってdaemonをkillされてしまい、
その後にsystemdによるservice再起動も重なる事で無限ループ状態に陥っていた。
対処は簡単で、systemd全体のタイムアウト時間を延ばすか、
ClamAVのサービスファイルに”TimeoutSec”を追記する。
[Unit]
Description=ClamAV
After=network.target freshclam.service
Requires=freshclam.service
[Service]
Type=forking
ExecStart=/usr/sbin/clamd
TimeoutSec=10min
[Install]
WantedBy=multi-user.target |
こうする事で、TimeoutSecの時間はdaemonをkillせずに処理を待つ様になる。
ClamAVが起動しなくなる原因によるが、処理の遅いCPUを使っている場合には効果がある。