我需要在一堆服务器上托管基于子域的SaaS应用程序.服务器是xx1.example.com,xx2.example.com等.我希望在这些服务器上托管一堆yyy.example.com网站.
由于站点是动态创建的,因此我需要能够动态设置DNS记录. DNS通配符区域并没有真正扩展,因为最终我将超过第一台服务器并需要将新实例推送到其他计算机上.因此,我需要能够将特定的子域指向特定的IP地址.
我环顾四周寻找基于API的云端DNS服务(这会很棒),但是对于我的需求(大量低容量实例)来说,它们看起来非常昂贵. Rackspace有一个免费的云DNS服务,但它只有500个区域,技术支持告诉我他们正在重写API,所以我想暂时避免他们的服务.
因此,我想我将为这些区域设置自己的DNS服务器.因此问题:对于这个特定的需求,什么是一个好的DNS服务器软件,这将允许我创建区域而不重新启动?
有什么建议?谢谢!
解决方法
如果要添加的所有记录都是特定区域的子域,则可以轻松设置动态更新的绑定.然后只需使用nsupdate向区域提交更新.
如果所有新记录都是现有域中的记录,则此方法应该可以正常工作.如果您需要动态添加其他域,那么这将无济于事.
// zone config // using ip only for authentication,should really use hmac auth zone "example.com" { type master; file "/etc/bind/dyn/example.com.dns"; allow-query {any;}; allow-update { 127.0.0.1; 192.0.2.0/24; }; };
使用nsupdate更新脚本.
#!/bin/bash record=yyy.example.com ( echo "server xx1.example.com" echo "zone example.com" echo "update delete ${record} A" echo "update add ${record} ${ttl} A 192.0.2.1" echo "send" ) | /usr/bin/nsupdate