LVS + Keepalived群集

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

1. Keepalived工具概述

1.1 什么是Keepalived

  • 专为LVS和HA设计的一款健康检查工具支持故障自动切换 (Failover)
  • 支持节点健康状态检查(Health Checking)
官方网站: http://www.keepalived.org/

1.2 工作原理

判断 LVS 负载调度器、节点服务器的可用性
当 master 主机出现故障及时切换到backup 节点保证业务正常,当 master故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点。

1.3 Keepailved实现原理

LVS + Keepalived群集,lvs,智能路由器

  • VRRP(虚拟路由冗余协议) 是针对路由器的一种备份解决方案

  • 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务

  • 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态

  • 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

1.4 Keepalived体系主要模块及其作用

keepalived体系架构中主要有三个模块,分别是corecheckvrrp

  • core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
  • vrrp模块:是来实现VRRP协议的。(调度器之间的健康检查和主备切换)
  • check模块:负责健康检查,常见的方式有端口检查及URL检查。(节点服务器的健康检查)

1.5 keepalived的抢占与非抢占模式

抢占模式即MASTER从故障中恢复后,会将VIP从BACKUP节点中抢占过来。非抢占模式即MASTER恢复后不抢占BACKUP升级为MASTER后的VIP

非抢占式俩节点state必须为bakcup,且必须配置nopreempt。

注意:这样配置后,我们要注意启动服务的顺序,优先启动的获取master权限,与优先级没有关系了。

#Keepalived通过什么判断哪台主机为主服务器,通过什么方式配置浮动IP?

Keepalived首先做初始化先检查state状态,master为主服务器,backup为备服务器。
然后再对比所有服务器的priority,谁的优先级高谁是最终的主服务器。
优先级高的服务器会通过ip命令为自己的电脑配置一个提前定义好的浮动IP地址。

2. 脑裂现象 (拓展)

2.1 什么是脑裂

主服务器和备服务器同时拥有 VIP

2.2 脑裂的产生原因

因为主服务器和备服务器之间的通信链路中断,导致备服务器无法正常收到主服务器发送的VRRP心跳报文

2.3 如何解决脑裂

关闭主服务器或者备服务器其中一个的keepalived服务

2.4 如何预防脑裂

  1. 主服务器与备服务器之间添加双通信链路

  2. 在主服务器上定义运行脚本判断与备服务器通信链路是否中断,如果中断则自行关闭keepalived服务

  3. 利用第三方监控软件检测是否发生脑裂故障,如果发生则通过监控软件关闭主或者备服务器上的keepalived服务

3. LVS+Keepalived 实现高可用负载均衡配置

3.1 前置准备

主keepalived服务器:192.168.67.100
备keepalived服务器:192.168.67.101

web1服务器:192.168.67.102
web2服务器:192.168.67.103 
  
vip:192.168.67.200

客户机:192.168.67.104

3.2 配置负载调度器 (主keepalived服务器:192.168.67.100)

#关闭防火墙
systemctl stop firewalld.service
setenforce 0
 
#安装服务
yum install ipvsadm -y
yum install keepalived -y 

LVS + Keepalived群集,lvs,智能路由器LVS + Keepalived群集,lvs,智能路由器

#修改配置文件keeplived.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak    #备份配置文件

vim keepalived.conf
#编辑配置文件

LVS + Keepalived群集,lvs,智能路由器
LVS + Keepalived群集,lvs,智能路由器
LVS + Keepalived群集,lvs,智能路由器
删掉多余配置

#启动服务、查看虚拟网卡vip
systemctl start keepalived
ip addr show dev ens33	

LVS + Keepalived群集,lvs,智能路由器

#调整proc响应参数,关闭Linux内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
 
#刷新一下
sysctl -p

LVS + Keepalived群集,lvs,智能路由器

#配置负载分配策略,并启动服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
 
#清空ipvsadm,并做策略
ipvsadm -C
ipvsadm -A -t 192.168.67.200:80 -s rr
ipvsadm -a -t 192.168.67.200:80 -r 192.168.67.102:80 -g
ipvsadm -a -t 192.168.67.200:80 -r 192.168.67.103:80 -g
 
#保存设置
ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm

LVS + Keepalived群集,lvs,智能路由器

3.3 配置负载调度器(备keepalived服务器:192.168.67.101)

#与主服务器类似
#关闭防火墙
systemctl stop firewalld.service
setenforce 0
 
#安装服务
yum install ipvsadm -y
yum install keepalived -y 
#修改配置文件keeplived.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak    #备份配置文件

vim keepalived.conf
#编辑配置文件

LVS + Keepalived群集,lvs,智能路由器

LVS + Keepalived群集,lvs,智能路由器

#启动服务、查看虚拟网卡vip
systemctl start keepalived
ip addr show dev ens33	

LVS + Keepalived群集,lvs,智能路由器

#调整proc响应参数,关闭Linux内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
 
#刷新一下
sysctl -p

LVS + Keepalived群集,lvs,智能路由器

#配置负载分配策略,并启动服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
 
#清空ipvsadm,并做策略
ipvsadm -C
ipvsadm -A -t 192.168.67.200:80 -s rr
ipvsadm -a -t 192.168.67.200:80 -r 192.168.67.102:80 -g
ipvsadm -a -t 192.168.67.200:80 -r 192.168.67.103:80 -g
 
#保存设置
ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm

LVS + Keepalived群集,lvs,智能路由器

3.4 配置节点服务器(web1服务器:192.168.67.102)

#关闭防火墙
systemctl stop firewalld
setenforce 0
 
#安装并开启httpd服务
yum -y install httpd
systemctl start httpd

LVS + Keepalived群集,lvs,智能路由器

#配置站点文件
vim /var/www/html/index.html
this is scj web1!

LVS + Keepalived群集,lvs,智能路由器

#配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.67.200
NETMASK=255.255.255.255
 
#重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0

LVS + Keepalived群集,lvs,智能路由器

#设置路由
route add -host 192.168.67.200 dev lo:0
route -n

LVS + Keepalived群集,lvs,智能路由器

#调整 proc 响应参数

#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
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
 
#刷新proc参数
sysctl -p

LVS + Keepalived群集,lvs,智能路由器

3.5 配置节点服务器(web2服务器:192.168.67.103)

#配置与web1类似
#关闭防火墙
systemctl stop firewalld
setenforce 0
 
#安装并开启httpd服务
yum -y install httpd
systemctl start httpd

LVS + Keepalived群集,lvs,智能路由器

#配置站点文件
vim /var/www/html/index.html
this is scj web2!

LVS + Keepalived群集,lvs,智能路由器

#配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.67.200
NETMASK=255.255.255.255
 
#重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0

LVS + Keepalived群集,lvs,智能路由器

#设置路由
route add -host 192.168.67.200 dev lo:0
route -n

LVS + Keepalived群集,lvs,智能路由器

#调整 proc 响应参数

#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
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
 
#刷新proc参数
sysctl -p

LVS + Keepalived群集,lvs,智能路由器

3.6 测试

#前往客户机
curl 192.168.67.200
#访问vip

LVS + Keepalived群集,lvs,智能路由器

#前往主服务器
ip a

LVS + Keepalived群集,lvs,智能路由器

#前往备服务器
ip a

LVS + Keepalived群集,lvs,智能路由器

#前往主服务器
systemctl stop keepalived.service
#断开主服务器

LVS + Keepalived群集,lvs,智能路由器

#前往备服务器
ip a

LVS + Keepalived群集,lvs,智能路由器

4. nginx与keepalived的联动部署实现高可用 (拓展)

4.1 前置准备

192.168.67.102 #主服务器
192.168.67.103 #备服务器

192.168.67.100 #nginx节点服务器1
192.168.67.101 #nginx节点服务器2

192.168.67.104 #客户机

4.2 配置节点服务器1

systemctl stop firewalld
setenforce 0
#关闭防火墙

#yum安装nginx

yum install -y epel-release
#安装epel源

yum install nginx -y
#安装nginx主体软件
echo this is nginx1 > /var/share/nginx/html/index.html
#编辑主页内容

LVS + Keepalived群集,lvs,智能路由器

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.67.200
NETMASK=255.255.255.255
 
#重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0

LVS + Keepalived群集,lvs,智能路由器

#设置路由
route add -host 192.168.67.200 dev lo:0
route -n

LVS + Keepalived群集,lvs,智能路由器

4.2 配置节点服务器1

systemctl stop firewalld
setenforce 0
#关闭防火墙

#yum安装nginx

yum install -y epel-release
#安装epel源

yum install nginx -y
#安装nginx主体软件
echo this is nginx2 > /var/share/nginx/html/index.html
#编辑主页内容

LVS + Keepalived群集,lvs,智能路由器

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.67.200
NETMASK=255.255.255.255
 
#重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0

LVS + Keepalived群集,lvs,智能路由器

#设置路由
route add -host 192.168.67.200 dev lo:0
route -n

LVS + Keepalived群集,lvs,智能路由器

4.4 配置主服务器

systemctl stop firewalld
setenforce 0
#关闭防火墙

#下载依赖环境
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
#创建管理用户
useradd -M -s /sbin/nologin nginx

#编译安装ngnix
cd /opt
tar -xf nginx-1.18.0\ .tar.gz
#解压缩软件包

cd nginx-1.18.0             #进入源码包

#搭建编译环境
./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module

make -j2 && make install 
#编译并安装

#软连接 添加到环境变量中
ln -s /apps/nginx/sbin/nginx /usr/local/sbin/
#添加到systemd系统服务中
vim /lib/systemd/system/nginx.service

[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
ExecStart=/apps/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

systemctl daemon-reload
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx
#开启服务

systemctl status nginx
#查看运行状态

LVS + Keepalived群集,lvs,智能路由器

vi /apps/nginx/conf/nginx.conf
#编辑主配置文件,布置四层代理

stream {
    upstream backend {
      server 192.168.67.100:80; #节点服务器1
      server 192.168.67.101:80; #节点服务器2
}
    server {
      listen 8080;
      proxy_pass backend;
}
}

nginx -t
nginx -s reload
#重新加载

LVS + Keepalived群集,lvs,智能路由器

#测试
curl 192.168.67.102:8080 #x2

LVS + Keepalived群集,lvs,智能路由器

#默认备服务器已经编译安装nginx
scp /apps/nginx/conf/nginx.conf 192.168.67.103:`pwd`
#将配置文件远程拷贝到被备服务器

LVS + Keepalived群集,lvs,智能路由器

#前往备服务器查看是否拷贝成功
nginx -t
nginx -s reload
#重新加载

LVS + Keepalived群集,lvs,智能路由器

#测试是否轮询成功
curl 192.168.67.103:8080 #x2

LVS + Keepalived群集,lvs,智能路由器

#回到主服务器
yum install keepalived -y 
#安装服务
#编写一个判断nginx是否正常启动,如果没有正常启动则立刻关闭keepalived服务,防止主备之间发生脑裂状况的脚本,并给脚本加上执行权限

vi /etc/keepalived/check_nginx.sh
#编辑脚本

#!/bin/bash

if ! killall -0 nginx           #表示如果nginx没有在启动则启用下面的命令
then
  systemctl stop keepalived     #关闭keepalived
fi

LVS + Keepalived群集,lvs,智能路由器

#检测脚本是否有用
systemctl restart nginx keepalived
#开启两个软件

systemctl stop nginx
#关闭nginx

bash check_nginx.sh
#运行脚本

#如果是最小化安装是没有kill命令的,需要安装
yum install -y psmisc

LVS + Keepalived群集,lvs,智能路由器

vi /etc/keepalived/keepalived.conf
#编辑配置文件

LVS + Keepalived群集,lvs,智能路由器

#备服务器默认安装了keepalivsd
scp check_nginx.sh keepalived.conf 192.168.67.103:`pwd`
#将配置文件和脚本文件一起传送给备服务器

LVS + Keepalived群集,lvs,智能路由器

4.5 配置备服务器

systemctl stop firewalld
setemforce 0
#关闭防火墙
vi /etc/keepalived/keepalived.conf
#编辑配置文件

LVS + Keepalived群集,lvs,智能路由器

4.6 测试

#前往主服务器
ip a

LVS + Keepalived群集,lvs,智能路由器

#前往备服务器
ip a

LVS + Keepalived群集,lvs,智能路由器

#现在使主服务器上nginx挂掉
systemctl stop nginx keepalived
#关掉两个服务
或
poweroff
#直接关机

#现在前往备服务器
ip a

LVS + Keepalived群集,lvs,智能路由器文章来源地址https://www.toymoban.com/news/detail-712681.html

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

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

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

相关文章

  • LVS+Keepalived群集

    LVS+Keepalived群集

    专门为LVS 和 HA 设计的一款健康检查工具 专为LVS和HA设计的一款健康检查工具,支持故障自动切换(Failover)以及节点健康状态检查(Health Checking)。判断LVS负载调度器、节点服务器的可用性,当master主机出现故障及时切换到 backup 节点保证业务正常,当 master故障主机恢复后将

    2024年02月09日
    浏览(12)
  • 【集群】LVS+Keepalived群集

    【集群】LVS+Keepalived群集

      在这个高度信息化的 IT 时代,企业的生产系统、业务运营、销售和支持,以及日常管理等环节越来越依赖于计算机信息和服务,对高可用(HA)技术的应用需求不断提高,以便提供持续的、不间断的计算机系统或网络服务。   Keeplived是一款专为LVS和HA设计的健康检查工具

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

    LVS +Keepalived高可用群集

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

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

    LVS+Keepalived 高可用群集

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

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

    LVS +Keepalived 高可用群集部署

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

    2024年02月09日
    浏览(11)
  • 【Web服用应用】LVS+Keepalived群集

    【Web服用应用】LVS+Keepalived群集

    Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。 在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP(VIP),主服务器会发送VRRP通告信息给备份服务器,当备份服

    2024年02月09日
    浏览(8)
  • 【群集】——keepalived+LVS-DR+GFS+zabbix

    【群集】——keepalived+LVS-DR+GFS+zabbix

    目录 🍋拓扑图 🍋案例实施 🍒1、环境配置 🍒1.1、配置IP地址 🍒1.2、GFS添加磁盘 🍈2、Keepalived 🍈2.1、配置主调度器 🍈2.2、配置备份调度器 🍓3、LVS-DR 🍓3.1、负载均衡 🍓3.1.1、关闭icmp重定向 🍓3.1.2、配置负载分配策略 🍓3.2、配置主调度器 🍓3.3、配置备份调度器 🍌

    2024年01月21日
    浏览(12)
  • LVS-DR+keepalived实现高可用负载群集

    LVS-DR+keepalived实现高可用负载群集

    VRRP 通信原理: VRRP就是虚拟路由冗余协议,它的出现就是为了解决静态路由的单点故障。 VRRP是通过一种竞选的一种协议机制,来将路由交给某台VRRP路由。 VRRP用IP多播的方式(多播地址224.0.0.18)来实现高可用的通信,工作时主节点发包,备节点接收包,当备节点接收不到主

    2024年02月12日
    浏览(12)
  • 8月17日上课内容 第三章 LVS+Keepalived群集

    8月17日上课内容 第三章 LVS+Keepalived群集

      keepalived 概述 1.服务功能 故障自动切换 健康检查 节点服务器高可用 HA Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题 在一个LVS服务集群中通常有主服务器 (MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚

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

    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日
    浏览(21)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包