提示信息

Keepalived脚本

峰子 已关注
  • [root@s1 keepalived-2.0.18]# pwd
  • /alidata1/server/keepalived-2.0.18
  • [root@s1 keepalived-2.0.18]# ll
  • total 0
  • drwxr-xr-x. 2 root root 21 Sep 24 05:18 bin
  • drwxr-xr-x. 4 root root 41 Sep 24 05:18 etc
  • drwxr-xr-x. 2 root root 24 Sep 24 05:18 sbin
  • drwxr-xr-x. 5 root root 40 Sep 24 05:18 share
    1. [root@s1 keepalived-2.0.18]# more etc/keepalived/keepalived.conf
    2. ! Configuration File for keepalived
    3. global_defs {
    4. router_id server1
    5. vrrp_skip_check_adv_addr
    6. # vrrp_strict
    7. vrrp_garp_interval 0
    8. vrrp_gna_interval 0
    9. }
    10. vrrp_script hf_check{
    11. script "/alidata1/haifeng/sh/check_health.sh"
    12. interval 5
    13. weight -10
    14. }
    15. vrrp_instance VI_1 {
    16. state MASTER
    17. interface ens33
    18. virtual_router_id 50
    19. priority 100
    20. advert_int 1
    21. authentication {
    22. auth_type PASS
    23. auth_pass 1111
    24. }
    25. virtual_ipaddress {
    26. 192.168.1.220/32 dev ens33
    27. }
    28. track_script{
    29. hf_check weight -5
    30. }
    31. notify_master "/alidata1/haifeng/sh/notify_master.sh"
    32. notify_backup "/alidata1/haifeng/sh/notify_backup.sh"
    33. notify_fault "/alidata1/haifeng/sh/notify_fault.sh"
    34. notify "/alidata1/haifeng/sh/notify.sh"
    35. }
      遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
    峰子 关注 已关注

    最近一次登录:2019-10-10 14:28:58   

    暂时还没有签名,请关注我或评论我的文章

    峰子
    10月12日
    1. firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
    2. firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --out-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT

    小魔女: @峰子

    在配置 Keepalived 时,确实需要关注防火墙规则的设置,以确保 VRRP 流量能够顺利通过。在你的示例中,使用 firewalld 添加具体的规则很有帮助。值得一提的是,除了基础的规则,还可以考虑使用 rich rules 进行更细粒度的控制。

    例如,若想限制源地址以增强安全性,可以使用如下命令:

    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" destination address="224.0.0.18" protocol value="vrrp" accept'
    

    这条规则只允许来自指定子网的流量,通过 VRRP 协议访问该组播地址。

    此外,建议关注 firewalld 的状态与规则更新是否生效,可以用以下命令查看当前配置:

    firewall-cmd --list-all
    

    如需深入了解 firewalld 的配置方法,可以参考官网文档:FirewallD documentation。这样可以更全面地理解防火墙的使用技巧,以保障 Keepalived 的稳定性和安全性。

    5天前 回复 举报
    峰子
    10月12日
    1. firewall-cmd --zone=public --add-port=3306/tcp --permanent
    2. service firewalld restart

    我会习惯: @峰子

    在配置Keepalived时,防火墙的设置确实是一个重要的考量。添加MySQL端口(如3306)到公共区域的命令相当实用。不过,除了直接修改防火墙配置以外,还可以考虑使用 firewalldrich rules来实现更细粒度的控制。

    例如,如果需要限制某些特定IP地址可以访问3306端口,可以使用以下命令:

    firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="3306" accept'
    

    另外,修改防火墙设置后,重启服务是必要的,确保新规则生效。在实际操作中,建议使用如下命令进行确认和检查:

    firewall-cmd --list-all
    

    进一步了解 firewalld 的配置和管理,可参考 firewalld documentation。这样能够确保配置的时代性与安全性,更加全面地保护服务器的网络。

    11月13日 回复 举报
    转动
    10月23日

    配置详尽,好在能看到设置多个notify脚本,增加了故障处理的灵活性。

    翠烟如织: @转动

    对于告警和故障处理,灵活的 notify 脚本确实能大大提高运维的效率。可以考虑使用不同的通知方式,例如,通过邮件或Slack消息来及时传达重要信息。下面是一个简单的示例,展示了如何使用 notify 脚本发送邮件通知:

    #!/bin/bash
    
    EMAIL="admin@example.com"
    SUBJECT="Keepalived Alert"
    MESSAGE="Keepalived instance has failed."
    
    echo -e "Subject:${SUBJECT}\n\n${MESSAGE}" | sendmail -t ${EMAIL}
    

    这个脚本在 Keepalived 监测到故障时可以被调用,确保相关人员能第一时间获得信息。此外,可以结合日志系统(如 ELK Stack)或监控工具(如 Prometheus)进行更深入的故障分析。关于更多的运维管理技巧,Docker 和 Kubernetes 结合 Keepalived 的使用也值得一读,可以参考 Keepalived Official Documentation 来获取更多灵活性和扩展性的建议。

    5天前 回复 举报
    开不
    10月31日

    利用vrrp_script进行健康检查的设计,让服务的高可用更加可靠,不错的实现。

    天风: @开不

    对于健康检查的实现,使用 vrrp_script 的确可以提升可用性。除了基本的健康检查功能,建议结合使用其他监控工具,比如 NagiosPrometheus,以实现更全面的监控。这些工具可以提供实时的状态反馈和报警机制,确保在出现故障时及时响应。

    以下是一个简单的 vrrp_script 示例,它通过 ping 命令来检查某个服务是否可用:

    vrrp_script chk_http {
        script "curl -s --head http://your_service_url | head -n 1 | grep 'HTTP/1.1 200'"
        interval 2
        weight 2
    }
    

    在这个示例中,chk_http 脚本会每两秒检查一次指定 URL 是否返回 200 OK,这可以确保相关服务的正常运行。结合 keepalived 的配置,可以实现更加高效的故障转移和负载均衡。

    此外,关于健康检查和故障转移,可以参考这篇文章 Keepalived Official Documentation。这样,不仅可以让你的实施更加娴熟,还能够提高服务的可用性和可靠性。

    11月12日 回复 举报
    空虚度
    11月03日

    需要确保脚本的正确性。虽然配置合理,但脚本执行可能是可靠性的薄弱点。

    习惯: @空虚度

    在编写 Keepalived 脚本时,确保脚本的准确性至关重要。在配置文件的合理性取得保障的同时,脚本的执行却可能会成为一个潜在的风险点。例如,脚本中可能存在的拼写错误或者逻辑漏洞,都能够导致服务的中断或不可预期的行为。

    建议在脚本开发过程中,采用单元测试和集成测试以确保功能的正确性。例如,可以使用以下简单的 Bash 脚本来检查 Keepalived 配置的有效性:

    #!/bin/bash
    
    # 检查 Keepalived 配置文件是否有效
    if keepalived -t /etc/keepalived/keepalived.conf; then
        echo "配置文件有效"
    else
        echo "配置文件无效,请检查"
        exit 1
    fi
    

    此外,定期的日志监控与错误处理也同样重要。可以在脚本中添加错误捕获机制,并在日志中记录执行过程,以便后续排查问题。希望大家能够在具体实现中多加谨慎,确保服务的高可用性。有关 Keepalived 脚本的更多实践经验,建议访问 Keepalived Documentation 以获取更深入的信息。

    7天前 回复 举报
    风影海
    11月06日

    通过track_script来动态调整优先级,确实是个提升系统稳定性和灵活性的好方法。建议新增日志功能,记录切换过程。

    林妹妹lucklili: @风影海

    在动态调整优先级方面,借助track_script确实可以为系统带来显著的灵活性。值得考虑的是,可以使用notify选项来执行一些自定义的脚本,比如在主节点和备份节点之间进行切换时,可以触发日志记录,以获得更清晰的状态变换轨迹。

    下面是一个简单的示例,展示如何通过notify来记录切换事件:

    vrrp_script chk_nginx {
        script "pidof nginx"
        interval 2
        weight 2
    }
    
    vrrp_instance vip_example {
        ...
        track_script {
            chk_nginx
        }
        notify "/path/to/notify_script.sh"
    }
    

    notify_script.sh中,可以简单地记录日志:

    #!/bin/bash
    echo "$(date "+%Y-%m-%d %H:%M:%S") - $1 - VIP switched on $HOSTNAME" >> /var/log/keepalived.log
    

    通过这样的方式,可以有效地监控和追踪VIP变化情况,更利于后续的故障排除和性能分析。另外,可以参考Keepalived 官方文档获取更多配置和功能的信息,帮助实现更复杂的需求。

    3天前 回复 举报
    望眼欲穿
    11月17日

    配置文件设计合理,vrrp_script能及时发现异常。不过,需确保网络连接稳定,否则可能频繁切换状态。

    靡靡之音: @望眼欲穿

    在使用 Keepalived 的过程中,vrrp_script 确保了异常能够快速被捕获,这一点确实很重要。不过,为了降低因网络波动引起的频繁状态切换,可以考虑在脚本中增加一些额外的检查条件。例如,可以结合 ping 结果和负载情况进行综合判断:

    vrrp_script chk_haproxy {
        script "killall -0 haproxy" 
        interval 2 
        weight 2
    }
    

    在这个例子中,使用脚本检查 haproxy 进程是否存在,并通过调整 intervalweight 参数来控制检查频率和权重。同时,可以增加网络状况的监测,例如 ping 测试来判断主机是否在网络可达状态,再结合 HTTP 请求的响应来决定是否切换。

    另外,考虑到 Keepalived 的配置文档,可以参考官方 GitHub 常见问题解答,链接如下:Keepalived GitHub Wiki。这样可以更好地理解配置选项的使用及最佳实践。

    7天前 回复 举报
    随遇
    11月21日

    搞定Keepalived配置应该要注意共享IP的正确路由设置。没有此配置,VIP可能响应失败。

    -▲ 宿命: @随遇

    在配置Keepalived时,确实要关注共享IP的路由设置。一个常见的错误是未能在网络设备上正确配置路由,导致VIP无法正常响应。

    在Linux环境下,可以使用以下命令查看路由表:

    ip route show
    

    确保VIP地址在路由表中存在并且指向正确的接口。在某些情况下,可以在接口的配置文件中添加如下设置,以确保路由正确:

    # /etc/network/interfaces (Debian/Ubuntu)
    auto eth0
    iface eth0 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        gateway 192.168.1.1
    
    # 配置VIP
    post-up ip addr add 192.168.1.100/24 dev eth0
    

    此外,如果使用的是较为复杂的网络拓扑,比如有多个网关或者使用了VPN,需要更细致地检查每一条路由。推荐参考 Keepalived官方文档 以获取更详细的配置示例和最佳实践。

    最后,一定要重启服务并监控状态,以确保一切正常工作。使用命令:

    systemctl restart keepalived
    

    systemctl status keepalived
    

    有时,调试是必要的,确保了解每一步的执行情况。

    11月09日 回复 举报
    韦雨恬
    11月28日

    vrrp_instance中的priority决定了主机的优先级。设置100主机为主是合理的设计,便于管理。

    不安分: @韦雨恬

    对于vrrp_instance中的priority设置,确实能够显著影响到主备主机的切换逻辑。将主机的优先级设置为100是一个合理的选择,尤其是在多主机环境中,可以明确标识出哪台服务器是首选的主机。

    为了进一步增强对Keepalived配置的理解,可以考虑以下示例,设置不同优先级的主备实例:

    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1234
        }
        virtual_ipaddress {
            192.168.1.100
        }
    }
    
    vrrp_instance VI_2 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 90
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1234
        }
        virtual_ipaddress {
            192.168.1.101
        }
    }
    

    在以上示例中,VI_1作为主机,设置的优先级为100,而VI_2则为备机,优先级为90。通过这种方式,当主机宕机时,备机能够顺利接管虚拟IP。

    更多关于Keepalived的最佳实践和配置说明,可以参考官方文档:Keepalived Documentation。这样的资料可以帮助我们更深入地理解高可用性架构的设计。

    11月11日 回复 举报
    奕柯
    12月06日

    配置里有notify_masternotify_backup等通知机制,增加了配置的可扩展性,方便实现多机房切换。

    亨利八世: @奕柯

    对于notify_master和notify_backup的使用,确实提供了很好的扩展性,特别是在实现多机房切换时,这使得系统的高可用性得到了极大的增强。可以考虑在不同的通知机制中实现自定义脚本,以满足特定的业务需求。

    例如,若需要在主备节点切换时发送通知邮件,可以在notify_master中配置如下:

    notify_master="/path/to/notify_script.sh master"
    

    而在notify_backup中配置:

    notify_backup="/path/to/notify_script.sh backup"
    

    这里的notify_script.sh可以包含SMTP发送邮件的逻辑,从而在节点切换时自动通知相关人员。

    此外,可以参考 Keepalived的官方文档 来获取更多关于通知机制的深入信息以及配置示例,以构建适合特定环境的高可用性解决方案。

    5天前 回复 举报
    ×
    免费图表工具,画流程图、架构图