- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
keepalived用于实现高可用集群 。
它的工作原理就是VRRP(虚拟冗余路由协议) 。
# 通过剧本安装
---
- name: install ipvsadm
hosts: webservers
vars:
pkg: keepalived
roles:
- pkgs
# 或者是不通过剧本安装
yum install -y keepalived
配置keepalived 。
只需修改如下添加注释的内容 。
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id web1 # 修改router_id
vrrp_iptables # 让keepalived自动添加iptables规则
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER # web1是主,state是master,web2是备份,state是BACKUP
interface eth0
virtual_router_id 51
priority 100 # 优先级,web1为主,优先级高。web2是备份,优先级要比web1低
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
重启keepalived 。
[root@web1:192.168.4.110 ~]$systemctl start keepalived.service
[root@web1:192.168.4.110 ~]$systemctl enable keepalived.service
正确的结果应该是 。
web1上有虚拟IP:192.168.4.80 。
web2上没有 。
在web1挂掉后,web2上会出现虚拟IP地址 。
[root@web1:192.168.4.110 ~]$ip a s eth0 | grep 80
inet 192.168.4.80/24 scope global secondary eth0
# web1挂掉后
[root@web2:192.168.4.120 ~]$ip a s eth0 | grep 80
inet 192.168.4.80/24 scope global secondary eth0
[root@ansible:192.168.4.66 ~]$curl http://192.168.4.80
Welcome to web1 on 192.168.4.110
# 将web1挂掉,虚拟IP就会回到web2上
[root@ansible:192.168.4.66 ~]$curl http://192.168.4.80
Welcome to web2 on 192.168.4.120
上面的配置虽然可以实现主备切换功能,但是存在一个bug,上面的配置实现主备切换的前提是web1(MASTER)关机、挂掉后才可以实现的切换 。
如果仅仅是将web1上的web服务关掉,那并不会实现主备之间的切换 。
因此我们需要编写一个监控脚本去实现当web服务停掉后,也可以实现主备切换 。
我们可以让keepalived监视80端口,如果80端口没有了,就切换主备 。
# shell脚本,实现了端口开启返回0,端口不开启返回1
#!/bin/bash
# 检查80端口是否开启
if netstat -tuln | grep -q :80; then
exit 0 # 端口开启,返回0
else
exit 1 # 端口未开启,返回1
fi
# 修改keepalived配置文件,修改如下内容
vrrp_script chk_http_port
{
script "/home/check.sh"
interval 3
weight -20
}
vrrp_instance VI_1
{
...
track_script
{
chk_http_port
}
...
}
keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级.
如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加 。
如果脚本执行结果非0,并且weight配置的值小于0,则优先级相应的减少 。
其他情况,维持原本配置的优先级,即配置文件中priority对应的值.
这里需要注意的是:
1) 优先级不会不断的提高或者降低 。
2) 可以编写多个检测脚本并为每个检测脚本设置不同的weight 。
3) 不管提高优先级还是降低优先级,最终优先级的范围是在[1,254],不会出现优先级小于等于0或者优先级大于等于255的情况 。
在Keepalived集群中,其实并没有严格意义上的主、备节点 。
虽然可以在Keepalived配置文件中设置“state”选项为“MASTER”状态,但是这并不意味着此节点一直就是Master角色.
控制节点角色的是Keepalived配置文件中的“priority”值,但并它并不控制所有节点的角色,另一个能改变节点角色的是在vrrp_script模块中设置的“weight”值,这两个选项对应的都是一个整数值 。
其中“weight”值可以是个负整数,一个节点在集群中的角色就是通过这两个值的大小决定的.
不设置weight 。
在vrrp_script模块中,如果不设置“weight”选项值,那么集群优先级的选择将由Keepalived配置文件中的“priority”值决定,而在需要对集群中优先级进行灵活控制时,可以通过在vrrp_script模块中设置“weight”值来实现 。
设置weight 。
vrrp_script 里的script返回值为0时认为检测成功,其它值都会当成检测失败; 。
- weight 为正时,脚本检测成功时此weight会加到priority上,检测失败时不加;
- 主失败:
- 主 priority < 从 priority + weight 时会切换。
- 主成功:
- 主 priority + weight > 从 priority + weight 时,主依然为主
- weight 为负时,脚本检测成功时此weight不影响priority,检测失败时priority – abs(weight)
- 主失败:
- 主 priority – abs(weight) < 从priority 时会切换主从
- 主成功:
- 主 priority > 从priority 主依然为主
最后此篇关于keepalived的文章就讲到这里了,如果你想了解更多关于keepalived的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
四、Keepalived 【1】、keepalived运行原理 Keepalived检测每个服务器接节点状态 服务器节点异常或出现工作故障,keepalived将故障节点从集群系统中
根据(详细)主题,与使用 Keepalived 相比有什么优势吗? & HAProxy作为 HA 网络服务器 loadbalancer vs 一个纯粹的keepalived解决方案? 最佳答案 Kee
我有两台linux服务器, 每个服务器都有两个 NIC,模式 1 绑定(bind)“bond0”。 我的用户级应用程序 - keepalived 在该绑定(bind)接口(interface)上运行
编译安装 HAProxy 新版 LTS 版本,编译安装 Keepalived 开启HAProxy多线程,线程数与CPU核心数保持一致,并绑定CPU核心 因业务较多避免配
keepalived + nginx 实现高可用 本篇主要介绍一下 keepalived + nginx 来实现 对于nginx的高可用, 还是简单的主备模式 。 1.概述
Keepalived 由于在生产环境使用了mysqlcluster,需要实现高可用负载均衡,这里提供了keepalived+haproxy来实现.  
1.keepalived介绍 keepalived最初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了实现高可用的VRRP功能。keepalived除
我正在尝试为我的服务实现基于 keepalived 的故障转移。请在下面找到我的主节点和备份节点的配置。 主节点: vrrp_script chk_splunkd { script "pido
我有 2 个应用服务器都配置为运行 php cron 作业,但只有 1 个可以随时运行该作业。由于我已经将keepalived用于其他目的,我正在考虑在cron作业中使用一些逻辑来检查节点是否具有虚拟
我正在尝试使用 keepalived 配置两个事件负载均衡器服务器。 它与标准配置略有不同,我们有两台服务器和一个虚拟 IP。 我想要的只是当 loadbalancer_1 出现故障时,loadbal
前言:为了减少三维数据中心可视化管理系统的停工时间,保持其服务的高度可用性。同时部署多套同样的三维可视化系统,让三维数据中心可视化系统同时部署并运行到多个服务器上。同时提供一个虚拟IP,然后外面通过
前言 为解决单点故障,我们需要配置主从热备方案,服务器数量有限,故使用Docker模拟安装配置。 本次配置默认已经安装了Docker。 配置环境:centos7 64位 docker版本:D
本文介绍了nginx+keepalived 高可用主从配置详解,分享给大家,具体如下: 1、系统环境及软件版本 CentOS 6.6 x64 keepalived-1.2.18.tar.gz
nginx是一款非常优秀的反向代理工具,支持请求分发,负载均衡,以及缓存等等非常实用的功能。在请求处理上,nginx采用的是epoll模型,这是一种基于事件监听的模型,因而其具备非常高效的请求处理效
为什么要做高可用 在生产环境中,kubernetes 集群中会多多个 master 节点,每个 master 节点上都会部署 kube-apiserver 服务,实现高可用。但是 client 访问
我有 2 个带有 keepalived 和 haproxy 服务的节点(CentOS7)。 如果我关闭一个节点一切正常。但是如果 haproxy 出现故障,我想对 VIPS 进行故障转移。 这是第一个
我有下一个场景,4 个运行 Red Hat Enterprise Linux 7 的虚拟机: 20.1.67.230 服务器(虚拟 IP)(不是主机) 20.1.67.219 haproxy1(负载均
我有 2 台运行 keepalived 的服务器,IP 配置如下: 服务器 1: eth0 172.31.48.10 服务器 2: eth0 192.168.1.5 eth0:1 172.31.48.
keepalived 有什么办法只有当 2 个接口(interface)宕机时才进入故障/备份状态? 在文档中,我发现如果一个或多个接口(interface)出现故障,track_interface
我一直致力于一个项目,该项目将建立一组高可用性负载平衡器。负载平衡和高可用性软件似乎工作得很好(我正在使用 Crossroads 进行负载平衡,使用 Keepalived 使负载平衡服务器具有高可用性
我是一名优秀的程序员,十分优秀!