部署keepalvied+lVS(dr)高可用集群

ops/2025/2/5 14:22:53/

第一步,环境准备

服务器名称

IP

描述

master

VIP:192.168.244.100

DIP:192.168.244.101

高可用keeplived_master

LVS负载均衡

backup

VIP:192.168.244.100

DIP:192.168.244.102

高可用keeplived_backup

LVS负载均衡

server1

RIP:192.168.244.103

Web服务器

server2

RIP:192.168.244.104

Web服务器

初始化部署,

修改主机名

hostnamectl set-hostname master

hostnamectl set-hostname backup

hostnamectl set-hostname server1  

hostnamectl set-hostname server2

配置域名解析,四台服务器都配置

# cat >> /etc/hosts <<EOF

192.168.244.101 master

192.168.244.102 backup

192.168.244.103 server1

192.168.244.104 server2

EOF

关闭防火墙,关闭selinux,四台服务器都要关闭

systemctl disable firewalld --now

关闭selinux

sed -i '/^SELINUX/s/enforcing/disabled/g' /etc/selinux/config

setenforce 0

安装常用软件

yum -y install ntpdate bash-completion* net-tools wget

配置时间同步

crontab -e

*/1 * * * * /usr/sbin/ntpdate ntp.aliyun.com

第二步,开始安装keepalived,并将/etc/keepalived/keepalived.conf文件进行备份

在master和backup两台服务器上安装

yum -y install keepalived

cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

第三步,开始修改keepalived.conf配置文件 ,在master和backup两台服务器上修改

cat > /etc/keepalived/keepalived.conf << EOF

global_defs {

   router_id LVS_master  #主和从要有单独的route_id

}

vrrp_instance VI_1 {

    state MASTER  #主为MASTER 从为BACKUP

    interface ens33  #指定配机网卡的设备名

    virtual_router_id 51  #指定虚拟路由主从要一致

    priority 100  #指定优先级主优先高 从做先级低

    advert_int 1  #心跳检测时间间隔

    authentication {  #keepalived内通信认证方式

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {  #指定绑定的vip

        192.168.244.100

    }

}

EOF

master上要修改的keeplived.conf配置文件

backup上要修改的keeplived.conf配置文件

第四步,开启keepalived

启动keepalived

master ~]# systemctl start keepalived

backup ~]# systemctl start keepalived

使用ip a指令查看vip是否配置成功

在master主服务器上配置成功

[root@master ~]# ip a

[root@backup ~]# ip a         //从服务器上没有

测试一下vip是否飘移

关闭master服务器上的keepalived,查看backup服务器上是否有vip 也就是192.168.244.100/32的IP地址,有这说明vip漂移到了backup从服务器上,再开启master主服务器上的keepalived,就会漂移到master主服务器上

[root@master ~]# systemctl stop keepalived.service

成功

第五步,安装ipvsadm

master ~]# yum -y install ipvsadm

backup ~]# yum -y install ipvsadm

查看系统是否支持ip_vs模块

第六步,配置 LVS负载均衡,在master和backup两台主从服务器上配置

master ~]# ipvsamd -C

master ~]# ipvsadm -A -t 192.168.10.100:80 -s rr

master ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.103:80 -g

master ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.103:80 -g

master ~]# ipvsadm -Ln

backup ~]# ipvsamd -C

backup ~]# ipvsadm -A -t 192.168.10.100:80 -s rr

backup ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.103:80 -g

backup ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.103:80 -g

backup ~]# ipvsadm -Ln

第七步,在server1和server2上安装web服务器

server1 ~]# yum -y install httpd

server1 ~]echo "server1" > /var/www/html/index.html

server1 ~]# systemctl start httpd

server1 ~]# curl 192.168.10.103

server2 ~]# yum -y install httpd

server2 ~]echo "server02" > /var/www/html/index.html

server2 ~]# systemctl start httpd

server2 ~]# curl 192.168.244.104

第八步,配置server1和server2的虚拟vip

# cat > lvs.sh << EOF

#!/bin/bash

#description : start realserver

VIP=192.168.244.100

case "\$1" in

start)

echo " start LVS of REALServer"

/usr/sbin/ifconfig lo:0 \$VIP broadcast \$VIP netmask 255.255.255.255 up

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

;;

stop)

/usr/sbin/ifconfig lo:0 down

echo "close LVS Directorserver"

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

;;

*)

echo "Usage: \$0 {start|stop}"

exit 1

esac

EOF

在server1和server2上启动脚本,并使用ip a 指令来查看虚拟vip是否配置成功

sh lvs.sh start   //启动脚本

ip a   //查看IP地址

第九步,使用客户端进行测试

随便找一台服务器进行访问虚拟vip

[root@localhost ~]# for((i=1;i<=10;i++));do curl 192.168.244.100;done

成功

开始模拟故障

当master主服务器出现故障,keepalived关闭了

master ~]# systemctl stop keepalived

master ~]# keepalived_lvs_master ~]# ip a

[root@localhost ~]# for((i=1;i<=10;i++));do curl 192.168.244.100;done

还是可以使用

模拟server1宕机

[root@server1 ~]# systemctl stop httpd

在用ipvsadm做为负载均衡时,它没有健康检查功能,不能将宕机的后端realserver从lvs中清除


http://www.ppmy.cn/ops/155893.html

相关文章

LeetCode 0680.验证回文串 II:两侧向中间,不同就试删

【LetMeFly】680.验证回文串 II&#xff1a;两侧向中间&#xff0c;不同就试删 力扣题目链接&#xff1a;https://leetcode.cn/problems/valid-palindrome-ii/ 给你一个字符串 s&#xff0c;最多 可以从中删除一个字符。 请你判断 s 是否能成为回文字符串&#xff1a;如果能…

利用deepseek参与软件测试 基本架构如何 又该在什么环节接入deepseek

利用DeepSeek参与软件测试&#xff0c;可以考虑以下基本架构和接入环节&#xff1a; ### 基本架构 - **数据层** - **测试数据存储**&#xff1a;用于存放各种测试数据&#xff0c;包括正常输入数据、边界值数据、异常数据等&#xff0c;这些数据可以作为DeepSeek的输入&…

理解PLT表和GOT表

1 简介 现代操作系统都是通过库来进行代码复用&#xff0c;降低开发成本提升系统整体效率。而库主要分为两种&#xff0c;一种是静态库&#xff0c;比如windows的.lib文件&#xff0c;macos的.a&#xff0c;linux的.a&#xff0c;另一种是动态库&#xff0c;比如windows的dll文…

MFC开发,给对话框添加垂直滚动条并解决鼠标滚动响应的问题

无论在使用QT或者MFC进行界面开发时&#xff0c;都会出现在一个对话框里面存在好多的选项&#xff0c;导致对话框变得非常长或者非常大&#xff0c;就会显现的不美观&#xff0c;在这种情况下通常是添加一个页面的滚动条来解决这个问题&#xff0c;下面我们就来介绍给MFC的对话…

llama.cpp的C语言API使用

我们知道&#xff0c;一般运行大语言模型都是在Python上运行的&#xff0c;可是Python的性能太差了&#xff0c;不适合用于生产环境&#xff0c;因此可以采用llama.cpp提供的API在C语言上运行大模型。 llama.cpp的下载 Windows下的下载 我们需要下载llama.cpp的两个部分&…

编程AI深度实战:AI编程工具哪个好? Copilot vs Cursor vs Cody vs Supermaven vs Aider

​ 系列文章: 编程AI深度实战:私有模型deep seek r1,必会ollama-CSDN博客 编程AI深度实战:自己的AI,必会LangChain-CSDN博客 编程AI深度实战:给vim装上AI-CSDN博客 编程AI深度实战:火的编程AI,都在用语法树(AST)-CSDN博客 编程AI深度实战:让verilog不再是 AI …

C#,shell32 + 调用控制面板项(.Cpl)实现“新建快捷方式对话框”(全网首发)

Made By 于子轩&#xff0c;2025.2.2 不管是使用System.IO命名空间下的File类来创建快捷方式文件&#xff0c;或是使用Windows Script Host对象创建快捷方式&#xff0c;亦或是使用Shell32对象创建快捷方式&#xff0c;都对用户很不友好&#xff0c;今天小编为大家带来一种全新…

llama.cpp GGUF 模型格式

llama.cpp GGUF 模型格式 1. Specification1.1. GGUF Naming Convention (命名规则)1.1.1. Validating Above Naming Convention 1.2. File Structure 2. Standardized key-value pairs2.1. General2.1.1. Required2.1.2. General metadata2.1.3. Source metadata 2.2. LLM2.2.…