zoukankan      html  css  js  c++  java
  • Linux中级之keepalived配置

    hacmp:
    ibm的高可用集群软件,并且是商业的(收费),一般用于非x86架构机器当中
    AIX,Unix
    去IOE:ibm,oracle,emc
    keepalived:
    一款高可用集群软件,利用vrrp协议实现vip地址的漂移;
      keepalived+lvs
      keepalived+nginx
      keepalived+haproxy
    配置文件主要分为三类分别是:
    (1)全局配置
    (2)VRRP配置
    (3)LVS配置

    keepalived对RS做健康检查的方式

     1 1. HTTP_GET:向后端的RS发送http请求,如果请求成功,说明后端节点正常(RS是web服务的时候比较常用)
     2 2. TCP:尝试与后端RS建立TCP连接,如果成功,说明后端节点正常
     3     【仅仅是检查RS系统是否正常工作,不能检查具体的业务】
     4 3. SMTP:对邮件服务器做健康检测
     5 4. MISC:通过脚本的方式实现健康检测
     6 
     7 
     8     TCP健康检测方式举例
     9         TCP_CHECK {                  # 通过TcpCheck判断RealServer的健康状态
    10             connect_timeout 10    # 连接超时时间
    11             nb_get_retry 3        # 重连次数
    12             delay_before_retry 3  # 重连时间间隔
    13             connect_port 80       # 检测端口
    14         }
    15 
    16 
    17     HTTP_GET健康检测方式举例
    18         HTTP_GET {
    19             url {
    20                 path check/t.html     # 检查的uri地址
    21                 digest 1362a91278f0   # 用keepalived自带的genhash生成
    22 
    23             connect_timeout 3         # 链接超时时间
    24             nb_get_retry 3            # 重连次数
    25             delay_before_retry 3      # 重连时间间隔
    26             connect_port 6500         # 检测端口
    27         }
    28 
    29     MISC健康检测方式举例
    30         MISC_CHECK {
    31             misc_path "/tmp/check.sh http://1.2.3.4:80/c/200.jsp"    
    32             # 调用外部程序或者脚本的路径和参数
    33 
    34             misc_timeout 10   
    35             # 脚本执行的超时时间
    36 
    37             misc_dynamic      
    38             # 动态权重标志。
    39             # 脚本返回0 则检测成功,权重不变
    40             # 返回1表示失败,权重设置为0
    41         }

    keepalived配置

     1 vrrp部分
     2 vim /etc/keepalived/keepalived.conf
     3 ! Configuration File for keepalived
     4 #全局配置
     5 global_defs {
     6    notification_email {
     7         #收件人地址
     8    }
     9         #邮件服务器
    10 }
    11 #VRRP配置DS1
    12 vrrp_instance VI_1 {
    13     state MASTER                    #角色类型MASTER|BACKUP
    14     interface ens33                 #网卡名称
    15     virtual_router_id 51            #虚拟路由id(需要与BACKUP一致)
    16     priority 100                    #优先级
    17     advert_int 1                    #没1秒检查一次
    18     #nopreempt                      #非抢占模式,默认为抢占模式
    19     authentication {
    20         auth_type PASS              #认证类型  主备之间必须一样
    21         auth_pass 1111              #认证密码  主备之间必须一样
    22     }
    23     virtual_ipaddress {
    24         192.168.11.100              #虚拟ip(vip)
    25     }
    26 }

     1 #利用脚本实现httpd服务的高可用
     2 vrrp_script chk_httpd {
     3     script "/root/sh/check_httpd.sh"
     4     interval 2
     5 }
     6 
     7 vrrp_instance VI_1 {
     8     state MASTER  
     9     interface ens33
    10     virtual_router_id 11
    11     priority 100
    12     advert_int 1
    13     authentication {
    14         auth_type PASS
    15         auth_pass 1111
    16     }
    17     virtual_ipaddress {
    18         192.168.11.100/24
    19     }
    20     track_script {
    21         chk_httpd
    22     }
    23     notify_master "/root/notify.sh master"
    24     notify_backup "/root/notify.sh backup"
    25     notify_fault "/root/notify.sh fault"
    26 }
    27 
    28 vrrp_instance VI_2 {
    29     state MASTER
    30     interface ens33
    31     virtual_router_id 22
    32     priority 100
    33     advert_int 1
    34     authentication {
    35         auth_type PASS
    36         auth_pass 2222
    37     }
    38     virtual_ipaddress {
    39         192.168.11.200/24
    40     }
    41 }
    1 #check_httpd.sh内容:
    2 #!/bin/bash
    3 service httpd status
    4 if [[ $? -eq 0 ]];then
    5     echo 'httpd is up...'
    6 else
    7     pkill keepalived  #或者service keepalived stop
    8 fi
    #shell发送邮件的内容
    #!/bin/bash
    contact='2367880638@qq.com'
    notify() {
        mailsubject="$HOSTNAME to be $1, vip转移"
        mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"
        echo "$mailbody" | mail -s "$mailsubject" $contact
    }
    case $1 in
    master)
        notify master
        ;;
    backup)
        notify backup
        ;;
    fault)
        notify fault
        ;;
    *)
        echo "Usage: $(basename $0) {master|backup|fault}"
        exit 1
        ;;
    esac
     1 #配置邮件服务器
     2 yum install -y mailx
     3 vim /etc/mail.rc
     4 在后面增加:
     5     set from=2367880638@qq.com
     6     set smtp=smtp.qq.com
     7     set smtp-auth-user=2367880638@qq.com
     8     set smtp-auth-password=jrhncbzpcthoecdd
     9     set smtp-auth=login
    10 
    11     set from:设置发件人
    12     set smtp:设置外部STMP服务器
    13     set smtp-auth-user:设置STMP用户名(一般为完整邮箱地址)
    14     set smtp-auth-password:设置SMTP密码

    lvs部分:
    #LVS配置
    virtual_server 192.168.11.100 80 {    
        delay_loop 3                    #健康检查时间间隔
        lb_algo rr                        #负载均衡调度算法  
        lb_kind DR                        #负载均衡转发规则 
        protocol TCP                    #协议
    
        real_server 192.168.11.11 80 {    #要监控的real_server的ip和端口号
                weight 1                 #权重
            TCP_CHECK {                    #基于tcp协议的检查
                connect_timeout 3          #连接时间超时
                retry 3                    #重连次数
                delay_before_retry 3    #重连间隔时间
            }
        }
        real_server 192.168.11.12 80 {    #要监控的real_server的ip和端口号
                weight 1                 #权重
            TCP_CHECK {                    #基于tcp协议的检查
                connect_timeout 3          #连接时间超时
                retry 3                    #重连次数
                delay_before_retry 3    #重连间隔时间
            }
        }
    }

    #在回环地址的子网口上配置服务ip(vip)

    ifconfig lo:0 192.168.11.100 broadcast 192.168.11.100 netmask 255.255.255.255 up

    #添加路由

    route add -host 192.168.11.100 dev lo:0

    echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore

    echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce

    echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore

    echo "2">/proc/sys/net/ipv4/conf/all/arp_announce

  • 相关阅读:
    HihoCoder
    中石油-高精度除法-java版
    01背包问题
    码农谷--将一个英文语句以单词为单位逆序排序/小码农挑选资源的方案数--未提交
    高精度乘法
    中石油—2的幂次方(power)
    中石油-【高精度】简单高精度加法
    中石油-【高精度】被限制的加法
    中石油【递归】分形 已提交
    中石油 【递归】普通递归关系
  • 原文地址:https://www.cnblogs.com/renyz/p/11396172.html
Copyright © 2011-2022 走看看