• Keepalived高可用软件概述


    Keepalived高可用软件概述:
    1)互联网主要的高可用软件:Keepalived、Hearttbeat、其中Keepalived是轻量级的,Keepalived是一款开源、免费的实现网站、数据库、业务系统之间的高可用软件,是目前企业中使用最广泛的软件。
     
    2)Keepalived实现高可用,主要考两个功能实现:
    • 健康检查:
    Keepalived可以去检查后端nginx、MySQL、NFS、redis、服务器的运行状态,具体可以类似交换机制 3层(网络层ping)、4层(传输层:telnet port)、7层(应用层:URL、HTTP、FTP)检查。
    • VRRP技术:
    Keepalived可以使用VRRP(虚拟路由器冗余技术),可以将两台物理机封装称为路由器集群,根据优先级选举产生master和backup,成为master的路由器(主机)会产生VIP地址,并且由VIP地址(路由器)负责用户的请求或者路由转发。
     
    成为master的路由器(主机)之后,会定时向集群内部组发送组播信息(包),backup接收到组播信息之后,会认为master还是存活的,此时不会参与竞选或者抢占为master,没有收到组播包之后会参与集群内部竞选,竞选通常是以优先级来决定,优先级高则为master,低则为backup。
     
    3)
     
    4)配置Keepalived,两台服务器keepalived.conf常用内容如下:
    ! Configuration File for keepalived
     global_defs { 
      notification_email { 
          support@jfedu.net
     } 
        notification_email_from wgkgood@163.com 
        smtp_server 127.0.0.1 
        smtp_connect_timeout 30 
        router_id LVS_DEVEL 
     } 
     
     vrrp_script chk_nginx { 
        script  "/data/sh/check_nginx.sh" 
        interval 2 
        weight 2 
     } 
     # VIP1 
     vrrp_instance VI_1 { 
         state BACKUP 
         interface eth0 
         lvs_sync_daemon_inteface eth0 
         virtual_router_id 151 
         priority 100 
         advert_int 5 
         nopreempt
         authentication { 
             auth_type  PASS 
             auth_pass  1111
     
         } 
         virtual_ipaddress { 
             192.168.0.198 
         } 
         track_script { 
         chk_nginx 
        } 
     }
    5)配置文件参数详解:
    完整的keepalived的配置文件,其配置文件keepalived.conf可以包含三个文本块:全局定义块、VRRP实例定义块机虚拟服务器定义块。全局定义块和虚拟服务器定义块是必须的,如果在只有一个负载均衡器的场合,就不需要VRRP实例定义块。
     
    #全局定义块:
    ! Configuration File for keepalived               # !改行表示注释;
    global_defs { 
      notification_email {                            # 指定keepalived在发生切换时需要发送email到的对象,一行一个;
          support@jfedu.net
    } 
        notification_email_from wgkgood@163.com       # 指定发件人;   
        smtp_server 127.0.0.1                         # 指定smtp服务器地址; 
        smtp_connect_timeout 30                       # 指定smtp连接超时时间;
        router_id LVS_DEVEL                           # 运行keepalived机器的标识; 
    } 

    #监控nginx进程:

    vrrp script chk_nginx {
        script "/data/script/nginx.sh"               # 监控服务脚本路径,脚本需要有x执行权限;
        interval 2                                   # 检测时间隔(执行脚本间隔); 
        weight 2                                      
    }

    #VRRP实例定义块:

    vrrp sync group VG_1{                           # 监控多个网段的实例;
            group{
        VI_1                                        # 实例名; 
        VI_2    
        }
    notify master /data/sh/nginx.sh                 # 指定当时切换到master时,执行脚本;
    notify backup /data/sh/nginx.sh                 # 指定当时切换到backup时,执行脚本;
    notify /data/sh/nginx.sh                        # 发生任何切换,均执行的脚本;
    smtp alert;                                     # 使用global defs中提供的邮件地址和smtp服务器发送邮件通知;
    }
    
    vrrp instance VI_1{                          
        state BACKUP                               # 设置主机状态;
        MASTER/BACKUP
        nopreempt                                  # 设置为不抢占;
        interface ens33                            # 对外提供服务的网络接口;
        lvs sync daemon interface ens33            # 负载均衡器之间监控接口;  
        track interface {                          # 设置额外的监控,网卡出现问题都会切换;
            ens33
            eth0
        }
        macast src ip                              # 发送多播包的地址,如果不设置默认使用绑定网卡的primary ip;
        garp master delay                          # 在切换到master状态后,延迟进行gratuitous ARP请求; 
        virtual router id 50                       # VRID标记,路由ID可通过#tcpdump vrrp查看;
        priority 90                                # 优先级,高优先级竞选为master;
        advert int 5                               # 检查间隔,默认5秒;
        preempt delay                              # 抢占延时,默认5秒;
        debug                                      # debug日志级别;
        authentication {                           # 设置认证;
            auth type PASS                         # 认证方式;
            auth pass 1111                         # 认证密码;
        }
        track script{                              # 以脚本为监控;
        chk nginx;
            chk_nginx
        }
        virtual ipaddress {                        #设置vip
            192.168.1.188
        }
    }

    注意: 使用了脚本监控nginx或者MySQL,不需要如下虚拟服务器设置块。
    #全局定义块:

    virtual server 192.168.1.188 3306 {
        delay loop 6                                  # 健康检查时间间隔; 
        lb_algo rr                                    # 调度算法rr|wrr|lc|wlc|lblc|sh|dh;
        lb kind DR                                    # 负载均衡转发规则 ;
     NAT|DR|TUN
        persistence timeout 5                         # 会话保持时间;
        porsistence TCP                               # 使用的协议;
        real server 192.168.1.199 3306 {
            weight 1                                  # 默认为1,0为失效;
            notify up  <string> | <quoted-string>    # 在检测到server up后执行脚本;
            notify down <string> | <quoted-string>   # 在检测到server down后执行脚本;
            TCP_CHECK {
            connect_timeout 3                        # 连接超时时间;
             nb_get_retry  1                         # 重连次数;
                   delay_before_retry 1              # 重连间隔时间;
                   connect_port 3306                 # 健康检查的端口;
                    }
           HTTP_GET {   
           url  {
              path /index.html                             # 检测url,可写多个
              digest  24326582a86bee478bac72d5af25089e     # 检测效验码;
              genhash -s IP -p 80 -u http://IP/index.html  # digest效验码获取方法:
              status_code 200                              # 检测返回http状态码
        }
    }
    }

    查看日志:

    tail -fn 30 /var/log/messages
  • 相关阅读:
    Thinkphp整合最新Ueditor编辑器
    git管理和自动部署项目
    [转]桶
    Linux下ThinkPHP网站目录权限设置
    ThoughtWorks FizzBuzzWhizz 代码实现
    windows bat脚本实现ftp自动下载 删除
    MCM/ICM2018美国大学生数学建模大赛D题翻译
    解决C/C++语言中全局变量重复定义的问题
    使用fabric解决百度BMR的spark集群各节点的部署问题
    解决百度BMR的spark集群开启slaves结点的问题
  • 原文地址:https://www.cnblogs.com/fengyuanfei/p/13816293.html
Copyright © 2020-2023  润新知