nginx学习:nginx高可用的配置

    科技2026-02-19  7

    1. 高可用

    2. 修改 keepalived.conf 内容

    global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.18.100 smtp_connect_timeout 30 #标识本节点的字符串,通常为hostname,可以在/etc/hosts 文件中设置 本机对应的id router_id LVS_DEVEL } vrrp_script chk_nginx { # 检测 nginx 状态的脚本路径 script "/home/eric/file/nginx_check.sh" #(检测脚本执行的间隔) interval 2 #如果条件成立,权重 减 20 weight -20 } vrrp_instance VI_1 { # 主节点为 MASTER 对应的备份节点为 BACKUP state MASTER # 绑定虚拟IP的网络接口,与本机 IP 所在的网络接口相同 interface ens33 # 虚拟路由的ID号,两个节点设置必须一样,相同的 virtual_router_id 为一个组 virtual_router_id 50 # 本机IP地址 mcast_src_ip 192.168.18.100 # 主、备机取不同的优先级,主机值较大,备份机值较小 priority 100 #优先级高的设置,nopreempt 解决异常恢复后再次抢占的问题 nopreempt #组播信息发送间隔,两个节点设置必须一样,默认 1s advert_int 1 #设置验证信息,两个节点必须一致 authentication { auth_type PASS auth_pass 1111 } # 将track_script 块加入 instance 配置块 track_script{ # 执行nginx 监控的服务 chk_nginx } virtual_ipaddress { # 虚拟地址 , 可以定义多个 192.168.18.50 } }

    3. 添加 nginx_check.sh 检测脚本

    作用:如果nginx没有启动,则启动nginx ,如果启动不成功,则杀掉keepalived

    #!/bin/bash A=`ps -C nginx –no-header |wc -l` if [ $A -eq 0 ];then /home/eric/nginx/sbin/nginx sleep 2 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then killall keepalived fi fi

    4. 启动 nginx 和 keepalived

    # 启动nginx ./nginx # 启动keepalived(或者加入系统服务) ./keepalived -f /home/eric/keepalived/etc/keepalived/keepalived.conf

    5. 测试,当一台nginx 挂掉, 依然能正常访问

    # 访问虚拟ip http://192.168.18.50:9000/1.html
    Processed: 0.008, SQL: 9