HA集群

 keepalived
heartbeat
corosync
cman

功能实现

vrrp协议在Linux主机上以守护进程方式,

能够根据配置文件自动生成ipvs规则

对各RS健康状态检测

组件

vrrp stack

checkers

ipvs wrapper ---> ipvs

HA Cluster配置准备

1. 本机的主机名与Hosts中定义的主机保持一致,以及hostname、uname -n获得的名称保持一致

    CentOS6 /etc/sysconfig/network

    CentOS7 hostnamectl set-hostname HOSTNAME | /etc/hostname

    各节点能互相解析主机名编辑/etc/hosts文件

2. 各节点时间同步

3. 确保iptables及selinux规则影响keepalive

4. 为了防止配置文件修改出错不可回改首先备份文件

配置文件详解

man keepalived.conf

定义收件人

    notification_email {...}   # To:

定义发件人

    notification_email_from admin@example.com

SMTP服务器

    smtp_server 127.0.0.1 [<PORT>]

邮件超时时间

    smtp_connect_timeout 30

定义route_id

    router_id LVS_DEVEL

定义组播地址

    vrrp_mcast_group4 224.0.0.1

例子:本机邮件

    global_defs {
notification_email {
root@localhost
}
notification_email_from admin@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1.example.com
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
# vrrp_mcast_group4 224.0.0.1 双主实例默认组播地址不能更改
} VRRP组身份 state MASTER 通告网卡 interface eth0 虚拟Route_ID(要唯一) virtual_router_id 51 优先级,用于判定VRRP组身份 priority 100 心跳发送间隔 advert_int 1 身份认证 authentication {
# PASS||AH
# PASS - Simple password (suggested)
# AH - IPSEC (not recommended))
auth_type PASS
# Password for accessing vrrpd.
# should be the same on all machines.
# Only the first eight (8) characters are used.
auth_pass 1234
} 虚拟地址配置 virtual_ipaddress {
<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
192.168.200.17/24 dev eth1
192.168.200.18/24 dev eth2 label eth2:1
} 例子:vrrp实例 vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.180.100/24 dev ens33 label ens33:0
}
}

使用日志功能

vim /etc/sysconfig/keepalived 

    KEEPALIVED_OPTIONS="-D -S 3"

# LOG守护进程配置

vim /etc/rsyslog.conf 

    local3.*                                                /var/log/keepalived.log

systemctl restart rsyslog

VRRP脚本自动检测优先级

# 实例外定义,实例内调用

vrrp_script chk_schedown {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 2
weight -2
} vrrp_instance INSTANCE_NAME {
...
track_script {
chk_schedown
}
}

keepalive基于LVS-NAT配置

vrrp_sync_group VG_1 {
VI_1
VI_2
} vrrp_instance VI_1 {
interface ...
VIP
} vrrp_instance VI_2 {
instance ...
DIP
}

keepalived双主模型配置

node1 

    vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.180.100/24 dev ens33 label ens33:0
}
} vrrp_instance VI_2 {
state BACKUP
interface ens33
virtual_router_id 61
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 654321
}
virtual_ipaddress {
192.168.180.110/24 dev ens33 label ens33:1
}
} node2 vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.180.100/24 dev ens33 label ens33:0
}
} vrrp_instance VI_2 {
state MASTER
interface ens33
virtual_router_id 61
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 654321
}
virtual_ipaddress {
192.168.180.110/24 dev ens33 label ens33:1
}
}

Virtual Instence 状态发生改变时,发送通知邮件

当前节点转换为master状态时,发送通知邮件

    notify_master <STRING>|<QUOTED-STRING> [username [groupname]]

    # 编写脚本定制发送内容
notify_master "/etc/keepalived/notify.sh master" 当前节点转换为backup状态时,发送通知邮件 notify_backup <STRING>|<QUOTED-STRING> [username [groupname]] 当前节点转换为backup状态时(节点故障),发送通知邮件
notify_fault <STRING>|<QUOTED-STRING> [username [groupname]] 当前节点转换为stop状态时(节点故障),发送通知邮件 notify_stop <STRING>|<QUOTED-STRING> [username [groupname]] # executed when stopping vrrp

Virtual server

三种类型组

    virtual_server IP port 

    virtual_server fwmark int 

    virtual_server group string

向RS发送健康状态检查间隔

    delay_loop <INT>

负责均衡所支持的调度算法

    lb_algo rr|wrr|lc|wlc|lblc|sh|dh

对每一个报文单独调度

    ops

lvs支持类型

    lb_kind NAT|DR|TUN

持久时长

    persistence_timeout [<INT>]

协议选择

    protocol TCP|UDP|SCTP

没有虚拟地址时挂起监控检查功能

    ha_suspend

定义对哪些虚拟主机做健康状态检测

    virtualhost <STRING>

所有的虚拟主机都失效时,Sorry Server生效

    sorry_server <IPADDR> <PORT>

real_server <IPADDR> <PORT>

    weight <INT>

    notify_up <STRING>|<QUOTED-STRING>

    notify_down <STRING>|<QUOTED-STRING>

    健康状态检测协议

        # HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|DNS_CHECK|MISC_CHECK

        HTTP_GET|SSL_GET

            url {
#eg path / , or path /mrtg2/
path <STRING>
# healthcheck needs status_code
# or status_code and digest
# Digest computed with genhash
# eg digest 9b3a0c85a887a256d6939da88aabd8cd
digest <STRING>
# status code returned in the HTTP header
# eg status_code 200. Default is any 2xx value
status_code <INT>
} # 如果服务器繁忙或者其他原因获取不到页面时,应该再重新尝试几次 nb_get_retry <INT> # 重新获取的等待延时 delay_before_retry <INT> connect_ip <IP ADDRESS> connect_port <PORT> bindto <IP ADDRESS> bind_port <PORT> connect_timeout <INTEGER> # 基于fwmark检测时使用 fwmark <INTEGER> # 打散各RS的检测时间,减少同一时间点上的并发数,减少网络负担 warmup <INT>

keepalived学习的更多相关文章

  1. 高可用工具keepalived学习笔记

    keepalived完全遵守VRRP协议包括竞选机制,至于VRRP是什么这里不说了参考http://wenku.baidu.com/link? url=1UbkmHuQlGECgC90P7zF6u2x ...

  2. Keepalived学习笔记

    注LVS(Linux Virtual Server):Linux虚拟服务器,这里通过keepalived作为负载均衡器RS(Real Server):真实服务器VRRP(Virtual Router ...

  3. LVS+Keepalived高可用部署

    一.LVS+Keepalived高可用部署 一.keepalived节点部署 1.安装keepalived yum install keepalived ipvsadm -y mkdir -p /op ...

  4. Keepalived入门学习

    一个执着于技术的公众号 Keepalived简介 Keepalived 是使用C语言编写的路由热备软件,该项目软件起初是专门为LVS负载均衡设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后 ...

  5. 一脸懵逼学习keepalived(对Nginx进行热备)

    1:Keepalived的官方网址:http://www.keepalived.org/ 2:Keepalived:可以实现高可靠: 高可靠的概念: HA(High Available), 高可用性集 ...

  6. 深入学习keepalived之一 keepalived的启动

    1.keepalived的启动过程: 启动健康检查子进程和vrrp子进程.其中_WITH_LVS_,_WITH_VRRP_在configure和configure.in文件中定义. 源码如下: /* ...

  7. LVS+Keepalived(DR模式)学习笔记

    1.简述 在互联网的中型项目中,单服务器往往已经无法满足业务本身的性能要求,这时候就会平行扩展,把负载分摊到数台服务器上(集群).一般实现集群有DNS轮询,LVS,nginx负载均衡. 集群主要目的包 ...

  8. Linux学习系列之lvs+keepalived

    LVS简介 LVS介绍 LVS是Linux Virtual Server的缩写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,属于4层负载均衡 ipvs和ipvsadm的关系 我们使用配置LV ...

  9. postgres高可用学习篇三:haproxy+keepalived实现postgres负载均衡

    环境: CentOS Linux release 7.6.1810 (Core) 内核版本:3.10.0-957.10.1.el7.x86_64 node1:192.168.216.130 node2 ...

随机推荐

  1. 讲课笔记1——meta标签、表格标签

    图片属性:src(source): 图片的来源(路径),可以放置本地图片,也可以放网上的图片的url地址 [相对路径:        ./:当前目录            ../:跳出当前目录,到上一 ...

  2. BestCoder Round#15 1002-Instruction

    http://acm.hdu.edu.cn/showproblem.php?pid=5083 官方题解——> 1002 Instruction 先考虑编码,首先找到operation对应的编码, ...

  3. python基础面试题整理---从零开始 每天十题(01)

    最近在弄flask的东西,好久没写博客的,感觉少了点什么,感觉被别人落下好多,可能渐渐的养成了写博客的习惯吧.也是自己想学的东西太多了(说白了就是基础太差了,只是know how,不能做到konw w ...

  4. 6.python

    最早的'密码本' ascii 涵盖了英文字母大小写,特殊字符,数字.01010101ascii 只能表示256种可能,太少,创办了万国码 unicode 16表示一个字符不行,32位表示一个字符. A ...

  5. odoo10 fields.Selection 根据权限显示不同的selection内容

    摘要:一般作为下拉选项,selection的选项内容是固定,针对一些特殊要求,根据权限组显示不同的selection内容的,可以参考odoo源码的. 前提:基于 odoo10.0 的源码 参考源码1: ...

  6. 【dp】拔河比赛

    01背包:感谢ZCK大佬 题目描述 学校举行拔河比赛,所有的人被分成了两组,每个人必须(且只能够)在其中的一组,要求两个组的人数相差不能超过1,且两个组内的所有人体重加起来尽可能地接近. 输入 输入中 ...

  7. Tcp 三次握手 四次分手

    看了 余晟以为的 “tcp没那么难吧”,算是对三次握手,四次分手有了一点点理解,记录下来以方便自己以后的查看. 原文链接:https://mp.weixin.qq.com/s?__biz=MzA3MD ...

  8. <题解>洛谷P3385 【模板】负环

    题目链接 判断一张图中是否存在关于顶点1的负环: 可以用SPFA跑一遍,存在负环的情况就是点进队大于n次 因为在存在负环的情况下,SPFA会越跑越小,跑进死循环 在最差的情况下,存在的负环长度是“n+ ...

  9. 项目-开发手机app

    一.  安装Hbuilder,和夜神安卓模拟器 注:夜神模拟器,如过windows中安装了hyper-v,需要卸载,不然会死机 二. Hbuilder简介 官网:http://www.dcloud.i ...

  10. css3小代码

    1.三角 <!doctype html> <html lang="en"> <head> <meta charset="UTF- ...