LVS_Director + KeepAlived + 邮件报警

2024-06-15 09:12

本文主要是介绍LVS_Director + KeepAlived + 邮件报警,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一. 环境准备

二. 对master和backup操作

三. 配置master主机

四. 配置backup主机

六. 验证虚拟IP

七. 配置后端两个web服务器

对web1和web2主机都进行如下操作: 

单独修改web1主机

单独修改web2主机

验证

八. 设置邮件报警


 

一. 环境准备

KeepAlived在该项目中的功能:
1. 管理IPVS的路由表(包括对RealServer做健康检查)
2. 实现调度器的HA
官网地址:Keepalived for Linux

准备四个虚拟机,要在同一网段内且可互相通信,关闭防火墙,SElinux,时间同步和配置好YUM源操作。

虚拟IP为:192.168.226.200

主机名IP系统用途
master192.168.225.138Rocky_linux9.4主虚拟服务器
backup192.168.226.129Rocky_linux9.4备虚拟服务器
web1192.168.226.99Centos7后端web服务器
web2192.168.226.100Centos7后端web服务器
localhost10.35.186.197windows10模拟客户

二. 对master和backup操作

下载ipvsadm和keepalived

yum install -y ipvsadm keepalived

备份两台这两台主机的keepalived.conf文件

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

三. 配置master主机

vi /etc/keepalived/keepalived.conf
#删除原来全部配置内容,加入如下配置内容,其中IP要改成你的对应的服务IP
! Configuration File for keepalivedglobal_defs {router_id lvs-keepalived-master    #辅助改为lvs-backup
}vrrp_script check_run {script /etc/keepalived/keepalived_check_mysql.shinterval 5
}
vrrp_instance VI_1 {state MASTERinterface ens33                #VIP绑定接口virtual_router_id 80         #VRID 同一组集群,主备一致          priority 100            #本节点优先级,辅助改为50advert_int 1            #检查间隔,默认为1sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.226.200/24  # 可以写多个vip}track_script {check_run}
notify_master "/etc/keepalived/sendmail.sh master"notify_backup "/etc/keepalived/sendmail.sh backup"notify_fault "/etc/keepalived/sendmail.sh fault"
}
virtual_server 192.168.226.200 80 {    #LVS配置delay_loop 3lb_algo rr     #LVS调度算法lb_kind DR     #LVS集群模式(路由模式)net_mask 255.255.255.0protocol TCP      #健康检查使用的协议real_server 192.168.226.99 80 {weight 1inhibit_on_failure   #当该节点失败时,把权重设置为0,而不是从IPVS中删除TCP_CHECK {          #健康检查connect_port 80   #检查的端口connect_timeout 3  #连接超时的时间}}real_server 192.168.226.100 80 {weight 1inhibit_on_failureTCP_CHECK {connect_timeout 3connect_port 80}}
}

四. 配置backup主机

vi /etc/keepalived/keepalived.conf
#删除原来全部配置内容,加入如下配置内容,其中IP要改成你的对应的服务IP
! Configuration File for keepalivedglobal_defs {router_id lvs-keepalived-slave
}
vrrp_script check_run {script /etc/keepalived/sendmail.shinterval 5
}vrrp_instance VI_1 {state BACKUPinterface ens33nopreemptvirtual_router_id 80priority 50advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.226.200/24}
}track_script {check_run}notify_master "/etc/keepalived/sendmail.sh master"notify_backup "/etc/keepalived/sendmail.sh backup"notify_fault "/etc/keepalived/sendmail.sh fault"virtual_server 192.168.226.200 80 {delay_loop 3lb_algo rrlb_kind DRnet_mask 255.255.255.0protocol TCPreal_server  192.168.226.99 80 {weight 1inhibit_on_failureTCP_CHECK {connect_port 80connect_timeout 3}}real_server 192.168.226.100 80 {weight 1inhibit_on_failureTCP_CHECK {connect_timeout 3connect_port 80}}
}

六. 验证虚拟IP

 启动mastart主机和backup主机中的keepalived

systemctl enable --now keepalived

查看并验证两台主机都又ipvsadm规则

ipvsadm -Ln

其中,在master主机中查看ip,可以看到虚拟IP已经有了

  

七. 配置后端两个web服务器

对web1和web2主机都进行如下操作: 

下载nginx

yum install -y nginx

添加虚拟IP 

ip addr add dev lo 192.168.226.200/32

添加开机启动时,绑定vip

echo "ip addr add dev lo 192.168.226.200/32" >> /etc/rc.local

web1和web2主机都配置

echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf

重新加载 sysctl 配置

sysctl -p

给 rc.local加执行权限

chmod +x /etc/rc.local

单独修改web1主机
echo web1 > /usr/share/nginx/html/index.html
单独修改web2主机
echo web2 > /usr/share/nginx/html/index.html

 web1主机和web2主机的nginx启动并设置开机自启

systemctl enable --now nginx
验证

在浏览器无痕模式,避免浏览器缓存影响,输入虚拟IP多次刷新可以看到会显示web1和web2的内容。

 当master主机模拟关闭keepalived后,虚拟IP依旧可以访问,虚拟IP已经切换到backup主机上了。

八. 设置邮件报警

对master和backup主机下载邮件

yum install -y s-nail

说明: 在Rocky_linux9.4中,下载邮件是s-nail   而在centos7下载邮件是mailx

master和backup都配置上邮箱,这是rocky系统上的配置,cenos7配置文件在/etc/mailx.rc

vim /etc/s-nail.rc 
#在s-nail.rc文件最后加入如下内容,里面的邮箱相关配置需要修改成你的真实服务邮箱这是用来发送的邮箱
set from=1111111111@qq.com              #邮箱账号
set smtp=smtp.qq.com                   #邮件服务器
set smtp-auth-user=1111111111@qq.com    #邮箱账号
set smtp-auth-password=xxxxxxxx   #邮件授权码
set smtp-auth=login
set ssl-verify=ignore#这是第二种格式,两者都可用,选其一即可,但是记得替换邮箱号码和服务商
set v15-compat
set from=1111111111@qq.com
set mta=smtp://1111111111%40qq.com:授权码@smtp.qq.com smtp-use-starttls
set smtp-auth=login

 master和backup主机都要编写发送邮件脚本,脚本中的邮箱是接收人邮箱,注意修改

vi /etc/keepalived/sendmail.sh
#!/bin/bash
to_email='1111111111@qq.com'
ipaddress=`ip -4 a show dev ens33 | awk '/brd/{print $2}'`
notify() {mailsubject="${ipaddress}to be $1, vip转移"mailbody="$(date +'%F %T'): vrrp 飘移, $(hostname) 切换到 $1"echo "$mailbody" | s-nail -s "$mailsubject" $to_email
}
case $1 in
master)notify master;;
backup)notify backup;;
fault)notify fault;;
*)echo "Usage: $(basename $0) {master|backup|fault}"exit 1;;
esac

同时都要赋予执行权限

chmod 777 /etc/keepalived/sendmail.sh

在keepalived.conf模板里已经定义了调用邮件的脚本。因此这里直接去测试即可。

在master主机中停止keepalived服务,然后会发现虚拟IP跳转到了backup主机上,并且接收者邮箱会收到对应的报警邮件,同时访问虚拟IP网站也是可以正常的,当master启动keepalived服务后,也会收到邮件,并且虚拟IP又回到了master主机上。

​​​​​​​

这篇关于LVS_Director + KeepAlived + 邮件报警的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

Python手搓邮件发送客户端

《Python手搓邮件发送客户端》这篇文章主要为大家详细介绍了如何使用Python手搓邮件发送客户端,支持发送邮件,附件,定时发送以及个性化邮件正文,感兴趣的可以了解下... 目录1. 简介2.主要功能2.1.邮件发送功能2.2.个性签名功能2.3.定时发送功能2. 4.附件管理2.5.配置加载功能2.6.

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

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

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

Django中使用SMTP实现邮件发送功能

《Django中使用SMTP实现邮件发送功能》在Django中使用SMTP发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在Django中配置S... 目录1. 配置 Django 项目以使用 SMTP2. 创建 Django 应用3. 添加应用到项目设置4. 创建

LVS学习入门

1.LVS DR模式负载均衡配置详解(配置篇一) http://www.07net01.com/storage_networking/LVS_DRmoshifuzaijunhengpeizhixiangjie_peizhipianyi__56840_1358680093.html 2.LVS负载均衡DR模式部署 http://www.cnblogs.com/xdpxyxy/

【语音告警】博灵智能语音报警灯JavaScript循环播报场景实例-语音报警灯|声光报警器|网络信号灯

功能说明 本文将以JavaScript代码为实例,讲解如何通过JavaScript代码调用博灵语音通知终端 A4实现声光语音告警。主要博灵语音通知终端如何实现无线循环播报或者周期播报的功能。 本代码实现HTTP接口的声光语音播报,并指定循环次数、播报内容。由于通知终端采用TTS语音合成技术,所以本次案例中无需预先录制音频。 代码实战 为了通过JavaScript调用博灵语音通知终端,实现HT

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

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

zabbix-高级应用(主被动监控、邮件告警、企业微信告警)

文章目录 zabbix-高级应用监控路由器交换机SNMP简单网络管理协议测试案例配置网络设备创建主机创建监控项测试监控项 自动发现什么是自动发现Discovery?配置自动发现1、创建自动发现规则2、创建Action动作(发现主机后自动执行什么动作)3、通过动作,执行添加主机,链接模板到主机等操作4、测试,创建新的虚拟机(符合发现规则) 主被动监控1、概述2、创建被监控主机(主动监控)

钓鱼邮件真相追踪:XDR见招拆招!

钓鱼陷阱,财富“蒸发” 如果一家规模5000人、业务遍布全球的企业之中有一位员工不小心点进了一个钓鱼邮件,会发生什么……?终端失陷?数据泄露?失去客户信任? 最让人破碎的当然是……核心资产泄露,钱没了!! 人有失手,"鱼"有逃命 某大型零售企业财务部门小张收到一封看似来自公司财务部的邮件,由于内容与其实际工作情况相符,小张打开了邮件中的附件,并点击了附件里的下载链接