zoukankan      html  css  js  c++  java
  • 搭建keepalived集群+nginx高可用

    搭建keepalived集群使nginx高可用

    虚拟机环境:ubuntu 18.04

    1. 每台服务器下载 nginx 和 keepalived

    apt-get nginx
    apt-get keepalived
    

    2. 找到nginx配置文件 /etc/nginx/nginx.conf ,并进行简单配置

    server{
      listen 80; #监听端口
      server_name 192.168.201.127; # 服务器地址或者域名
      location / {
        root /usr/share/nginx/html;  # root 是配置服务器的默认网关根目录位置
        index index.html;   # 配置首页文件的名称
    }
    }
    

    3. 配置keepalived, /etc/keepalived/keepalived.conf,若文件不存在,就自己创建

    ! Configuration File for keepalived
      
    global_defs {
       notification_email { # keepalived 服务器宕机异常出现的时候,发送通知邮件,可以是多个
        1329926762@@qq.com # 收件人邮箱1
        # ***@**.com # 收件人邮箱2
       }
       notification_email_from 1329926762@qq.com #邮箱发件人
       smtp_server stmp.qq.com #邮箱服务器地址
       smtp_connect_timeout 30 # 超时时间
       router_id LVS_DEVEL # 路由id
       vrrp_skip_check_adv_addr # 默认不跳过检查
       # vrrp_strict # 这个东西要注释掉
       vrrp_gna_interval 0 #单位秒,在一个网卡上每组na消息之间的延迟时间,默认为0
       script_user root
       enable_script_security
    }
    vrrp_script chk_haproxy
    {
        script "/etc/keepalived/chk_nginx.sh"
        interval 2
        weight 2
    }
    # vrrp实例,我们集群设置,多机配置,除了state和priority不一样,其他都一样
    # 主实例 state 为 MASTER;priority 较高
    # 副本实例 state 为 BACKUP
    vrrp_instance VI_1 {
        state MASTER # 服务器状态,MASTER是主服务器,BACKUP是备份服务器
        interface ens33 # 通信端口,通过ip addr 命令可以看到,根据自己的机器配置
        virtual_router_id 51 #同一个局域网内,virtual_router_id 在集群中不能相同
        priority 100 # 权重比,主服务器的priority要比副本服务器大
        advert_int 1 # 心跳间隔,单位秒,keepalived多机器集群 通过心跳检测,如果发送心跳没反应,就立刻接管
        authentication { # 服务器之间的通信密码
            auth_type PASS
            auth_pass 111123
        }
        track_script { # 脚本,与vrrp_script 定义的名称一致
          chk_haproxy
        }
        virtual_ipaddress { #自定义虚拟ip,可以配置多个,每行一个
            192.168.201.23
        }
    }
    

    4. 在keepalived.conf相同目录下配置 keepalived 脚本文件 chk_nginx.sh,检测nginx是否正常,若nginx挂掉,则重启nginx

    #!/bin/bash
    # nginx挂掉之后,keepalived重新启动nginx,若不能启动,则关闭当前keepalived
    status=`ps -ef|grep -w  nginx|grep -v grep|wc -l`
    echo ${status}
    if [ ${status} -eq 0 ]; then
        systemctl start nginx.service
        sleep 2
        status2=`ps -ef|grep -w  nginx|grep -v grep|wc -l`
        echo ${status2}
        if [ ${status2} -eq 0  ]; then
                systemctl stop keepalived.service
        fi
    fi
    

    然后运行 chmod +x chk_nginx.sh,为脚本文件添加可执行权限

    5. 每台服务器启动 nginx keepalived

    systemctl start nginx # 启动nginx
    systemctl start keepalived  # 启动keepalived
    
    systemctl status nginx # 查看nginx状态
    systemctl status keepalived  # 查看keepalived状态
    

    6. 访问虚拟ip,我这里是 192.168.201.23,查看是否成功

  • 相关阅读:
    十、Compose命令
    九、compose入门
    JS数组中,两两比较的算法,为了获取重复的值,并在php数组中,使用这种倒三角算法
    题目重复度检测---四种相似度检测的方案+PHP改进计算字符串相似度的函数similar_text()、levenshtein()
    js让文字一个个出现
    客户总想让页面炫酷起来-----怎么炫酷呢?---使用css3的东西或者其animate.css
    关于git的总结:git知识大全,命令行操作,vscode操作
    defer和async的区别
    dom和bom的区别,以及三类偏移属性(JS运动方法中,经常会涉及到这些位置信息)
    认真的对待flex,Flex模型和Flex属性思维导图,以及自己的记忆方法--jaf和aof
  • 原文地址:https://www.cnblogs.com/yloved/p/13677709.html
Copyright © 2011-2022 走看看