Keepalived高可用集群、Keepalive+LVS

这篇具有很好参考价值的文章主要介绍了Keepalived高可用集群、Keepalive+LVS。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Keepalived高可用集群

高可用集群简介

什么是高可用集群?

高可用集群 (High Availability;Cluster,简称HA Cluster) ,是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的业务程序对外不间断提供的服务,把因软件、硬件、人为造成的故障对业务的影响降低到最小程度。

自动切换/故障转移(FailOver)

自动切换阶段某一主机如果确认对方故障,则正常主机除继续进行原来的任务还将依据各种容错备援模式接管预先设定的备援作业程序,并进行后续的程序及服务。
通俗地说,即当A无法为客户服务时,系统能够自动地切换,使B能够及时地顶上继续为客户提供服务,且客户感觉不到这个为他提供服务的对象已经更换
通过上面判断节点故障后,将高可用集群资源(如VIP、httpd等)从该不具备法定票数的集群节点转移到故障转移域( Failover Domain,可以接收故障资源转移的节点)。

自动侦测/脑裂

自动侦测阶段由主机上的软件通过冗余侦测线,经由复杂的监听程序,逻辑判断,来相互侦测对方运行的情况。
常用的方法是:集群各节点间通过心跳信息判断节点是否出现故障。
脑裂:在高可用(HA)系统中,当联系2个节点的“心跳线"断开时,本来为一整体、动作协调的HA系统,就分裂成为2个独立的个体。由于相互失去了联系,都以为是对方出了故障。两个节点上的HA软件像“裂脑人"一样,争抢“"共享资源"、争起“应用服务",就会发生严重后果——或者共享资源被瓜分、2边"服务"都起不来了"或者2边"服务"都起来了,但同时读写“共享存储",导致数据损坏(常见如数据库轮询着的联机日志出错)。
脑裂解决方案:1.添加冗余的心跳线 2.启用磁盘锁 3. 设置仲裁机制 4. 脑裂的监控报警

其他高可用方案:heartbeat、pacemaker、piranha(web页面)

Keepalived

keepalived是什么?
keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障.

keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

将N台提供相同功能的服务器组成一个服务器组,这个组里面有一个master和个backup,master上面有一个对外提供服务的vip(该服务器所在局域网内其他机器的默认路由为该vip) ,master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master

keepalived主要有三个模块

分别是core. check和vrrp。
core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。

实战案例1 keepalived + nginx

准备:server1 server2 关闭防火墙 selinux

server1:

yum install -y keepalived
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf-backup  //备份原文件
vim /etc/keepalived/keepalived.conf  //把内容全删了 ggdG 然后配置如下
! Configuration File for keepalived
global_defs {
router_id 1
}

#vrrp_script chk_nginx {
#script "/etc/keepalived/ck_ng.sh"
#interval 2
#weight -5
#fall 3
#}

vrrp_instance VI_1 {
state MASTER
interface ens33
mcast_src_ip 192.168.70.130
virtual_router_id 55
priority 100
advert_int 1

authentication {
auth_type PASS
auth_pass 123456
}

virtual_ipaddress {
192.168.70.140
}

#track_script {
#chk_nginx
#}

}
yum install -y nginx
systemctl enable nginx
systemctl start nginx
vim /var/share/nginx/html/index.html  //自行修改页面 以便区分server2的nginx
curl -i 192.168.70.130
systemctl start keepalived
systemctl enable keepalived

server2:

yum install -y keepalived
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf-backup  //备份原文件
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id 2
}

#vrrp_script chk_nginx {
#script "/etc/keepalived/ck_ng.sh"
#interval 2
#weight -5
#fall 3
#}

vrrp_instance VI_1 {
state BACKUP
interface ens33
mcast_src_ip 192.168.70.132
virtual_router_id 55
priority 99
advert_int 1

authentication {
auth_type PASS
auth_pass 123456
}

virtual_ipaddress {
192.168.70.140
}

#track_script {
#chk_nginx
#}

}
yum install -y nginx
systemctl enable nginx
systemctl start nginx
curl -i localhost
systemctl start keepalived
systemctl enable keepalived

测试:

[root@localhost local]# curl -i 192.168.70.140  //返回的应该是server1 nginx的内容

可以试着把server1断网,vmware设置 取消网络连接 再测试访问 这时候返回的应该是server2 nginx的内容

关于keepalived对nginx状态未知的问题

恢复之前的实验。启动两台主机的keepalived和nginx。确保页面访问正常。关闭master的nginx服务。systemctl stop nginx继续访问VIP,请问页面是否会切换到backup呢?keepalived并不会关心nginx的状态,原因是keepalived监控的是接口ip状态。无法监控nginx服务状态。解决方案:

1、监控脚本

server1 server2 添加nginx监控脚本

vim /etc/keepalived/ck_ng.sh
#!/bin/bash
#检查nginx进程是否存在
counter=`ps -C nginx --no-heading | wc -l`
if [ ${counter} = 0 ] ;then
        systemctl restart nginx
        sleep 5
        counter2=`ps -C nginx --no-heading | wc -l`
        if [ ${counter2} = 0 ] ;then
                systemctl stop keepalived
        fi
fi
chmod +x /etc/keepalived/ck_ng.sh

修改keepalived.conf文件 把上述写的注释都取消 server1 server2 都取消注释 其他内容不变

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id 1
}

vrrp_script chk_nginx {
script "/etc/keepalived/ck_ng.sh"
interval 2
weight -5
fall 3
}

vrrp_instance VI_1 {
state BACKUP
interface ens33
mcast_src_ip 192.168.70.130
virtual_router_id 55
priority 100
advert_int 1

authentication {
auth_type PASS
auth_pass 123456
}

virtual_ipaddress {
192.168.70.140
}

track_script {
chk_nginx
}

}
systemctl restart keepalived

测试:

systemctl stop nginx
systemctl status nginx

如果测试结果并没按预期执行

在vrrp_script chk_nginx{} 中间加debug
tail -f /var/log/messages  //查看日志
如果出现Aug 27 20:59:44 localhost Keepalived_vrrp[51703]: /etc/keepalived/ck_ng.sh exited due to signal 15
说明生命探测advert_int设置时间太短了 增加5秒试试 相应interval必须大于advert_int的时间设置6秒试试,两台server都必须改过来!

实战案例2 keepalived + lvs集群

1.在master上安装配置keepalived ipvsadm

yum install keepalived ipvsadm -y

2.在master上修改配置文件

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
router_id Director 1
}

#Keepalived
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.70.140/24 dev ens33
}
}

#LVS
virtual_server 192.168.70.140 80 {
delay_loop 3  # 将 Keepalived 故障转移时的延迟检测循环次数设置为 5 次
lb_algo rr
lb_kind DR
protocol TCP

real_server 192.168.70.133 80 {
weight 1
TCP_CHECK {
connect_timeout 5
}
}

real_server 192.168.70.134 80 {
weight 1
TCP_CHECK{
connect_timeout 3
}
}

}

3.在backup安装配置keepalived ipvsadm

yum install keepalived ipvsadm -y

4.在backup上修改配置文件

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
router_id Director 2
}

#Keepalived
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.70.140/24 dev ens33
}
}

#LVS
virtual_server 192.168.70.140 80 {
delay_loop 3  # 将 Keepalived 故障转移时的延迟检测循环次数设置为 5 次
lb_algo rr
lb_kind DR
protocol TCP

real_server 192.168.70.133 80 {
weight 1
TCP_CHECK {
connect_timeout 5
}
}

real_server 192.168.70.134 80 {
weight 1
TCP_CHECK{
connect_timeout 3
}
}

}

5.启动两台设备的keepalived

systemctl start keepalived
systemctl enable keepalived

6.两台realserver 安装并启动httpd

yum install -y httpd
systemtl start httpd
systemtl enable httpd

7.新建lo:0文件 回环接口

vim /etc/sysconfig/network-scripts/ifcfg-lo:0  //配置如下

DEVICE=lo:0
IPADDR=192.168.70.140
NETMASK=255.255.255.255
ONBOOT=yes

8.配置路由 让每次开机都配置上回环接口
不管谁访问140 都让回环接口来处理

vim /etc/rc.local  //添加如下

/sbin/route add -host 192.168.70.140 dev lo:0

9.配置 sysctl.conf文件

vim /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

10.将lo:0文件拷贝到另一台realserver

scp /etc/sysconfig/network-scripts/ifcfg-lo:0 192.168.70.134:/etc/sysconfig/network-scripts/ifcfg-lo:0
scp /etc/sysctl.conf 192.168.70.134:/etc/sysctl.conf

10.另一台一样配置rc.local文件

vim /etc/rc.local  //添加

/sbin/route add -host 192.168.70.140 dev lo:0

11.一样配置sysctl.conf文件

vim /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

12.测试

浏览器访问192.168.70.140 再关闭master的网络再试试 还能访问表示我们实验成功了

LVS+Keepalived 常见面试题

1.什么是集群?集群分为哪些类型?列举代表的产品。2.有些负载均衡集群服务?他们有什么区别?
3.LVS-DR和LVS-NAT的工作原理。
4.keepalived的工作原理。
5.高可用集群有哪些产品。他们的区别。
6.负载均衡集群的策略有哪些?能否举例说明?文章来源地址https://www.toymoban.com/news/detail-690551.html

到了这里,关于Keepalived高可用集群、Keepalive+LVS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LVS+KeepAlived高可用负载均衡集群

    高可用集群只需要在调度器上多进行一台或两台(服务器本身的价格比较昂贵,一般备用的服务器的数量会和当前业务创造的价值对等)的设置,就可避免因调度器瘫痪业务中断的风险,所以实现了真正的高可用的效果。 1.普通群集 普通的群集的部署是通过一台度器控制调配

    2024年02月09日
    浏览(69)
  • LVS+Keepalived架构(负载均衡高可用集群)

    普通的群集的部署是通过 一台调度器控制调配多台节点服务器 进行业务请求的处理,但是仅仅是一台调度器,就会存在极大的单点故障风险,当该调度器的链路或则调度器本身出现故障时,就会导致整个业务的无法正常进行  而高可用集群是由 一台主调度器和一台或多台备

    2024年02月12日
    浏览(47)
  • 如何部署LVS + keepalived 负载均衡高可用集群

    一、LVS架构 概念 L4和L7负载均衡的区别 keepalive故障自动切换 抢占与非抢占 二、keepalived管理LVS负载均衡器 LVS集中节点的健康检查 三、部署LVS + keeplived 高可用集群 第一步 关闭防火墙和安全机制          第二步 安装工具 第三步 手动配置模块 第四步 编辑策略配置文件 第五

    2024年02月13日
    浏览(33)
  • 使用keepalived解决lvs的单点故障高可用集群

    功能强大 转发策略比较多 适合大型的网络高可用 使用keepalived解决lvs的单点故障高可用集群 准备6台虚拟机,2台做LVS主备调度器,2台做web服务器,1台做存储,1台客户机验证 LVS主备调度器 master(192.168.1.225)backup(192.168.1.226) web1(192.168.1.221)web2(192.168.1.223) 存储(192.

    2024年02月11日
    浏览(35)
  • nginx-2-讲解与使用 Keepalived+LVS+nginx搭建nginx高可用集群

    1:配置文件优化,达到nginx最大性能。 2:日志文件 /usr/local/nginx/logs/access.log 会一直增大,所有日志都会记录在这。磁盘满了会出现各种问题。定时器脚本清除各种日志。 3:整个访问流程,负载均衡,主从搭建(keepalived)组合 , 单机+(keepalived)组合,邮件发送,静态资源访问

    2024年02月06日
    浏览(35)
  • lvs DR模式+基于五台服务器部署keepalived + lvs DR模式架构(前端带路由)负载均衡的高可用集群

    lvs DR 模式+基于五台服务器部署keepalived + lvs DR模式架构(前端带路由)负载均衡的高可用集群 DR 模式一: 客户端:172.20.26.167 LVS服务器:172.20.26.198 后端服务器:172.20.26.218 后端服务器:172.20.26.210 两台后端服务器 yum install nginx tcpdump -y echo \\\"this is 26.218 page\\\" /usr/share/nginx/html/index

    2024年02月19日
    浏览(42)
  • keepalived+lvs实现高可用

    目录 环境 1.配置real-server服务器 2.配置keepalived和lvs 3.测试: keepalived+lvs实现高可用: lvs可以监控后端服务器,当服务器宕机之后可以对其进行故障切换。 keepalived是对VIP进行检测,当某一个主机的vip错误,则会将vip漂移到另一个节点上。 5台主机---(两台主机--keeplived,lvs 

    2024年02月12日
    浏览(29)
  • LVS+Keepalived 高可用群集

    一.背景   企业应用中,单点服务器承担应用存在单点故障的危险   单点故障一旦发生,企业服务将发生中断,造成极大的危害   为解决单点故障,而引入keepalived 专为LVS和HA设计的一款健康检查工具 支持故障自动切换(Failover) 支持节点健康状态检查(Health Checking) 判断LVS负载

    2024年04月12日
    浏览(29)
  • LVS +Keepalived高可用群集

    Keepalived是一种用于实现高可用性的软件,它主要用于服务器和网络设备的故障转移和负载均衡。Keepalived使用VRRP协议来实现故障转移,并结合健康检查和负载均衡算法来确保服务的高可用性。 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单

    2024年02月13日
    浏览(34)
  • LVS +Keepalived 高可用群集部署

    在这个高度信息化的 IT 时代,企业的生产系统、业务运营、销售和支持,以及日常管理等环节越来越依赖于计算机信息和服务,对高可用(HA)技术的应用需求不断提高,以便提供持续的、不间断的计算机系统或网络服务。 Keepalived是一个基于VRRP协议来实现的LVS服务高可用方

    2024年02月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包