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
    }

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

第十一周LINUX 学习笔记的更多相关文章

  1. 第八周LINUX学习笔记

    vsftpd丶NFS丶SAMBA nfs基于rpcsamba基于cifs(smb)  DRBD: ftp:File Transfer protocol 文件传输协议 两个连接:       tcp:命 ...

  2. 第七周LINUX学习笔记

    HTTP的基本操作 3月17资源子网和通信子网套接字:两类    socket:IP port             IP:port            Ip.port unix sock:基于文 ...

  3. 第六周LINUX学习笔记

    DNS服务 DNS:Domain Name Service //协议     实现:BIND(Berkeley Internet Name Domain)     监听端口:        UDP:5 ...

  4. 第三周LINUX学习笔记

    周期性任务丶find 文件查找:find命令 locate :在数据库中查找,非实时查找,精确度不高,查找速度快,模糊查找  /tmp/passwad/a.textfind:实时查找:速度慢  ,精确 ...

  5. 第五周linux学习笔记

    第五章 系统调用 5.1 与内核通信 系统调用在用户空间进程和硬件设备之间添加了一个中间层.该层主要作用有三个. 它为用户空间提供了一种硬件的抽象接口. 系统调用保 证了系统的毡定和安全. 在第 3 ...

  6. 第十周LINUX 学习笔记

    LVS集群nat丶DR HA:高可用    平均无故障时间/(平均无故障时间+平均修复时间)        负载均衡 次序lb(负载)——>ha()LB  tcp:lvs,haproxy  应用 ...

  7. 第九周LINUX 学习笔记

    基于GTID的mysql主从简单复制 一.简单主从模式配置步骤1.配置主从节点的服务配置文件1.1.配置master节点:[mysqld]binlog-format=ROWlog-bin=master ...

  8. 第十二周LINUX学习笔记

    zabbix zabbix-server: 监听的端口10051 zabbix-agent: 10050 Zabbix: Item, Key(键) ethercard.traffic[eth0] ac ...

  9. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

随机推荐

  1. 不了解这12个语法糖,别说你会Java!

    阅读本文大概需要 10 分钟. 作者:Hollis 本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语 ...

  2. HTTP、HTTP2.0、SPDY、HTTPS 你应该知道的一些事

    参考: https://www.cnblogs.com/wujiaolong/p/5172e1f7e9924644172b64cb2c41fc58.html

  3. 【神经网络与深度学习】生成式对抗网络GAN研究进展(五)——Deep Convolutional Generative Adversarial Nerworks,DCGAN

    [前言]      本文首先介绍生成式模型,然后着重梳理生成式模型(Generative Models)中生成对抗网络(Generative Adversarial Network)的研究与发展.作者 ...

  4. docker 学习操作记录 1

    记录1 Xshell (Build ) Copyright (c) NetSarang Computer, Inc. All rights reserved. Type `help' to learn ...

  5. ArcSOC进程数不断增长导致oracle processes溢出原因分析

    现场出现了一个问题,oracle运行一段时间之后,process个数会溢出,然后新的连接会失败.通过分析,发现Arcgis Server 的ArcSOC进程在不段增长.ArcSOC是arcgis se ...

  6. QuantLib 金融计算——基本组件之 Money 类

    目录 QuantLib 金融计算--基本组件之 Money 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 Money ...

  7. [原创]K8域控植入脚本生成器(内网渗透/RPC不可用解决方案)

    0x001 简介 当IPC或WMI无法访问域内机器时,可通过脚本上控. 我们可以在个人机的开机注销重启脚本里配置持久化. 域环境下同样也有开机脚本,但得在在域控机器配置 可以使用BAT\VBS等脚本, ...

  8. Java爬虫利器HTML解析工具-Jsoup

    Jsoup简介 Java爬虫解析HTML文档的工具有:htmlparser, Jsoup.本文将会详细介绍Jsoup的使用方法,10分钟搞定Java爬虫HTML解析. Jsoup可以直接解析某个URL ...

  9. 025 Linux基础入门-----历史、简介、版本、安装

    1.linux历史 Linux最初是由芬兰赫尔辛基大学学生Linus Torvalds由于自己不满意教学中使用的MINIX操作系统, 所以在1990年底由于个人爱好设计出了LINUX系统核心.后来发布 ...

  10. Qt3D NodeInstantiator 使用时报出index out of range错误的记录

    最近用到NodeInstantiator批量加入实体 刚开始用的时候一直程序崩溃 错误代码大致如下: // main.qml ApplicationWindow { ...... Loader { i ...