• 第十一周LINUX 学习笔记


                                keepalived

    keepalived:
        基于vrrp(虚拟冗余路由协议)的实现
        virtual server: 对于IPVS
        vrrp_script: 调用外部脚本 nginx haproxy等轻量级的实现

        所谓的vrrp就是为了解决前端路由器如果发生单点故障导致后方服务器全部不能与外部通信的问题。于是两台路由器通过vrrp协议连接,两个路由器都给予虚拟的IP地址(VIP)和虚拟的MAC地址(VMAC),当发生故障的时候,两个地址一起转移,而不像其他的高可用功能一样,需要进行一次虚假的mac地址的通告。因此,所以所谓的keepalived就是将VRRP协议实现在了LINUX上,但是又不仅仅限制于转换地址的功能,也能够提供如转移一些nginx的服务的功能。

        而keepalived之间的资源转移是通过降低主节点的优先级的方式,将资源转移到副节点的方式

        /etc/keepalived/keepalived.conf
        /etc/rc.d/init.d/keepalived

        keepalived.conf

    global_defs {  #全局配置段,一般来配置邮件功能
       notification_email {#收件人
           root@localhost
       }
       notification_email_from kaadmin@localhost  #发件人
       smtp_server 127.0.0.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL
    }

    vrrp_instance VI_1 { #虚拟路由段的配置
        state MASTER #初始状态,如果这边设置了master 那么backup的priority 的值一定要小于master的
        interface eth0 #通信网卡
        virtual_router_id 51 #虚拟路由的ID号,不能大于255 还是MAC地址的最后一位,所以MAC地址就可以直接由这个来定义
        priority 100 #初始优先级
        advert_int 1 #初始化通告的个数
        authentication { #认证方式
            auth_type PASS  #认证类型
            auth_pass 1111 #认证密码
        }
        virtual_ipaddress { #VIP配置段
            192.168.1.103
        }
        track_script{
            abc #引用脚本名称
        }
    }

    vrrp_script abc{ #可以定义一个额外的脚本
        #脚本功能
    }



    1.如何在状态转换时进行通知?
        一般在vrrp_instance{}中进行使用
        to MASTER transition
            notify_master /path/to_master.sh
        to BACKUP transition
            notify_backup /path/to_backup.sh
        FAULT transition
            notify_fault "/path/to_backup.sh VG_1"


    MASTER通知脚本实例:
    #!/bin/bash
    #
    vip=192.168.1.103
    contact='root@localhost'
    thisip=`ifconfig eth0 | awk '/inet addr:/{print $2}' | awk -F: '{print $2}'` #获取IP地址的
    nofity(){
        mailbody="vrrp transition,$vip floated to $thisip"
        subject="$thissip is to be $vip master"
        echo $mailbody | mail -s $subject $contact
    }
    nofity   

    或者合并为一个脚本,在keepalived.txt中有提供案例
    在vrrp_instance配置中只需要加入
    notify_master "/path/notify.sh master"
    notify_backup "/path/notify.sh backup"
    notify_fault "/path/notify.sh fault"

    2.如何配置ipvs?
        virtual server
        realserver
            health check
    keepalived.conf 中的示例
    virtual_server 172.168.100.100 80 {# VIP 地址和端口
        delay_loop 6
        lb_algo rr #负载均衡方法
        lb_kind DR  #LVS工作模型
        nat_mask 255.255.0.0
        persistence_timeout 0 #持久功能
        protocol TCP #基于什么工作方式

        real_server 172.16.100.17 80 {#RIP
            weight 1
            HTTP_GET {
                url {
                  path /
                  status_code 200
                }

                
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
        real_server 172.16.100.18 80 {#RIP
            weight 1
            HTTP_GET {
                url {
                  path /
                  status_code 200
                }

                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }    
    }

    3.如何对某特定服务做高可用
    1丶监控服务
    vrrp_script{

    }
    2丶追踪监控服务
    track_script{

    }

    另外应该在nofity脚本中定义根据状态来启动或停止nginx
    notify_master "/path/notify.sh master"
    notify_backup "/path/notify.sh backup"
    notify_fault "/path/notify.sh fault"
    设置vrrp_script监控服务,防止因为nginx进程以及停止了,服务却还没有停止,导致无法转移的情况
    vrrp_script chk_nginx{
        script "killall -0 nginx"
        inerval 1
        weight -2
        fall 2 失败次数一次
        rise 1 成功次数一次就行
    }
    4.如何实现基于多虚拟路由的master/master 模型

    在配置文件中定义两个vrrp_instance


    vrrp_instance VI_1 { #虚拟路由段的配置
        state MASTER #初始状态,如果这边设置了master 那么backup的priority 的值一定要小于master的
        interface eth0 #通信网卡
        virtual_router_id 51 #虚拟路由的ID号,不能大于255 还是MAC地址的最后一位,所以MAC地址就可以直接由这个来定义
        priority 100 #初始优先级
        advert_int 1 #初始化通告的个数
        authentication { #认证方式
            auth_type PASS  #认证类型
            auth_pass 1111 #认证密码
        }
        virtual_ipaddress { #VIP配置段
            192.168.1.103
        }
    vrrp_instance VI_2 { #虚拟路由段的配置
        state BACKUP #初始状态,如果这边设置了master 那么backup的priority 的值一定要小于master的
        interface eth0 #通信网卡
        virtual_router_id 55 #虚拟路由的ID号,不能大于255 还是MAC地址的最后一位,所以MAC地址就可以直接由这个来定义
        priority 99 #初始优先级
        advert_int 1 #初始化通告的个数
        authentication { #认证方式
            auth_type PASS  #认证类型
            auth_pass 1111 #认证密码
        }
        virtual_ipaddress { #VIP配置段
            192.168.1.102
        }

    另外一个机子的配置文件只需要改变两边的初始状态 和初始优先级

  • 相关阅读:
    顺流交易中,母公司销售部分存货,为什么收入也是全额抵消?
    借:递延所得税资产(负债)贷:所得税费用
    可变回报与固定回报
    或有对价
    可以税前扣除什么意思
    应收账款保理为什么是筹资活动
    外币报表折算差额计入其他综合收益
    分配现金股利为什么是筹资
    spring的@EnableAspectJAutoproxy注解
    Spring的@DeclareParents注解
  • 原文地址:https://www.cnblogs.com/gohrx/p/10862350.html
Copyright © 2020-2023  润新知