DNS设置keepalived 您所在的位置:网站首页 zpk密钥 DNS设置keepalived

DNS设置keepalived

2023-03-04 19:13| 来源: 网络整理| 查看: 265

高可用

为了保证DNS节点的高可用,我们使用keepalived将两台机器分别作为主从节点,做一个简单的主从节点方式的高可用。正常情况下,主节点的priority为100,从节点的priority为90,此时VIP在主节点上,请求和流量从VIP进入,由主节点提供服务,从节点作为备用。 当主节点出现异常时,VIP偏移到从节点,从节点进入MASTER状态,直到主节点本身的服务恢复正常再切换过去。

1、安装keepalived

yum install -y keepalived systemctl start keepalived systemctl enable keepalived

2、配置keepalived.conf

master节点: vim /etc/keepalived/keepalived.conf

global_defs { router_id dns_server1 # 机器标识(backup节点为dns_server2) } vrrp_script chk_dns { script "/etc/keepalived/check_port.sh 192.168.1.177" # 一句指令或者一个脚本文件,需返回0(成功)或非0(失败) interval 1 # 脚本执行间隔(s) fall 2 # 转换为失败状态,所需的执行成功次数 rise 30 # 转换为成功状态,所需的执行成功次数 weight -20 # 优先级(priority)变化幅度, 脚本执行成功正数增加权重, 脚本执行失败负数减小权重 } vrrp_instance dns { state MASTER # MASTER或BACKUP,实际通过priority确认(backup节点为BACKUP) interface ens192 # 绑定的网卡(用来发VRRP包; 绑定VIP), 网卡down会进入FAULT状态 virtual_router_id 9 # 取值在0-255之间,用来区分多个instance的VRRP组播(保证主备节点一致) priority 100 # 选举权重,master权重一般高于backup, 取值范围是1-255(backup节点为90) advert_int 1 # VRRP包的时间间隔(s) # nopreempt # 非抢占式(注意非抢占式适用于网卡监听track_interface--失败FAULT状态, 不适合脚本监听track_script--失败权重降低设置为非抢占式也不会切换master,backup) authentication { # 认证权限,防止非法节点进入 auth_type PASS auth_pass 12345678 } virtual_ipaddress { # VIP, 可设置多个 192.168.1.177 } track_script { # 健康检查脚本 chk_dns } # 注意: 此处配置脚本输出文件无法起作用 notify "/etc/keepalived/change_state.sh /var/log/keepalived.log" # 任何一状态切换时都会执行的脚本, 会传递状态变化参数 }

backup:

global_defs { router_id dns_server2 # 机器标识(backup节点为dns_server1) } vrrp_script chk_dns { script "/etc/keepalived/check_port.sh 192.168.1.177" # 一句指令或者一个脚本文件,需返回0(成功)或非0(失败) interval 1 # 脚本执行间隔(s) fall 2 # 转换为失败状态,所需的执行成功次数 rise 30 # 转换为成功状态,所需的执行成功次数 weight -20 # 优先级(priority)变化幅度, 脚本执行成功正数增加权重, 脚本执行失败负数减小权重 } vrrp_instance dns { state BACKUP # MASTER或BACKUP,实际通过priority确认(backup节点为BACKUP) interface ens192 # 绑定的网卡(用来发VRRP包; 绑定VIP), 网卡down会进入FAULT状态 virtual_router_id 9 # 取值在0-255之间,用来区分多个instance的VRRP组播(保证主备节点一致) priority 90 # 选举权重,master权重一般高于backup, 取值范围是1-255(backup节点为90) advert_int 1 # VRRP包的时间间隔(s) # nopreempt # 非抢占式(注意非抢占式适用于网卡监听track_interface--失败FAULT状态, 不适合脚本监听track_script--失败权重降低设置为非抢占式也不会切换master,backup) authentication { # 认证权限,防止非法节点进入 auth_type PASS auth_pass 12345678 } virtual_ipaddress { # VIP, 可设置多个 192.168.1.177 } track_script { # 健康检查脚本 chk_dns } # 注意: 此处配置脚本输出文件无法起作用 notify "/etc/keepalived/change_state.sh /var/log/keepalived.log" # 任何一状态切换时都会执行的脚本, 会传递状态变化参数 }

3、check_port.sh 放置于:/var/keepalived/ 监听ip及named服务

#!/bin/sh isMaster=`ip addr show | grep "scope global" | grep $1` if [ -n "$isMaster" ] then PORT_PROCESS=`ps -ef | grep named | grep -v grep | wc -l` if [ $PORT_PROCESS -eq 0 ] then echo "named Is Not Running, End." exit 1 fi else echo "is backup" fi

4、change_state.sh 放置于:/var/keepalived/

#!/bin/sh # 参数1: 转态变化输出文件; 参数3: VRRP 实例; 参数4: 新转态; 状态5: 权重 # 示例: /var/log/keepalived.log INSTANCE nfs MASTER 100 outFilename=$1 instance=$3 newState=$4 priority=$5 date=`date "+%Y-%m-%d %H:%M:%S"` content="$date $3 change to $4, priority: $5" echo "$content" >> $1 5、其他问题

1、设置可执行及写权限:chmod 744 xxx.sh 2、脚本执行时selinux报错可以选择更改selinux 开机状态 selinux开机状态的控制文件 : /etc/sysconfig/selinux SELINUX=enforcing | permissive | disabled

enfirocing 强制模式: SELINUX 主动拒绝访问尝试读取类型上下文为 tmp_t的 web 服务器。在强制模式中,SELINXU 既记录冲突,也强制执行规则

permissive 警告模式(许可模式): 通常用于对问题进行故障排除。在许可模式下,即使没有明确规则, SELINUX 也允许所有交互,并且记录所有被拒绝的交互。此模式可以用于确定你是否有 SELINUX问题。无需重新引导即可从强制模式转为许可模式,或再从许可模式转回强制模式

disabled 关闭

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有