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

news/2024/12/29 6:04:37/

本章结构

Keepalived概述

 

keepalived 概述

1.服务功能

故障自动切换

健康检查

节点服务器高可用 HA

keepalived工作原理


Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题
在一个LVS服务集群中通常有主服务器 (MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟:1主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

VRRP
通信原理
VRRP就是虚拟路由几余协议,它的出现就是为了解决静态路由的单点故障
VRRP 是通过一种竞选一种协议机制来将路由交个某台VRRP路由器
VRRP 用IP多播的方式(多播地址224.0.0.18) 实现高可用之间的通信工作时主节点发包,备节点接包,当备节点接受不到主节点发的数据包的时候,就启动接管主节点的资源,备节点可以有多个,通过优先级来进行竞选,但一般keepalived系统运维工作时对
VRRP使用加密协议加密数据,但keepalived官方目前还是推荐用明文的方式认证类型和密码

先了解VRRP 通信原理 再去了解keepalived 工作原理

keepalived主要模块及其作用

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

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

core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。

vrrp模块: 是来实现VRRP协议的。

check模块:负责健康检查,常见的方式有端口检查及URI检查。

部署keepalived高可用集群

原理图:

主DR 服务器:ens33(192.168.10.14) ipvsadm 、keepalived(热备) 虚拟IP:192.168.10.180  网卡 ens33:0
备DR 服务器:ens33(192.168.10.15) ipvsadm 、keepalived
虚拟IP:192.168.10.180  网卡 ens33:0
Web 服务器1:ens33 192.168.10.16
lo:0(VIP)192.168.10.180
Web 服务器2:ens33 192.168.10.17
lo:0(VIP)192.168.10.180
vip:192.168.10.188         
客户端:192.168.10.100

---------------------LVS 部署-------------------------


1.配置负载调度器(主、备相同)  (192.168.10.14、192.168.10.15)


systemctl stop firewalld.service
setenforce 0

yum -y install ipvsadm keepalived
modprobe ip_vs
cat /proc/net/ip_vs

(1)配置keeplived(主、备DR 服务器上都要设置)
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
......
global_defs {                        #定义全局参数
--10行--修改,邮件服务指向本地
    smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
    router_id LVS_01
--14行--注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接
    #vrrp_strict
}

vrrp_instance VI_1 {                #定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
    state MASTER
--21行--修改,指定承载vip地址的物理接口
    interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致    
    virtual_router_id 10
    #nopreempt        #如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
--23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90
    priority 100
    advert_int 1                    #通告间隔秒数(心跳频率)
    authentication {                #定义认证信息,每个热备组保持一致
        auth_type PASS                #认证类型
--27行--修改,指定验证密码,主备服务器保持一致
        auth_pass abc123
    }
    virtual_ipaddress {                #指定群集vip地址
        192.168.10.180
    }
}

--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.10.188 80 {
    delay_loop 6                    #健康检查的间隔时间(秒)
    lb_algo rr                        #指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,直接路由(DR)
    lb_kind DR
    persistence_timeout 50            #连接保持时间(秒)
    protocol TCP                    #应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口
    real_server 192.168.10.16 80 {
        weight 1                    #节点的权重
--45行--删除,添加以下健康检查方式        
        TCP_CHECK {
            connect_port 80            #添加检查的目标端口
            connect_timeout 3        #添加连接超时(秒)
            nb_get_retry 3            #添加重试次数
            delay_before_retry 3    #添加重试间隔
        }
    }

    real_server 192.168.10.17 80 {        #添加第二个 Web节点的地址、端口
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
##删除后面多余的配置##
}


192.168.10.14和15都需要配置vip(虚拟IP)
vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.10.180
NETMASK=255.255.255.255

重启网卡 systemctl restart network
ifup  ens33:0 


systemctl start keepalived
ip addr                        #查看虚拟网卡vip


(2)启动 ipvsadm 服务
--192.168.10.14---

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -C   ##清空规则
ipvsadm -A -t 192.168.10.188:80 -s rr
ipvsadm -a -t 192.168.10.188:80 -r 192.168.10.16:80 -g
ipvsadm -a -t 192.168.10.188:80 -r 192.168.10.17:80 -g


ipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived

--192.168.10.15---
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -ln

(3)调整 proc 响应参数,关闭Linux 内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

sysctl -p

主:192.168.10.14

 

 

配置虚拟网卡

启动 ipvsadm 服务

备服务器:192.168.10.15

为了区分主备,这里需要把备的优先级改的比主服务器小

配置网卡:

配置ipvsdm

 

调整 proc 响应参数,关闭Linux 内核的重定向参数响应
vim /etc/sysctl.conf

这一步主备的配置一样

查看一下有没有虚拟ip地址

启动keepalived

2.配置节点服务器


systemctl stop firewalld
setenforce 0

yum -y install httpd
systemctl start httpd

--192.168.10.16---
echo 'this is kgc web!' > /var/www/html/index.html

--192.168.10.17---
echo 'this is benet web!' > /var/www/html/index.html

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.10.180
NETMASK=255.255.255.255

service network restart 或 systemctl restart network
ifup lo:0
ifconfig lo:0
route add -host 192.168.10.180 dev lo:0

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

web1: 192.168.10.16

web2:192.168.10.17

 
3.测试验证

在客户端访问 http://192.168.10.180/ 
再在主服务器关闭 keepalived 服务后再测试, systemctl stop keepalived

访问:

 

访问结果如上,证明可以正常轮询,可以访问页面

关闭主,再看一下备那边的情况:

虚拟ip(vip)地址到了web2这边,完成了抢占,代理主的功能

继续访问,发现依旧可以正常访问网页

重启web1,web1进行抢占,重新恢复成主

web2的虚拟ip(vip)地址就没有了 

可以正常访问

注:vip地址只有在哪个服务器做主的时候,vip地址才会跳到哪边

也就是一旦主挂了,备顶上,数据流向就往备走了,备代理主的功能作为主服务器

内容汇总

补充:脑裂问题如何解决(掌握,工作中用得到)

问题点:

1、ping不通 中间链路断掉

2、服务器宕机了 挂掉了

解决方法:

方法1、加中继线路

方法2、用shell脚本判断

方法3、直接重启服务器


http://www.ppmy.cn/news/1050340.html

相关文章

eNSP综合小实验:VRRP、MSTP、Eth-Trunk、NAT、DHCP等技术应用

完成下图要求: 拓扑图: 配置命令: 由于交换机日志太多不便于复制,所以就复制命令。大概步骤如下: 第一步先分配IP地址,在sw1和sw2上创建VLAN100用于e0/0/3口配IP,在sw1、sw2、sw3、sw4上创建VL…

卷积神经网络——上篇【深度学习】【PyTorch】

文章目录 5、卷积神经网络5.1、卷积5.1.1、理论部分5.1.2、代码实现5.1.3、边缘检测 5.2、填充和步幅5.2.1、理论部分5.2.2、代码实现 5.3、多输入多输出通道5.3.1、理论部分5.3.2、代码实现 5.4、池化层 | 汇聚层5.4.1、理论部分5.4.2、代码实现 5、卷积神经网络 5.1、卷积 …

飞天使-kubeadm安装一主一从集群

文章目录 安装前准备安装前准备配置yum源等安装前准备docker安装 安装kubeadm配置kubeadm验证集群 参考链接 安装前准备 cat >> /etc/hosts <<EOF 192.168.100.30 k8s-01 192.168.100.31 k8s-02 EOF hostnamectl set-hostname k8s-01 #所有机器按照要求修改 ho…

三、SQL注入之报错注入

文章目录 1、 xpath语法&#xff08;1&#xff09;extractvalue&#xff08;2&#xff09;updatexml 2、concatrand()group by()导致主键重复 报错注入就是利用了数据库的某些机制&#xff0c;人为地制造错误条件&#xff0c;使得查询结果能够出现在错误信息中。这里主要介绍报…

构建 NodeJS 影院预订微服务并使用 docker 部署(03/4)

一、说明 构建一个微服务的电影网站&#xff0c;需要Docker、NodeJS、MongoDB&#xff0c;这样的案例您见过吗&#xff1f;如果对此有兴趣&#xff0c;您就继续往下看吧。 你好社区&#xff0c;这是&#x1f3f0;“构建 NodeJS 影院微服务”系列的第三篇文章。本系列文章演示了…

JAVACV实现视频流转视频文件和视频截取

MAVEN 依赖 <!-- mac 平台报错 https://gitee.com/52jian/EasyMedia/issues/I5ZMMR--><!-- 媒体只用到以下两个&#xff0c;javacv、ffmpeg --><dependency><groupId>org.bytedeco</groupId><artifactId>javacv</artifactId><ver…

zookeeper详细介绍

ZooKeeper是一个开源的分布式协调服务,具有以下一些关键特点: 数据模型 ZooKeeper的数据模型采用层次化的多叉树形结构,每个节点称为znode,类似于文件系统中的文件和目录。每个znode可以存储数据和控制信息。一致性保证 ZooKeeper通过ZAB协议,实现分布式环境下数据的强一致性,…

SecureCRT 密码破解(JAVA 版)

适用版本: SecureCRT 7.3.3 之后的版本 - Password V2 算法 参考文章: how-does-SecureCRT-encrypt-password内网常用工具密码AES-256-CBC加密Java实现SHA256算法 全部代码: import java.io.UnsupportedEncodingException; import java.security.InvalidAlgorithmParameter…