博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十一周LINUX 学习笔记
阅读量:5737 次
发布时间:2019-06-18

本文共 3486 字,大约阅读时间需要 11 分钟。

                            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
    }
另外一个机子的配置文件只需要改变两边的初始状态 和初始优先级

 

转载于:https://www.cnblogs.com/gohrx/p/10862350.html

你可能感兴趣的文章
REST技术第三步 @BeanParam的使用
查看>>
SharePoint 读取 Site Columns 的数据并绑定到DropdownList
查看>>
使用 axios 详解
查看>>
通信基站(dfs回溯,思维)
查看>>
nginx web加密访问
查看>>
iOS - Regex 正则表达式
查看>>
第 68 章 Logical Volume Manager (LVM)
查看>>
膝盖中了一箭之康复篇-第八个月暨2月份目标总结
查看>>
IPA提交APPStore问题记录(一)
查看>>
有利于seo优化的网站地图不能取巧
查看>>
快照产品体验优化
查看>>
ASCII
查看>>
ibatis SqlMap not found
查看>>
Android SD卡创建文件和文件夹失败
查看>>
Ubuntu 14.04 vsftp refusing to run with writable root inside chroot问题解决方法
查看>>
Intellij IDEA远程调试tomcat
查看>>
hadoop的学习论坛
查看>>
Struts2 学习小结
查看>>
烂泥:wordpress迁移到docker
查看>>
.扒渣机的性能及优势 
查看>>