keepalived 主备切换使用企业微信机器人告警

简介
就是简单分享下我的经验,今天的架构是文章图片上这个样子的,两台机器192.168.1.2和192.168.1.3,有一个虚拟ip192.168.1.100,平常是192.168.1.2工作假如keepalived监测到并发太大访问不了nginx的80端口那么会切换到192.168.1.3,而后向微信发送一个信息显示主备已经切换了
正常来说nginx和keepalived是不应该在一台机器上的,由于当主nginx机器宕机了那么主keepalived的也是宕机的状态,主备会自动切换,所以这个架构是有缺点的,但是我们今天的重点在于主备切换来一个微信告警
安装keepalived
这个很简单,我就不多说了
yum install keepalived
之后配置主服务器
vim /etc/keepalived/keepalived.conf
global_defs { router_id nginx-node1}vrrp_script chk_nginx { script "/etc/keepalived/check.sh" interval 5 weight -100}vrrp_instance VI_1 { state MASTER interface ens224 virtual_router_id 51 priority 100 authentication { auth_type PASS auth_pass 123 } virtual_ipaddress { 192.168.1.100 } track_script { chk_nginx } notify_master "/usr/bin/python3 /etc/keepalived/wechat.py master" notify_backup "/usr/bin/python3 /etc/keepalived/wechat.py backup" notify_fault "/usr/bin/python3 /etc/keepalived/wechat.py fault"}解释下配置,全局配置里我只定义了一个router_id定义了机器标识,标识这个是nginx的第一个节点
vrrp_script是用来定义检查nginx状态脚本的我定义了每隔3秒执行以下脚本假如脚本执行失败那么此节点的优先级降100,也就是直接切换
下面是健康检查的脚本
curl 127.0.0.1:80 > /dev/nullvrrp_instance 用来定义这台机器实例,身份状态是master,和网卡ens224绑定,virtual_router_id是51,注意了这个virtual_router_id主备要相同,只有相同了keepalived才会知道这两台机器是一个组,priority 表示这台机器的权重,接着是认证的方式我选择的是密码认证,密码是123,虚拟地址就是我们上面说过的192.168.1.100, track_script 表示使用哪个健康检查的脚本,notify_master 表示切换到master的时候我们要执行的脚本,notify_backup表示切换到backup的时候我们哟啊执行的脚本,notify_fault 表示主备切换失败的时候我们要执行的脚本,上面我都只执行了一个脚本就是wechat.py这个脚本,而后把master,backup和fault这三个参数以变量的形式传入脚本。wecaht.py 这个脚本内容如下
import requestsimport jsonimport syswechat_boot_url = ""def send_wechat(message): headers = {'Content-Type': 'application/json;charset=utf-8'} body = { "msgtype": "text", "text": { "content": message } } requests.post(wechat_boot_url, json.dumps(body), headers=headers)if __name__ == '__main__': message="nginx 负载已切换至 " + sys.argv[1] send_wechat(message)其实就是发送一个post请求到微信机器人中,使用的时候记得替换wechat_boot_url这个地址
配置完成主服务器之后我们配置从服务器,从服务器的配置文件
global_defs { router_id nginx-node2}vrrp_script chk_nginx { script "bash /etc/keepalived/check.sh" interval 5 weight -20}vrrp_instance VI_1 { state BACKUP interface ens224 virtual_router_id 51 priority 80 authentication { auth_type PASS auth_pass 123 } virtual_ipaddress { 192.168.1.100 } track_script { chk_nginx }}备服务器比主服务器配置少了
notify_master "/usr/bin/python3 /etc/keepalived/wechat.py master" notify_backup "/usr/bin/python3 /etc/keepalived/wechat.py backup" notify_fault "/usr/bin/python3 /etc/keepalived/wechat.py fault"假如备服务器也加上了上面这三句那么每一次主备切换在微信中你会收到两条通知,其余的配置上面都讲过了,你看着办就好
安装nginx
这个我不多讲了,直接用docker或者者什么方式安装一个nginx,之后你开关nginx去监测有没有微信机器人的信息就好了
欢迎关注Bboysoul的博客www.bboy.app
Have Fun
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » keepalived 主备切换使用企业微信机器人告警