keepalived学习
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学习的更多相关文章
- 高可用工具keepalived学习笔记
keepalived完全遵守VRRP协议包括竞选机制,至于VRRP是什么这里不说了参考http://wenku.baidu.com/link? url=1UbkmHuQlGECgC90P7zF6u2x ...
- Keepalived学习笔记
注LVS(Linux Virtual Server):Linux虚拟服务器,这里通过keepalived作为负载均衡器RS(Real Server):真实服务器VRRP(Virtual Router ...
- LVS+Keepalived高可用部署
一.LVS+Keepalived高可用部署 一.keepalived节点部署 1.安装keepalived yum install keepalived ipvsadm -y mkdir -p /op ...
- Keepalived入门学习
一个执着于技术的公众号 Keepalived简介 Keepalived 是使用C语言编写的路由热备软件,该项目软件起初是专门为LVS负载均衡设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后 ...
- 一脸懵逼学习keepalived(对Nginx进行热备)
1:Keepalived的官方网址:http://www.keepalived.org/ 2:Keepalived:可以实现高可靠: 高可靠的概念: HA(High Available), 高可用性集 ...
- 深入学习keepalived之一 keepalived的启动
1.keepalived的启动过程: 启动健康检查子进程和vrrp子进程.其中_WITH_LVS_,_WITH_VRRP_在configure和configure.in文件中定义. 源码如下: /* ...
- LVS+Keepalived(DR模式)学习笔记
1.简述 在互联网的中型项目中,单服务器往往已经无法满足业务本身的性能要求,这时候就会平行扩展,把负载分摊到数台服务器上(集群).一般实现集群有DNS轮询,LVS,nginx负载均衡. 集群主要目的包 ...
- Linux学习系列之lvs+keepalived
LVS简介 LVS介绍 LVS是Linux Virtual Server的缩写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,属于4层负载均衡 ipvs和ipvsadm的关系 我们使用配置LV ...
- 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 ...
随机推荐
- vue的使用-项目总结
1,这是一个重前端逻辑,轻交互,数据展示的项目,可读性差,2,组件划分的坑,复用过多的坑,复用过多导致要在js手动判断太多东西,不便于可读3,vuex的坑,数据分为后台请求数据的暂存,前端页面逻辑的状 ...
- 【转】IntelliJ 创建main函数快捷
http://blog.csdn.net/tiantiandjava/article/details/42269173 今天偶然发现了IntelliJ中 创建main函数的快捷键,依次还有for循环, ...
- netstat Recv-Q和Send-Q详解
http://blog.csdn.net/sjin_1314/article/details/9853163 通过netstat -anp可以查看机器的当前连接状态: Active Interne ...
- CS193p Lecture 9 - Animation, Autolayout
Animation(动画) Demo Dropit续 Autolayout(自动布局) 三种添加自动布局的方法: 使用蓝色辅助虚线,右键选择建议约束(Reset to Suggested Constr ...
- 随机生成一份试卷,试卷的种类分为单选、多选、判断三种题型。nodejs6.0 mysql
背景:从数据库中,随机生成一份试卷,试卷的种类分为单选.多选.判断三种题型. 首先我需要生成随机数id(在这之前我需要知道数据库中各个题型的题数,这样我才能设置随机数),并依据生成的随机数id,去查找 ...
- SQL 牛刀小试 1 —— 查询操作
#创建数据库create database ST CHARACTER set utf8;#创建用户create user ST identified by '19980510';#授权用户操作该数据库 ...
- (42)zabbix使用IT services 了解服务器SLA整体情况
什么是IT Services 服务器或者某项服务.业务的可用率,不懂技术的上级领导会过问最近服务器可用率如何.所有api的状况怎么样? 通常一些技术人员会说负载怎么样,哪些cpu使用率怎么样,硬盘使用 ...
- Linux-ngnix服务(二)
Nginx介绍 特性: 模块化设计,较好的扩展性 高可靠性 支持热部署:不停机更新配置文件,升级版本,更换日志文件 低内存消耗:10000个keep-alive连接模式下的非活动连接,仅需2.5M内存 ...
- python爬取博客圆首页文章链接+标题
新人一枚,初来乍到,请多关照 来到博客园,不知道写点啥,那就去瞄一瞄大家都在干什么好了. 使用python 爬取博客园首页文章链接和标题. 首先当然是环境了,爬虫在window10系统下,python ...
- Android开发——ThreadLocal功能介绍
个静态的监听器对象,显然是无法接受的. 2. 使用实例 //首先定义一个ThreadLocal对象,选择泛型为Boolean类型 private ThreadLocal<Boolean> ...