Centos下高可用主从同步DNS服务部署

前端之家收集整理的这篇文章主要介绍了Centos下高可用主从同步DNS服务部署前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、背景介绍

在日常工作中,为解决内网域名解析问题,时长会配置DNS服务来提供解析。这时DNS服务就起到了为所有内部服务提供连通的基础,变得非常重要了。所以在服务启动后还是应该考虑服务的高可用和数据的完整性。

网友有很多LVS+Keepalived+Bind的负载均衡高可用的解决方案,非常不错。不过自建DNS常用在公司内部平台之间的调用,所以负载均衡的意义并不是太大。当然,高可用还是需要保证的。本文章介绍通过Keepalived+Bind实现高可用主从同步DNS服务

二、基础环境

Master DNS:10.61.100.51

Slave DNS:10.61.100.52

VIP:10.61.100.50

三、bind配置

3.1、安装bind(主从)

  1. #yuminstallbindbind-chroot安装包的作用就不做过多的介绍了

安装完成后会生成下面的文件

  1. [root@ip-10-61-100-51~]#ll/var/named/chroot/
  2. 总用量20
  3. drwxr-x---2rootnamed409671116:55dev
  4. drwxr-x---5rootnamed409671119:31etc
  5. drwxr-xr-x2rootroot409671119:31lib64
  6. drwxr-xr-x3rootroot409671116:55usr
  7. drwxr-x---6rootnamed409671116:55var
  8. [root@ip-10-61-100-51~]#ll/etc/named.conf
  9. -rw-r-----1rootnamed131171117:39/etc/named.conf
  10. 其中/etc/named.conf其实就是/var/named/chroot/etc/named.conf,在启动后会在/var/named/chroot/etc生成相关配置文件

3.2、创建named.conf配置文件(主从都要配置,从配置在下面给出)

  1. vim/etc/named.conf
  2. options{
  3. directory"/var/named";
  4. listen-on{any;};
  5. version"[wowoohr-1.0]";
  6. forwarders{202.96.209.5;
  7. 114.114.114.114;
  8. };
  9. recursionyes;
  10. allow-query{0.0.0.0/0;};
  11. };
  12.  
  13. logging{
  14. channeldefault_log{
  15. file"/etc/log/dns-default.log"versions10size1m;
  16. severityinfo;
  17. };
  18. channellamer_log{
  19. file"/etc/log/dns-lamer.log"versions3size1m;
  20. severityinfo;
  21. print-severityyes;
  22. print-timeyes;
  23. print-categoryyes;
  24. };
  25. channelquery_log{
  26. file"/etc/log/dns-query.log"versions10size10m;
  27. severityinfo;
  28. };
  29. channelsecurity_log{
  30. file"/etc/log/dns-security.log"versions3size1m;
  31. severityinfo;
  32. print-severityyes;
  33. print-timeyes;
  34. print-categoryyes;
  35. };
  36. categorylame-servers{lamer_log;};
  37. categorysecurity{security_log;};
  38. categoryqueries{query_log;};
  39. categorydefault{default_log;};
  40. };
  41.  
  42.  
  43. zone"."{
  44. typehint;
  45. file"/etc/named.root";
  46. };
  47.  
  48. zone"myshebao.com"{
  49. typemaster;
  50. file"/etc/master/test.com.zone";
  51. allow-transfer{10.61.100.52;};
  52. };

3.3、创建named.root配置文件(主从都要配置且配置一样,故从配置不在给出)

  1. [root@ip-10-61-100-51etc]#catnamed.root
  2. ;Thisfileholdstheinformationonrootnameserversneededto
  3. ;initializecacheofInternetdomainnameservers
  4. ;
  5. ;ThisfileismadeavailablebyInterNIC
  6. ;underanonymousFTPas
  7. ;file/domain/named.root
  8. ;onserverFTP.INTERNIC.NET
  9. ;-OR-RS.INTERNIC.NET
  10. ;
  11. ;lastupdate:Jan29,2004
  12. ;relatedversionofrootzone:2004012900
  13. ;
  14. ;
  15. ;formerlyNS.INTERNIC.NET
  16. ;
  17. .3600000INNSA.ROOT-SERVERS.NET.
  18. A.ROOT-SERVERS.NET.3600000A198.41.0.4
  19. ;
  20. ;formerlyNS1.ISI.EDU
  21. ;
  22. .3600000NSB.ROOT-SERVERS.NET.
  23. B.ROOT-SERVERS.NET.3600000A192.228.79.201
  24. ;
  25. ;formerlyC.PSI.NET
  26. ;
  27. .3600000NSC.ROOT-SERVERS.NET.
  28. C.ROOT-SERVERS.NET.3600000A192.33.4.12
  29. ;
  30. ;formerlyTERP.UMD.EDU
  31. ;
  32. .3600000NSD.ROOT-SERVERS.NET.
  33. D.ROOT-SERVERS.NET.3600000A128.8.10.90
  34. ;
  35. ;formerlyNS.NASA.GOV
  36. ;
  37. .3600000NSE.ROOT-SERVERS.NET.
  38. E.ROOT-SERVERS.NET.3600000A192.203.230.10
  39. ;
  40. ;formerlyNS.ISC.ORG
  41. ;
  42. .3600000NSF.ROOT-SERVERS.NET.
  43. F.ROOT-SERVERS.NET.3600000A192.5.5.241
  44. ;
  45. ;formerlyNS.NIC.DDN.MIL
  46. ;
  47. .3600000NSG.ROOT-SERVERS.NET.
  48. G.ROOT-SERVERS.NET.3600000A192.112.36.4
  49. .3600000NSE.ROOT-SERVERS.NET.
  50. E.ROOT-SERVERS.NET.3600000A192.203.230.10
  51. ;
  52. ;formerlyNS.ISC.ORG
  53. ;
  54. .3600000NSF.ROOT-SERVERS.NET.
  55. F.ROOT-SERVERS.NET.3600000A192.5.5.241
  56. ;
  57. ;formerlyNS.NIC.DDN.MIL
  58. ;
  59. .3600000NSG.ROOT-SERVERS.NET.
  60. G.ROOT-SERVERS.NET.3600000A192.112.36.4
  61. ;
  62. ;formerlyAOS.ARL.ARMY.MIL
  63. ;
  64. .3600000NSH.ROOT-SERVERS.NET.
  65. H.ROOT-SERVERS.NET.3600000A128.63.2.53
  66. ;
  67. ;formerlyNIC.NORDU.NET
  68. ;
  69. .3600000NSI.ROOT-SERVERS.NET.
  70. I.ROOT-SERVERS.NET.3600000A192.36.148.17
  71. ;
  72. ;operatedbyVeriSign,Inc.
  73. ;
  74. .3600000NSJ.ROOT-SERVERS.NET.
  75. J.ROOT-SERVERS.NET.3600000A192.58.128.30
  76. ;
  77. ;operatedbyRIPENCC
  78. ;
  79. .3600000NSK.ROOT-SERVERS.NET.
  80. K.ROOT-SERVERS.NET.3600000A193.0.14.129
  81. ;
  82. ;operatedbyICANN
  83. ;
  84. .3600000NSL.ROOT-SERVERS.NET.
  85. L.ROOT-SERVERS.NET.3600000A198.32.64.12
  86. ;
  87. ;operatedbyWIDE
  88. ;
  89. .3600000NSM.ROOT-SERVERS.NET.
  90. M.ROOT-SERVERS.NET.3600000A202.12.27.33
  91. ;EndofFile

3.4、根据配置文件创建相关目录(主配置)

  1. [root@ip-10-61-100-51etc]#cd/var/named/chroot/etc/
  2. [root@ip-10-61-100-51etc]#mkdirlogmaster
  3. [root@ip-10-61-100-51etc]#chownnamed:namedlog/-R

3.5、创建zone区域文件(主配置)

  1. [root@ip-10-61-100-51etc]#vimmaster/test.com.zone
  2.  
  3. $TTL1D
  4. @INSOAns1.test.com.yull.test.com.(
  5. 2017071104;serial
  6. 1D;refresh
  7. 1H;retry
  8. 1W;expire
  9. 3H);minimum
  10.  
  11. INNSns1.test.com.
  12. INNSns2.test.com.
  13.  
  14. ns1INA10.61.100.51
  15. ns2INA10.61.100.52
  16.  
  17. redisINA10.61.100.51
  18. dbINA10.61.100.53

3.6、启动named服务(主配置)

  1. #servicenamedstart

3.7、从服务器named.conf配置。注意从服务器也需要named.root文件

  1. [root@ip-10-61-100-52~]#cat/etc/named.conf
  2. options{
  3. directory"/var/named";
  4. listen-on{any;};
  5. version"[wowoohr-1.0]";
  6. forwarders{202.96.209.5;
  7. 114.114.114.114;
  8. };
  9. recursionyes;
  10. allow-query{0.0.0.0/0;};
  11. };
  12.  
  13. logging{
  14. channeldefault_log{
  15. file"/etc/log/dns-default.log"versions10size1m;
  16. severityinfo;
  17. };
  18. channellamer_log{
  19. file"/etc/log/dns-lamer.log"versions3size1m;
  20. severityinfo;
  21. print-severityyes;
  22. print-timeyes;
  23. print-categoryyes;
  24. };
  25. channelquery_log{
  26. file"/etc/log/dns-query.log"versions10size10m;
  27. severityinfo;
  28. };
  29. channelsecurity_log{
  30. file"/etc/log/dns-security.log"versions3size1m;
  31. severityinfo;
  32. print-severityyes;
  33. print-timeyes;
  34. print-categoryyes;
  35. };
  36. categorylame-servers{lamer_log;};
  37. categorysecurity{security_log;};
  38. categoryqueries{query_log;};
  39. categorydefault{default_log;};
  40. };
  41.  
  42.  
  43. zone"."{
  44. typehint;
  45. file"/etc/named.root";
  46. };
  47.  
  48. zone"myshebao.com"{
  49. typeslave;
  50. file"/etc/slave/test.com.zone";
  51. masters{
  52. 10.61.100.51;
  53. };
  54. allow-transfer{none;};
  55. };

3.8、创建相关目录文件(从)

  1. [root@ip-10-61-100-52etc]#cd/var/named/chroot/etc/
  2. [root@ip-10-61-100-52etc]#mkdirlogslave
  3. [root@ip-10-61-100-52etc]#chownnamed:namedlog/-R

3.9、启动named服务(从)

  1. #servicenamedstart

如成功配置,则会在从的/var/named/chroot/etc/slave下同步test.com.zone配置文件


四、Keepalived高可用配置

4.1、安装Keepalived(主从)

  1. #yum-yinstallkeepalived

4.2、修改配置文件

设计思路:
当 Master 与 Slave 均运作正常时,Master负责服务,Slave负责Standby;
当 Master 挂掉,Slave 正常时,Slave接管服务;
当 Master 恢复正常,恢复Master身份
然后依次循环。需要注意的是修改数据只能在Master修改

  1. [root@ip-10-61-100-51etc]#cat/etc/keepalived/keepalived.conf
  2. !ConfigurationFileforkeepalived
  3.  
  4. global_defs{
  5. notification_email{
  6. yu.liang.liang@wowoohr.com
  7. }
  8. notification_email_fromAlexandre.Cassen@firewall.loc
  9. smtp_server192.168.200.1
  10. smtp_connect_timeout30
  11. router_idLVS_DEVEL
  12. }
  13.  
  14. vrrp_scriptchk_dns{
  15. script"/etc/keepalived/scripts/dns_check.sh"
  16. interval2
  17. }
  18.  
  19.  
  20. vrrp_instanceV_DNS{
  21. stateMASTER
  22. interfaceeth0
  23. virtual_router_id153
  24. priority100#从服务器修改为80
  25. advert_int1
  26. authentication{
  27. auth_typePASS
  28. auth_pass1111
  29. }
  30. track_script{
  31. chk_dns
  32. }
  33.  
  34. virtual_ipaddress{
  35. 10.61.100.50
  36. }
  37. notify_master/etc/keepalived/scripts/dns_master.sh
  38. notify_backup/etc/keepalived/scripts/dns_backup.sh
  39. notify_fault/etc/keepalived/scripts/dns_fault.sh
  40. notify_stop/etc/keepalived/scripts/dns_stop.sh
  41. }

上述中的脚本因为Keepalived在转换状态时会依照状态来呼叫:

通过dns_check.sh来检测服务可用性

当进入Master状态时会呼叫notify_master

当进入Backup状态时会呼叫notify_backup

当发现异常情况时进入Fault状态呼叫notify_fault

当Keepalived程序终止时则呼叫notify_stop

4.3、编辑相关脚本(主从)

  1. #vim/etc/keepalived/scripts/dns_check.sh
  2.  
  3. #!/bin/bash
  4. ALIVE=`netstat-ntpl|grep"53"`
  5. if[$?==0];then
  6. exit0
  7. else
  8. exit1
  9. fi
  1. #vim/etc/keepalived/scripts/dns_master.sh
  2.  
  3. LOGFILE="/var/log/keepalived-dns-state.log"
  4. echo"[master]">>$LOGFILE
  5. date>>$LOGFILE
  6. echo"Beingmaster....">>$LOGFILE2>&1
  7. echo"Runreloadcmd...">>$LOGFILE
  8. servicenamedreload>>$LOGFILE2>&1
  1. #vim/etc/keepalived/scripts/dns_backup.sh
  2.  
  3. LOGFILE="/var/log/keepalived-dns-state.log"
  4. echo"[backup]">>$LOGFILE
  5. date>>$LOGFILE
  6. servicenamedreload>>$LOGFILE2>&1
  7. echo"Beingslave....">>$LOGFILE2>&1
  1. #vim/etc/keepalived/scripts/dns_fault.sh
  2.  
  3. #!/bin/bash
  4. LOGFILE=/var/log/keepalived-dns-state.log
  5. echo"[fault]">>$LOGFILE
  6. date>>$LOGFILE
  1. #vim/etc/keepalived/scripts/dns_stop.sh
  2.  
  3. #!/bin/bash
  4. LOGFILE=/var/log/keepalived-dns-state.log
  5. echo"[stop]">>$LOGFILE
  6. date>>$LOGFILE

4.4、给脚本都加上可执行权限:

  1. #sudochmod+x/etc/keepalived/scripts/*.sh

4.5、启动Keepalived服务

  1. #servicekeepalivedstart

五、验证

  1. [root@ip-10-61-100-51etc]#netstat-ntpl|grep53
  2. tcp0010.61.100.50:530.0.0.0:*LISTEN12314/named
  3. tcp0010.61.100.51:530.0.0.0:*LISTEN12314/named
  4. tcp00127.0.0.1:530.0.0.0:*LISTEN12314/named
  5. tcp00127.0.0.1:9530.0.0.0:*LISTEN12314/named
  6. tcp00::1:953:::*LISTEN12314/named
  1. [root@ip-10-61-100-52~]#vim/etc/keepalived/scripts/dns_stop.sh
  2. [root@ip-10-61-100-52~]#netstat-ntpl|grep53
  3. tcp0010.61.100.52:530.0.0.0:*LISTEN8220/named
  4. tcp00127.0.0.1:530.0.0.0:*LISTEN8220/named
  5. tcp00127.0.0.1:9530.0.0.0:*LISTEN8220/named
  6. tcp00::1:953:::*LISTEN8220/named

可以看到VIP已经绑定在Master上,同时可以模拟Master挂掉。VIP会自动漂移到Slave上,带Master恢复后,会再次回到Master上,保证服务可用性。

猜你在找的CentOS相关文章