Centos에서 사용 가능한 주종 동기화 DNS 서비스 배치
일상적인 업무에서 네트워크 도메인 이름 해석 문제를 해결하기 위해 시간은 DNS 서비스를 설정하여 해석을 제공한다.이때 DNS 서비스는 모든 내부 서비스에 연결을 제공하는 기초를 닦았고 매우 중요하게 변했다.따라서 서비스가 시작된 후에도 서비스의 높은 가용성과 데이터의 완전성을 고려해야 한다.
네티즌들은 LVS+Keepalived+Bind의 부하 균형이 높고 사용 가능한 해결 방안이 많은데 매우 좋다.그러나 자체 DNS는 회사 내부 플랫폼 간의 호출에 많이 사용되기 때문에 부하 균형의 의미는 그리 크지 않다.물론 고가용성은 보증해야 한다.Keepalived+Bind를 통한 고가용 주종 동기화 DNS 서비스 소개
2. 기초 환경
Master DNS:10.61.100.51
Slave DNS:10.61.100.52
VIP:10.61.100.50
3. bind 설정
3.1 설치 bind(주종)
# yum install bind bind-chroot
설치가 완료되면 다음 파일이 생성됩니다
[root@ip-10-61-100-51 ~]# ll /var/named/chroot/
20
drwxr-x--- 2 root named 4096 7 11 16:55 dev
drwxr-x--- 5 root named 4096 7 11 19:31 etc
drwxr-xr-x 2 root root 4096 7 11 19:31 lib64
drwxr-xr-x 3 root root 4096 7 11 16:55 usr
drwxr-x--- 6 root named 4096 7 11 16:55 var
[root@ip-10-61-100-51 ~]# ll /etc/named.conf
-rw-r----- 1 root named 1311 7 11 17:39 /etc/named.conf
/etc/named.conf /var/named/chroot/etc/named.conf, /var/named/chroot/etc 。
3.2、named를 생성합니다.conf 프로필 (주종은 모두 설정해야 하며, 설정은 아래에서 제시해야 한다)
vim /etc/named.conf
options {
directory "/var/named";
listen-on { any; };
version "[wowoohr-1.0]";
forwarders { 202.96.209.5;
114.114.114.114;
};
recursion yes;
allow-query {0.0.0.0/0;};
};
logging{
channel default_log {
file "/etc/log/dns-default.log" versions 10 size 1m;
severity info;
};
channel lamer_log {
file "/etc/log/dns-lamer.log" versions 3 size 1m;
severity info;
print-severity yes;
print-time yes;
print-category yes;
};
channel query_log {
file "/etc/log/dns-query.log" versions 10 size 10m;
severity info;
};
channel security_log {
file "/etc/log/dns-security.log" versions 3 size 1m;
severity info;
print-severity yes;
print-time yes;
print-category yes;
};
category lame-servers { lamer_log; };
category security { security_log; };
category queries { query_log; };
category default { default_log; };
};
zone "." {
type hint;
file "/etc/named.root";
};
zone "myshebao.com" {
type master;
file "/etc/master/test.com.zone ";
allow-transfer { 10.61.100.52; };
};
3.3 named를 생성합니다.root 프로필 (주종은 모두 설정하고 설정이 같기 때문에 설정에서 제공하지 않음)
[root@ip-10-61-100-51 etc]# cat named.root
; This file holds the information on root name servers needed to
; initialize cache of Internet domain name servers
;
; This file is made available by InterNIC
; under anonymous FTP as
; file /domain/named.root
; on server FTP.INTERNIC.NET
; -OR- RS.INTERNIC.NET
;
; last update: Jan 29, 2004
; related version of root zone: 2004012900
;
;
; formerly NS.INTERNIC.NET
;
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
;
; formerly NS1.ISI.EDU
;
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201
;
; formerly C.PSI.NET
;
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
;
; formerly TERP.UMD.EDU
;
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
;
; formerly NS.NASA.GOV
;
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
;
; formerly NS.ISC.ORG
;
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
;
; formerly NS.ISC.ORG
;
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
;
; formerly NIC.NORDU.NET
;
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
;
; operated by VeriSign, Inc.
;
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30
;
; operated by RIPE NCC
;
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
;
; operated by ICANN
;
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12
;
; operated by WIDE
;
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
; End of File
3.4 프로필에 따라 관련 디렉터리 만들기(주 프로필)
[root@ip-10-61-100-51 etc]# cd /var/named/chroot/etc/
[root@ip-10-61-100-51 etc]# mkdir log master
[root@ip-10-61-100-51 etc]# chown named:named log/ -R
3.5, zone 영역 파일 만들기(주 구성)
[root@ip-10-61-100-51 etc]# vim master/test.com.zone
$TTL 1D
@ IN SOA ns1.test.com. yull.test.com. (
2017071104 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.test.com.
IN NS ns2.test.com.
ns1 IN A 10.61.100.51
ns2 IN A 10.61.100.52
redis IN A 10.61.100.51
db IN A 10.61.100.53
3.6 named 서비스 시작(주 설정)
# service named start
3.7 서버named.conf 구성서버에서도named가 필요합니다.루트 파일
[root@ip-10-61-100-52 ~]# cat /etc/named.conf
options {
directory "/var/named";
listen-on { any; };
version "[wowoohr-1.0]";
forwarders { 202.96.209.5;
114.114.114.114;
};
recursion yes;
allow-query {0.0.0.0/0;};
};
logging{
channel default_log {
file "/etc/log/dns-default.log" versions 10 size 1m;
severity info;
};
channel lamer_log {
file "/etc/log/dns-lamer.log" versions 3 size 1m;
severity info;
print-severity yes;
print-time yes;
print-category yes;
};
channel query_log {
file "/etc/log/dns-query.log" versions 10 size 10m;
severity info;
};
channel security_log {
file "/etc/log/dns-security.log" versions 3 size 1m;
severity info;
print-severity yes;
print-time yes;
print-category yes;
};
category lame-servers { lamer_log; };
category security { security_log; };
category queries { query_log; };
category default { default_log; };
};
zone "." {
type hint;
file "/etc/named.root";
};
zone "myshebao.com" {
type slave;
file "/etc/slave/test.com.zone";
masters {
10.61.100.51;
};
allow-transfer { none; };
};
3.8 관련 디렉토리 파일 생성(부터)
[root@ip-10-61-100-52 etc]# cd /var/named/chroot/etc/
[root@ip-10-61-100-52 etc]# mkdir log slave
[root@ip-10-61-100-52 etc]# chown named:named log/ -R
3.9、named 서비스 시작(부터)
# service named start
성공적으로 설정하면/var/named/chroot/etc/slave에서 테스트를 동기화합니다.com.zone 구성 파일
4. Keepalived 고가용 구성
4.1 Keepalived 설치(주종)
# yum -y install keepalived
4.2 프로필 수정
디자인 사고방식: 마스터와 슬레이브가 모두 정상적으로 작동할 때 마스터는 서비스를 책임지고 슬레이브는 Standby를 책임진다.마스터가 끊기고 슬레이브가 정상일 때 슬레이브가 서비스를 인수한다.마스터가 정상으로 돌아오면 마스터의 신분을 회복하고 순서대로 순환한다.주의해야 할 것은 수정 데이터는 마스터에서만 수정할 수 있다는 것이다.
[root@ip-10-61-100-51 etc]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_dns {
script "/etc/keepalived/scripts/dns_check.sh"
interval 2
}
vrrp_instance V_DNS {
state MASTER
interface eth0
virtual_router_id 153
priority 100 # 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_dns
}
virtual_ipaddress {
10.61.100.50
}
notify_master /etc/keepalived/scripts/dns_master.sh
notify_backup /etc/keepalived/scripts/dns_backup.sh
notify_fault /etc/keepalived/scripts/dns_fault.sh
notify_stop /etc/keepalived/scripts/dns_stop.sh
}
위의 스크립트는 상태를 변환할 때 상태에 따라 Keepalived가 호출하기 때문입니다.
dns를 통해check.sh로 서비스 가용성 검사
마스터 상태가 되면 notify 호출master
Backup 상태가 되면 notify 호출backup
예외가 발견되면 Fault 상태로 들어가서 notify 호출fault
Keepalived 프로그램이 종료되면 notify 호출stop
4.3 관련 스크립트 편집(주종)
# vim /etc/keepalived/scripts/dns_check.sh
#!/bin/bash
ALIVE=`netstat -ntpl |grep "53"`
if [ $? == 0 ];then
exit 0
else
exit 1
fi
# vim /etc/keepalived/scripts/dns_master.sh
LOGFILE="/var/log/keepalived-dns-state.log"
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
echo "Run reload cmd ..." >> $LOGFILE
service named reload >> $LOGFILE 2>&1
# vim /etc/keepalived/scripts/dns_backup.sh
LOGFILE="/var/log/keepalived-dns-state.log"
echo "[backup]" >> $LOGFILE
date >> $LOGFILE
service named reload >> $LOGFILE 2>&1
echo "Being slave...." >> $LOGFILE 2>&1
# vim /etc/keepalived/scripts/dns_fault.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-dns-state.log
echo "[fault]" >> $LOGFILE
date >> $LOGFILE
# vim /etc/keepalived/scripts/dns_stop.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-dns-state.log
echo "[stop]" >> $LOGFILE
date >> $LOGFILE
4.4 스크립트에 실행 권한을 부여한다.
# sudo chmod +x /etc/keepalived/scripts/*.sh
4.5, Keepalived 서비스 시작
# service keepalived start
5. 검증
[root@ip-10-61-100-51 etc]# netstat -ntpl |grep 53
tcp 0 0 10.61.100.50:53 0.0.0.0:* LISTEN 12314/named
tcp 0 0 10.61.100.51:53 0.0.0.0:* LISTEN 12314/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 12314/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 12314/named
tcp 0 0 ::1:953 :::* LISTEN 12314/named
[root@ip-10-61-100-52 ~]# vim /etc/keepalived/scripts/dns_stop.sh
[root@ip-10-61-100-52 ~]# netstat -ntpl |grep 53
tcp 0 0 10.61.100.52:53 0.0.0.0:* LISTEN 8220/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 8220/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 8220/named
tcp 0 0 ::1:953 :::* LISTEN 8220/named
VIP가 마스터에 연결되어 있는 것을 볼 수 있으며 마스터 끊기를 시뮬레이션할 수 있습니다.VIP는 자동으로 슬레이브에 떠내려가 마스터를 가지고 회복되면 다시 마스터로 돌아와 서비스 가용성을 보증합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[CS] HTTP/네트워크 기초 Day-37HTTP를 이용해 주고 받는 메시지를 HTTP 메시지라고 부릅니다. 서버가 리소스를 전달하기 위한 API를 구축해놓아야 클라이언트가 이를 활용할 수 있습니다. HTTP 요청에는 메소드라는 것이 존재합니다. HTTP ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.