4.keepalived高可用

2024-06-12 03:52
文章标签 可用 keepalived

本文主要是介绍4.keepalived高可用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

keepalived高可用

  • 一、keepalived高可用介绍
  • 二、keepalived高可用设计
    • 1、两台haproxy负载均衡器配置一致
    • 2、在haproxy上分别安装keepalived
    • 3、配置keepalived实现高可用
    • 4、分别在两个调度器上查看浮动IP
    • 5、测试客户端通过浮动IP可正常访问业务
    • 6、模拟故障,将优先级高的设备停机,测试客户端还可正常访问
    • 7、配置脚本,检测虚拟服务故障,实现浮动IP转移
  • 三、nginx 4层负载 + keepalived高可用
    • 1、后台数据库为双主复制环境
    • 2、安装nginx
    • 3、配置nginx实现后端MySQL数据库的负载
    • 4、客户端测试通过两个nginx分别可正常连接数据库
    • 5、配置keepalived实现nginx高可用
    • 6、测试客户端通过浮动IP可正常连接数据库
    • 7、测试关闭虚拟服务、浮动IP可正常转移

一、keepalived高可用介绍

解决单点故障,提升服务高可用

基于VRRP协议设计

原理:
将多个物理设备放入到一个VRRP组中,通过VRRP组形成浮动IP,通过优先级进行主备选举,优先级高为主,浮动IP会配置到主设备上,同时主设备会发送心跳以通知自己的状态,备设备连续一段时间接收不到心跳,则认为主宕机,会自动接替主的工作

心跳:
默认以组播的方式发送心跳,地址224.0.0.18

影响心跳的因素:
1、防火墙
2、时间不同步
3、网络堵塞,多块网卡分担流量

二、keepalived高可用设计

在这里插入图片描述

1、两台haproxy负载均衡器配置一致

客户端通过DNS解析两台haproxy都可正常访问 业务

2、在haproxy上分别安装keepalived

[root@master_haproxy ~]# yum install -y keepalived
[root@slave_haproxy ~]# yum install -y keepalived

3、配置keepalived实现高可用

规划浮动IP: 192.168.140.100

主:

[root@master_haproxy ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id master_haproxy
}vrrp_instance haproxy {state MASTERinterface ens33virtual_router_id 88priority 100advert_int 1authentication {auth_type PASSauth_pass redhat}virtual_ipaddress {192.168.140.100}
}

备:

[root@slave_haproxy ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id slave_haproxy
}vrrp_instance haproxy {state BACKUPinterface ens33virtual_router_id 88priority 50advert_int 1authentication {auth_type PASSauth_pass redhat}virtual_ipaddress {192.168.140.100}
}

4、分别在两个调度器上查看浮动IP

主:

[root@master_haproxy ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:cc:6b:2f brd ff:ff:ff:ff:ff:ffinet 192.168.140.10/24 brd 192.168.140.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet 192.168.140.100/32 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fecc:6b2f/64 scope link valid_lft forever preferred_lft forever正常情况下,浮动只会出现的优先级高的设备上

备:

[root@slave_haproxy ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:29:e5:43 brd ff:ff:ff:ff:ff:ffinet 192.168.140.11/24 brd 192.168.140.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe29:e543/64 scope link valid_lft forever preferred_lft forever

5、测试客户端通过浮动IP可正常访问业务

C:\Users\admin>ping blog.linux.com正在 Ping blog.linux.com [192.168.140.100] 具有 32 字节的数据:
来自 192.168.140.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.140.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.140.100 的回复: 字节=32 时间=1ms TTL=64

6、模拟故障,将优先级高的设备停机,测试客户端还可正常访问

7、配置脚本,检测虚拟服务故障,实现浮动IP转移

[root@master_haproxy ~]# cat /etc/keepalived/check_haproxy.sh 
#!/bin/bash
#netstat -tunlp | grep haproxy &> /dev/nullif [ $? -ne 0 ]; thenkillall  keepalived
fi[root@master_haproxy ~]# ls -l /etc/keepalived/
total 8
-rwxr-xr-x 1 root root 107 Jun 12 11:04 check_haproxy.sh
-rw-r--r-- 1 root root 469 Jun 12 10:59 keepalived.conf
[root@master_haproxy ~]# cat /etc/keepalived/keepalived.conf 
..........
vrrp_script check_haproxy {      // 定义外部脚本 script "/etc/keepalived/check_haproxy.sh"interval 1
}vrrp_instance haproxy {..............track_script {      // 调用外部脚本 check_haproxy}
}测试:关掉虚拟服务,测试浮动IP的转移 

三、nginx 4层负载 + keepalived高可用

在这里插入图片描述

1、后台数据库为双主复制环境

2、安装nginx

[root@master_haproxy ~]# yum install -y gcc openssl-devel pcre-devel zlib-devel [root@master_haproxy ~]# tar xf nginx-1.20.1.tar.gz 
[root@master_haproxy ~]# cd nginx-1.20.1/
[root@master_haproxy nginx-1.20.1]# ./configure --prefix=/usr/local/nginx --with-stream && make && make install 

3、配置nginx实现后端MySQL数据库的负载

[root@master_haproxy ~]# vim /usr/local/nginx/conf/nginx.conf stream {upstream dbserver {server 192.168.140.13:3306;server 192.168.140.14:3306;}server {listen 3306;proxy_pass dbserver;}
}
[root@master_haproxy ~]# /usr/local/nginx/sbin/nginx 
[root@master_haproxy ~]# netstat -tunlp | grep nginx
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      78726/nginx: master 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      78726/nginx: master 
[root@master_haproxy ~]# 

4、客户端测试通过两个nginx分别可正常连接数据库

5、配置keepalived实现nginx高可用

[root@master_haproxy ~]# cat /etc/keepalived/check_mysql_nginx.sh
#!/bin/bash
#netstat -tunlp | grep nginx &> /dev/nullif [ $? -ne 0 ]; thenkillall keepalived
fi
[root@master_haproxy ~]# 
[root@master_haproxy ~]# chmod a+x /etc/keepalived/check_mysql_nginx.sh

主:

[root@master_haproxy ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalivedglobal_defs {router_id master_MySQL_nginx
}vrrp_script check_mysql_nginx {script "/etc/keepalived/check_mysql_nginx.sh"interval 1
}vrrp_instance mysql_nginx {state MASTERinterface ens33virtual_router_id 88priority 100advert_int 1authentication {auth_type PASSauth_pass redhat}virtual_ipaddress {192.168.140.100}track_script {check_mysql_nginx}
}

从调度:

[root@slave_haproxy ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id slave_MySQL_nginx
}vrrp_script check_mysql_nginx {script "/etc/keepalived/check_mysql_nginx.sh"interval 1
}vrrp_instance mysql_nginx {state BACKUPinterface ens33virtual_router_id 88priority 50advert_int 1authentication {auth_type PASSauth_pass redhat}virtual_ipaddress {192.168.140.100}track_script {check_mysql_nginx}
}

6、测试客户端通过浮动IP可正常连接数据库

在这里插入图片描述

7、测试关闭虚拟服务、浮动IP可正常转移

这篇关于4.keepalived高可用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1053124

相关文章

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-

Sentinel 高可用流量管理框架

Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 Sentinel 具有以下特性: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应

JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

一、什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的。停工时间,就是不能向用户提供服务的时间。高可用,就是系统具有高度可用性,尽量减少停工时间。如何用最简单的方法来搭建一个高效率可用的服务端JAVA呢? 停工的原因一般有: 服务器故障。例如服务器宕机,服务器网络出现问题,机房或者机架出现问题等;访问量急剧上升,导致服务器压力过大导致访问量急剧上升的原因;时间和

VMware8实现高可用(HA)集群

陈科肇 =========== 操作系统:中标麒麟高级操作系统V6 x86-64 实现软件:中标麒麟高可用集群软件 ======================== 1.环境的规划与配置 硬件要求 服务器服务器至少需要 2 台,每台服务器至少需要 2 块网卡以做心跳与连接公网使用存储环境 建议使用一台 SAN/NAS/ISCSI 存储作为数据共享存储空间 软

用Cri-O,Sealos CLI,Kubeadm方式部署K8s高可用集群

3.6 Cri-O方式部署K8s集群 注意:基于Kubernetes基础环境 3.6.1 所有节点安装配置cri-o [root@k8s-all ~]# VERSION=1.28[root@k8s-all ~]# curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensu

Kubernetes高可用集群搭建(kubeadm)

1 Kubernetes高可用集群介绍 前面已经介绍了Kubernetes的集群部署,但是都只是介绍的单master节点的情况,由于单master节点的可靠性不高,不适合实际的生产环境,此处介绍如何实现多master节点的高可用集群的搭建。 2 安装要求 一台或多台机器,操作系统CentOS7.x-x86_64硬件配置:2G或更多ARM,2个CPU或更多CPU,硬盘20G及以上集群中所有机器

# 高可用的并发解决方案nginx+keepalived(一)

高可用的并发解决方案nginx+keepalived(一) 段子手 一、课程计划介绍 1、课程标题 为并发量高的优质网站量身定制高可用的并发解决方案 nginx+keepalived。 2、引导语 在这个互联网飞速发展的时代,人们已经离不开网络,其中网购最为常见。在家网购,上班路上网购,吃饭也购物,下班还网购,2017年双十一天猫支付峰值达到了25.6万笔/秒。热点网站中频繁出现的大量

HBase抗战总结 | 阿里巴巴HBase高可用8年抗战回忆录

前言 2011年毕玄和竹庄两位大神将HBase引入阿里技术体系,2014年接力棒转到东8区第一位HBase commiter天梧手中,多年来与淘宝、旺旺、菜鸟、支付宝、高德、大文娱、阿里妈妈等几乎全BU合作伙伴携手共进,支撑了双十一大屏、支付宝账单、支付宝风控、物流详情等核心业务。2018年双十一,HBase全天处理请求2.4万亿行,单集群吞吐达到千万级别。从一个婴儿成长为青年,阿里HBase

正面超越Spark | 几大特性垫定Flink1.12流计算领域真正大规模生产可用(下)

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多资源 我们书接上文,我们在之前的文章《正面超越Spark | 几大特性垫定Flink1.12流计算领域真正大规模生产可用(上)》详细描述了Flink的生产级别Flink on K8s高可用方案和DataStream API 对批执行模式的支持。 接下来是另外的几个特性增强。 第三个,Flink对SQL操作的全面支持 再很早之前,我在浏览社

mysql-PXC实现高可用

mysql8.0使用PXC实现高可用 1.什么是 PXC PXC 是一套 MySQL 高可用集群解决方案,与传统的基于主从复制模式的集群架构相比 PXC 最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实时同步。而且节点与节点之间,他们相互的关系是对等的。PXC 最关注的是数据的一致性,对待事物的行为时,要么在所有节点上执行,要么都不执行,它的实现机制决定了它对待一致性的行为非常