Keepalived群集

目录

一、Keepalive基础

1.1 vrrp技术

1.2 VRRP相关技术

1.3.VRRP工作过程

1.4.Keeplived、VRRP及其工作原理

1.5.Keepalived体系主要模块及其作用

1.6.配置LVS+Keepalived高可用群集

配置NFS服务器192.168.52.110

192.168.52.120web1服务器

192.168.52.130web2服务器

配置主负载调度器192.168.52.140

配置备负载调度器192.168.52.100


一、Keepalive基础

1.1 vrrp技术

VRRP 相关术语

  • 虚拟路由器:Virtual Router 不是真实存在 ,虚构出来的

  • 虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器

  • VIP:Virtual IP 192.168.91.100 路由1 路由2

  • VMAC:Virutal MAC (00-00-5e-00-01-VRID)

  • 物理路由器:

  • master:主设备

  • backup:备用设备

  • priority:优先级

1.2 VRRP相关技术

通告:心跳,优先级等;周期性

工作方式:抢占式,非抢占式,延迟抢占模式,

安全认证:

  • 无认证

  • 简单字符认证:预共享密钥

  • MD5

工作模式:

  • 主/备:单虚拟路径器

  • 主/主:主/备(虚拟路由器1),备/主(虚拟路由器2)

#通告:
是宣告自己的主权,不要妄想抢班夺权,不停的向外

#抢占式:
主服务器宕机,过了一段时间修好了,再把主权抢过来

#非抢占式:
主服务器宕机,过了一段时间修好了,原来的主就作为备了

#延迟抢占:
主修好后,等待一定的时间(300s)后再次成为主

#抢占式好还是非抢占式好?

#安全认证:
如没有安全认证,不在集群中的keeplive服务器设置超高的优先级,会造成事故

#主/主:主/备(虚拟路由器1),备/主(虚拟路由器2)见下图:
环境:
有两台服务器
虚拟出两台虚拟路由器
第一台虚拟路由器中服务器1为主,服务器2为备,那么虚拟IP1就飘在服务器1上,真正工作的只有服务器1
第二台虚拟路由器中服务器2为主,服务器1为备,那么虚拟IP2就飘在服务器2上,真正工作的只有服务器2
优点:
#提高了资源利用率:
这样主,备服务器同时干活,可以同时运行两个项目
#同样有备份功能:
如果服务器1坏了,服务器2 将同时拥有虚拟IP1和虚拟IP2


缺点:
虽然有备份冗余功能但是对机器的性能要求非常高,当其中一台出现故障,本来一台运行一个任务,现在所有的业务全部压在了一台上,有十分大的风险

1.3.VRRP工作过程

选举Master,比较优先级,高的为Master,若优先级相同无Master时,比较接口IP地址,大的为Master,Master设备发送ARP报文,承担报文转发工作;

状态维持,Master设备周期发送通告报文,公布配置信息和工作状态;

Backup设备根据收到的通告报文判断Master设备是否工作正常,如果Master设备主动放弃Master地位时,会发送优先级为0的通告报文,Backup设备收到后会快速切换成Master设备或者定时器超时后Backup设备认为Master设备无法正常工作,会切换状态为Master。

1.4.Keeplived、VRRP及其工作原理

Keepalived是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。

在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP。主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性

1.5.Keepalived体系主要模块及其作用

keepalived体系架构中主要有三个模块,分别是core、check和vrrp。

core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
vrrp模块:是来实现VRRP协议的。
check模块:负责健康检查,常见的方式有端口检查及URL检查。

1.6.配置LVS+Keepalived高可用群集

主DR调度服务器  192.168.52.140
备DR调度服务器  192.168.52.100
NFS服务器      192.168.52.110
web1服务器     192.168.52.120
web2服务器     192.168.52.130
VIP           192.168.52.188
客户端         192.168.52.102

配置NFS服务器192.168.52.110

#关闭防火墙
systemctl stop firewalld.service 
setenforce 0
#安装nfs服务
yum install nfs-utils rpcbind -y
cd /opt/
#创建共享目录
mkdir nfs
cd nfs/
mkdir my qyd
echo "this is my" >my/index.html
echo "this is qyd" >qyd/index.html
#添加权限
chmod 777 *
#共享策略
vim /etc/exports
-------------------------------------------
/opt/nfs/my 192.168.52.0/24(rw,sync,no_root_squash)
/opt/nfs/qyd 192.168.52.0/24(rw,sync,no_root_squash)
#开启服务发布共享
systemctl start rpcbind
systemctl start nfs
systemctl enable nfs
#查看共享策略
showmount -e

192.168.52.120web1服务器

#关闭防火墙
systemctl stop firewalld.service 
setenforce 0
#查看NFS服务器共享策略
showmount -e 192.168.52.110
#安装apache服务
yum install httpd -y
#挂载共享目录
mount 192.168.52.110:/opt/nfs/my /var/www/html/
df -h
cd /var/www/html/
cat index.html
#重启服务
systemctl restart httpd.service 
输入网址测试
 
#配置网关
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
-------------------------------------------------------------
DEVICE=lo:0
IPADDR=192.168.52.188
NETMASK=255.255.255.255
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
---------------------------------------------------------------------------
#重启网卡
systemctl restart network
ifconfig
#设置路由
route add -host 192.168.52.188 dev lo:0
route -n
#将设置路由命令添加到开机执行配置文件内相当于开机自启并给配置文件添加执行权限
vim /etc/rc.d/rc.local 
-----------------------------------------------
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
/usr/sbin/route add -host 192.168.52.188 dev lo:0
---------------------------------------------------
chmod +x /etc/rc.d/rc.local
#调整 proc 响应参数
#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
-------------------------------------------
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
-----------------------------------------
sysctl -p
#开启web服务
systemctl restart httpd

192.168.52.130web2服务器

#关闭防火墙
systemctl stop firewalld.service 
setenforce 0
#查看NFS服务器共享策略
showmount -e 192.168.52.110
#安装apache服务
yum install httpd -y
#挂载共享目录
mount 192.168.52.110:/opt/nfs/qyd /var/www/html/
df -h
cd /var/www/html/
cat index.html
#重启服务
systemctl restart httpd.service 
输入网址测试
 
#配置网关
#此地址仅用作发送We响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。
#因此使用虚接口lo:0来承载VIP地址,并为本机添加一条路由记录,将访问VIP的数据限制在本地,以避免通信紊乱。
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
-------------------------------------------------------------
DEVICE=lo:0
IPADDR=192.168.52.188
NETMASK=255.255.255.255 #必须全为1
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
---------------------------------------------------------------------------
重启网卡

systemctl restart network
ifconfig
#设置路由
route add -host 192.168.52.188 dev lo:0
route -n
#将设置路由命令添加到开机执行配置文件内相当于开机自启并给配置文件添加执行权限
vim /etc/rc.d/rc.local 
-----------------------------------------------
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
/usr/sbin/route add -host 192.168.52.188 dev lo:0
---------------------------------------------------
chmod +x /etc/rc.d/rc.local
#调整 proc 响应参数
#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
-------------------------------------------
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
-----------------------------------------
sysctl -p
#开启web服务
systemctl restart httpd

配置主负载调度器192.168.52.140

#关闭防火墙
systemctl stop firewalld
setenforce 0
 
#安装keepalived和ipvsadm
yum install -y ipvsadm keepalived
 
#开启ip_vs并查看服务是否开启
modprobe ip_vs
cat /proc/net/ip_vs
#配置keepalived 
rpm -qc keepalived          #查看配置文件位置
cd /etc/keepalived/         #切换到配置文件目录
cp keepalived.conf{,.bak}   #备份原先的配置文件
vim keepalived.conf         #修改配置文件
--------------------------------------------------
global_defs {   ##定义全局参数
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1    #第10行修改,邮件服务指向本地
   smtp_connect_timeout 30
   router_id LVS_01         #第12行指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
                
#删除剩余行
}
 
vrrp_instance VI_1 {     #定义VRRP热备实例参数
    state MASTER         #第20行指定热备状态,主为MASTER,备为BACKUP
    interface ens33      #第21行修改,指定承载vip地址的物理接口
    virtual_router_id 51 #修改,指定虚拟路由器的ID号,每个热备组保持一致
    #nopreempt           #如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
    priority 100         #23行修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90
    advert_int 1         #通告间隔秒数(心跳频率)
    authentication {         #定义认证信息,每个热备组保持一致
        auth_type PASS      #认证类型
        auth_pass 123123    #第27行修改,指定验证密码,主备服务器保持一致
    }
    virtual_ipaddress {      #指定群集vip地址
        192.168.52.188
    }
}
#修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.52.188 80 {
    delay_loop 6                      #健康检查的间隔时间(秒)
    lb_algo rr                        #指定调度算法,轮询(rr)
    lb_kind DR                        #第39行修改,指定群集工作模式,直接路由(DR)
    persistence_timeout 0             #连接保持时间(秒)
    protocol TCP                      #应用服务采用的是 TCP协议
real_server 192.168.52.120 80 {       #43行修改,指定第一个Web节点的地址、端口
weight 1                              #节点的权重
#45行删除,添加以下健康检查方式                       
          TCP_CHECK {
              connect_port 80         #添加检查的目标端口
              connect_timeout 3       #添加连接超时(秒)
              nb_get_retry 3          #添加重试次数
              delay_before_retry 3    #添加重试间隔
          }
      }
 
      real_server 192.168.52.130 80 {     #添加第二个 Web节点的地址、端口
          weight 1
          TCP_CHECK {
              connect_port 80
              connect_timeout 3
              nb_get_retry 3
              delay_before_retry 3
          }
      }
##删除后面多余的配置#
 }
----------------------------------------------------------
systemctl start keepalived.service   #重新启动服务
ip addr      #查看虚拟网卡vip
  
#启动 ipvsadm 服务
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
ipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived
#调整 proc 响应参数,关闭Linux 内核的重定向参数响应
vim /etc/sysctl.conf
--------------------------------------
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
-----------------------------------------
sysctl -p #加载参数
scp keepalived.conf 192.168.52.100:`pwd`  #远程传输文件到备负载调度器

配置备负载调度器192.168.52.100

#关闭防火墙
systemctl stop firewalld
setenforce 0
 
#安装keepalived和ipvsadm
yum install -y ipvsadm keepalived
 
#开启ip_vs并查看服务是否开启
modprobe ip_vs
cat /proc/net/ip_vs
#配置keepalived 
rpm -qc keepalived          #查看配置文件位置
cd /etc/keepalived/         #切换到配置文件目录
cp keepalived.conf{,.bak}   #备份原先的配置文件
vim keepalived.conf         #修改配置文件
--------------------------------------------------
global_defs {   ##定义全局参数
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1    #第10行修改,邮件服务指向本地
   smtp_connect_timeout 30
   router_id LVS_02         #第12行指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
                
#删除剩余行
}
 
vrrp_instance VI_1 {     #定义VRRP热备实例参数
    state BACKUP         #第20行指定热备状态,主为MASTER,备为BACKUP
    interface ens33      #第21行修改,指定承载vip地址的物理接口
    virtual_router_id 51 #修改,指定虚拟路由器的ID号,每个热备组保持一致
    #nopreempt           #如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
    priority 90         #23行修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90
    advert_int 1         #通告间隔秒数(心跳频率)
    authentication {         #定义认证信息,每个热备组保持一致
        auth_type PASS      #认证类型
        auth_pass 123123    #第27行修改,指定验证密码,主备服务器保持一致
    }
    virtual_ipaddress {      #指定群集vip地址
        192.168.52.188
    }
}
#修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.52.188 80 {
    delay_loop 6                      #健康检查的间隔时间(秒)
    lb_algo rr                        #指定调度算法,轮询(rr)
    lb_kind DR                        #第39行修改,指定群集工作模式,直接路由(DR)
    persistence_timeout 0             #连接保持时间(秒)
    protocol TCP                      #应用服务采用的是 TCP协议
real_server 192.168.52.120 80 {       #43行修改,指定第一个Web节点的地址、端口
weight 1                              #节点的权重
#45行删除,添加以下健康检查方式                       
          TCP_CHECK {
              connect_port 80         #添加检查的目标端口
              connect_timeout 3       #添加连接超时(秒)
              nb_get_retry 3          #添加重试次数
              delay_before_retry 3    #添加重试间隔
          }
      }
 
      real_server 192.168.52.130 80 {     #添加第二个 Web节点的地址、端口
          weight 1
          TCP_CHECK {
              connect_port 80
              connect_timeout 3
              nb_get_retry 3
              delay_before_retry 3
          }
      }
##删除后面多余的配置#
 }
----------------------------------------------------------
systemctl start keepalived.service   #重新启动服务
ip addr      #查看虚拟网卡vip
  
#启动 ipvsadm 服务
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
ipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived
#调整 proc 响应参数,关闭Linux 内核的重定向参数响应
vim /etc/sysctl.conf
--------------------------------------
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
-----------------------------------------
sysctl -p #加载参数
scp keepalived.conf 192.168.52.100:`pwd`  #远程传输文件到备负载调度器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/727232.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哇!!!!这个个人博客好好看!!!

做一个个人博客第一步该怎么做? 好多零基础的同学们不知道怎么迈出第一步。 那么,就找一个现成的模板学一学呗,毕竟我们是高贵的Ctrl c v 工程师。 但是这样也有个问题,那就是,那些模板都,太!…

前端算法之归并排序

5、归并排序(Merge Sort) 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有…

C++性能优化 —— TCMalloc的原理与使用

一、TCMalloc简介 1、TCMalloc简介 TCMalloc(Thread-Caching Malloc,线程缓存的malloc)是Google开发的内存分配算法库,最初作为Google性能工具库 perftools 的一部分,提供高效的多线程内存管理实现,用于替代操作系统…

基于AFDPF主动频率偏移法的孤岛检测Simulink仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于AFDPF主动频率偏移法的孤岛检测Simulink仿真。 2.系统仿真结果 3.核心程序与模型 版本:MATLAB2022a 36 4.系统原理简介 在分布式发电系统中,孤…

express基础

express express介绍 官网传送门基于 Node.js 平台,快速、开放、极简的 Web 开发框架express特点 Web 应用 Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。…

指针的深入解读笔记

指针是什么 指针是指向内存单元的编号(地址),可以快速访问地址,加快程序运行速度. 在指针中一般用到两个操作符: * 解引用操作符 也是定义指针时候的操作符 int *p;//定义一个类型为 int 的 指针 *p 0;解引用p指向的地址 并且赋值为0 & 取地址操作符 in…

详讲Spring的面向切片编程(AOP)二

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

3月7日代码随想录组合及优化

77.组合 77. 组合 - 力扣(LeetCode) 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3…

【手游联运平台搭建】游戏平台的作用

随着科技的不断发展,游戏行业也在不断壮大,而游戏平台作为连接玩家与游戏的桥梁,发挥着越来越重要的作用。游戏平台不仅为玩家提供了便捷的游戏体验,还为游戏开发者提供了广阔的市场和推广渠道。本文将从多个方面探讨游戏平台的作…

复习C++

统计每个月兔子的总数 #include<bits/stdc.h> using namespace std; int n,sum0; void f(int); int main() {int a[1000];cin>>n;a[1]1;a[2]2;for(int i3;i<1000;i){a[i]a[i-1]a[i-2];}cout<<a[n];return 0; } void f(int n){} 猴子吃桃子 #include<…

slice()函数的用法

1、slice没有参数&#xff0c;拷贝一个数组&#xff0c;跟原数组无关联 var arr1 [a, b, c]; var arr2 arr1.slice(); console.log(arr2,arr1arr2); 输出&#xff1a;[a, b, c] false 2、slice(start,end)有参数 从start下标开始(包括start)&#xff0c;到end&#xff…

前端算法之选择排序

2、选择排序&#xff08;Selection Sort&#xff09; 选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理&#xff1a;首先在未排序序列中找到最小&#xff08;大&#xff09;元素&#xff0c;存放到排序序列的起始位置&#xff0c;然后&#xff0c;再从剩余未排…

el-table 表格多选, 批量删除功能

一、基础的多选el-table ElementUI 提供了多选行table&#xff0c;同时若依框架也提供了成熟的多选表格。 1.table基础结构 需要绑定selection-change方法 <el-tablev-loading"loading"stripe:data"productList"selection-change"handleSelect…

node的安装与介绍

安装 下载地址 node官网首页就会有两个安装选择&#xff0c;会根据当前电脑的系统自动显示对应的安装包&#xff0c;一个长期维护版&#xff08;LTS&#xff09;,一个是尝鲜版&#xff0c;记住选择LTS版本 安装指定版本下载截图 安装过程截图&#xff08;非常简单&#xff…

计算机设计大赛 深度学习花卉识别 - python 机器视觉 opencv

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &a…

C++ 路径问题

目录 例1 例2 例3 例4 例5 例6 例1 62. 不同路径 1.初始化 2.当前位置的条数&#xff0c;就是上面位置的条数 &#xff0c;加上其左边位置的条数&#xff0c;dp[i][j] dp[i - 1][j] dp[i][j - 1]; 参考代码 class Solution { public:int uniquePaths(int m, int n) …

关于前端的一些

前端侧重于人机交互和用户体验&#xff0c;后端侧重于业务逻辑和大规模数据处理。理论上&#xff0c;面向用户的产品里&#xff0c;所有问题&#xff08;包括产品、设计、后端、甚至看不见的问题&#xff09;的表现形式&#xff0c;都会暴露在前端&#xff0c;而只有部分问题&a…

个推与华为深度合作,成为首批支持兼容HarmonyOS NEXT的服务商

自华为官方宣布HarmonyOS NEXT鸿蒙星河版开放申请以来&#xff0c;越来越多的头部APP宣布启动鸿蒙原生开发&#xff0c;鸿蒙生态也随之进入全新发展的第二阶段。 作为华为鸿蒙生态的重要合作伙伴&#xff0c;个推一直积极参与鸿蒙生态建设。为帮助用户在HarmonyOS NEXT上持续享…

力扣刷题Days11第二题--141. 环形链表(js)

目录 1,题目 2&#xff0c;代码 2.1快慢指针 2.2&#xff0c;哈希表 3&#xff0c;学习与总结 3.1自己尝试写快慢指针 反思 1,题目 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&…

代码随想录day34:动态规划part2

文章目录 day34&#xff1a;动态规划part262.不同路径63.不同路径 II day34&#xff1a;动态规划part2 62.不同路径 class Solution {public int uniquePaths(int m, int n) {// dp[i][j]&#xff1a;到达(i, j)的路径数量int[][] dp new int[m][n];for (int j 0; j < n…