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

相关文章

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Java使用Mail构建邮件功能的完整指南

《Java使用Mail构建邮件功能的完整指南》JavaMailAPI是一个功能强大的工具,它可以帮助开发者轻松实现邮件的发送与接收功能,本文将介绍如何使用JavaMail发送和接收邮件,希望对大家有所... 目录1、简述2、主要特点3、发送样例3.1 发送纯文本邮件3.2 发送 html 邮件3.3 发送带

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

使用Java发送邮件到QQ邮箱的完整指南

《使用Java发送邮件到QQ邮箱的完整指南》在现代软件开发中,邮件发送功能是一个常见的需求,无论是用户注册验证、密码重置,还是系统通知,邮件都是一种重要的通信方式,本文将详细介绍如何使用Java编写程... 目录引言1. 准备工作1.1 获取QQ邮箱的SMTP授权码1.2 添加JavaMail依赖2. 实现

Keepalived+Nginx双机配置小结

《Keepalived+Nginx双机配置小结》本文主要介绍了Keepalived+Nginx双机配置小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1.1 软硬件要求1.2 部署前服务器配置调优1.3 Nginx+Keepalived部署1.3

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. 创建