HAProxy + keepalived 高可用集群代理
HAProxy + keepalived
# 1 安装keepalived:
yum install keepalived -y
# 2 修改KEEPalived配置文件:
vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
57674891@qq.com # 通知接受名单
}
notification_email_from 57674891@qq.com # 那个帐号发送邮件.
smtp_server smtp.qq.com # 邮件服务器SMTP地址
smtp_connect_timeout 30 # 超时时间
#router_id LVS_DEVEL
router_id srv-6.abc.org # 主机名 每个主机都不一样
vrrp_skip_check_adv_addr # 跳过检测报文地址,会消耗大量带宽所以跳过.
vrrp_strict #严格遵守VRRP协议。
vrrp_garp_interval 0 #ARP报文发送延迟
vrrp_gna_interval 0 #消息发送延迟
vrrp_mcast_group4 224.0.0.18 #组播IP地址,224.0.0.0到239.255.255.255
#vrrp_iptables # 不生成iptables 条目
}
vrrp_script chk_ping {
script /etc/keepalived/ping.sh
interval 1
weight -50
fall 3
rise 5
timeout 5
}
vrrp_script chk_haproxy {
script /etc/keepalived/chk_haproxy.sh # 脚本具体位置
interval 1 # 间隔时间,单位为秒,默认1秒
weight -50 # 权重,监测失败后会执行权重+操作
fall 3 # 脚本几次失败转换为失败
rise 5 # 脚本连续监测成果后,把服务器从失败标记为成功的次数
timeout 5 # 超时时间
init_fail # 设置默认标记为失败状态,监测成功之后再转换为成功状态
}
vrrp_instance VI_1 {
state BACKUP # 此服务器状态MASTER | BACKUP
interface eth0 # 绑定在哪个网卡名
virtual_router_id 51 # 虚拟路由ID 凭借此ID来进行广播IP
priority 80 # 优先级 从一定比主小,否则无法切换
advert_int 1 # 心跳探测时长
# nopreempt # 定义工作模式为非抢占模式
unicast_src_ip 192.168.3.2 # 单播模式 减少发包和ARP风暴问题.本端IP
unicast_peer {
192.168.3.3 # 对端IP地址
}
authentication {
auth_type PASS # 验证类型 AUTH
auth_pass linux08 # 验证密码只支持8位
}
virtual_ipaddress {
192.168.3.100 dev eth0 label eth0:0 # VIP地址,绑定在哪个设备接口和名字是什么
}
notify_master "/etc/keepalived/chk.sh master" # 切换主时发的通知
notify_backup "/etc/keepalived/chk.sh backup" # 切换从时发的通知
notify_fault "/etc/keepalived/chk.sh fault" # 切换失败时发的通知
track_script { # 给这个VIP定义一个检测内容.
chk_haproxy # 调用上面定义的脚本名.
}
}
keepalived 发送邮件设置:
1 ) 开启邮箱的POP3 功能:
此处去邮箱官网寻找打开POP功能.
2 ) 安装mailx :
yum install mailx -y
3 ) 编写/etc/mail.rc,使系统mail可以使用第三方邮箱发邮件,这样不会被认为是垃圾邮件
vim /etc/mail.rc
set from=57674891@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=57674891@qq.com
set smtp-auth-password=lhwnubskirykbi # 这个密码,开启使用POP功能里面的连接码.
set smtp-auth=login
set ssl-verify=ignore
keepalived 检测haproxy是否存活脚本(高可用HAProxy):
[root@srv-6 keepalived]# vim chk_haproxy.sh
#!/bin/bash
/usr/bin/killall -0 haproxy
keepalived 状态转换发送邮件的配置:
vim /etc/keepalived/chk.sh
#!/bin/bash
contact='57674891@qq.com'
notify() {
mailsubject="$(hostname) to be $1, vip转移"
mailbody="$(date +'%F %T'): vrrptransition, $(hostname) changed to be $1"
echo "$mailbody" | mail -s "$mailsubject" $contact
}
case $1 in
master)
notify master
;;
backup)
notify backup
;;
fault)
notify fault
;;
*)
echo "Usage: $(basename$0) {master|backup|fault}"
exit 1
;;
esac
Haproxy 不能绑定VIP地址解决办法:
vim /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind = 1
sysctl -p
haproxy 配置 ...略过:
global
maxconn 100000
chroot /data/soft/haproxy
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
uid 1000
gid 1000
daemon
nbproc 2
cpu-map 1 0
cpu-map 2 1
pidfile /var/run/haproxy.pid
log 127.0.0.1 local3 info
defaults
option http-keep-alive
option forwardfor # ip地址透传 针对http 协议有效
maxconn 100000
mode http
timeout connect 300000ms
timeout client 300000ms
timeout server 300000ms
##=======网站80入口=======================
listen server_hosts_group
bind 192.168.3.100:80
mode http
server server1 192.168.3.6:80 weight 1 check inter 3s fall 2 rise 5
server server2 192.168.3.7:80 weight 1 check inter 3s fall 2 rise 5
#=======网站443入口=======================
#listen server_ssl_group
# bind 192.168.3.100:443
# mode tcp
# server server1 192.168.3.6:443 weight 1 check inter 3s fall 2 rise 5
# server server2 192.168.3.7:443 weight 1 check inter 3s fall 2 rise 5
listen stats
mode http
bind 0.0.0.0:9800
stats enable
log global
bind-process 2
stats uri /sta
stats auth admin:q135235
测试最终结果:
检验:
1 )停止master 上的keepalived 或者 haproxy 查看是否正常转移到了BACKUP 上,并进行了邮件通知.
2 ) 开启master 上的keepalived 或者 haproxy 查看VIP是否正常漂移到了master上,并进行了邮件通知.
3 ) 通过curl 和 ping 虚拟VIP的地址来查看在master 和 backup 切换的时候是否有闪断或者异常错误现象.
第一种:(脚本CURL IP地址)
[root@src-8 html]# cat tr.sh
while true;
do
curl -o /dev/null -s -w "%{http_code}\n" 192.168.3.100/index.html
sleep 0.5
done
第二种:(ping VIP)
ping 192.168.3.100
HAProxy + keepalived 高可用集群代理的更多相关文章
- Haproxy+keepalived高可用集群实战
1.1 Haproxy+keepalived高可用集群实战 随着互联网火热的发展,开源负载均衡器的大量的应用,企业主流软件负载均衡如LVS.Haproxy.Nginx等,各方面性能不亚于硬件负载均衡 ...
- rabbitmq+haproxy+keepalived高可用集群环境搭建
1.先安装centos扩展源: # yum -y install epel-release 2.安装erlang运行环境以及rabbitmq # yum install erlang ... # yu ...
- Keepalived高可用集群应用
Keepalived高可用集群应用 1.keepalived服务说明 1.1.keepalived介绍 Keepalived是一个用C语言编写的路由软件.该项目的主要目标是为Linux系统和基于Lin ...
- Nginx+Keepalived高可用集群应用实践
Nginx+Keepalived高可用集群应用实践 1.Keepalived高可用软件 1.1 Keepalived服务的三个重要功能 1.1.1管理LVS负载均衡软件 早期的LVS软件,需要通过命令 ...
- Keepalived高可用集群搭建(转载linuxIDC)
1.Keepalived简介 Keepalived是一个基于VRRP协议来实现的WEB服务高可用方案,可以利用其来避免单点故障.使用多台节点安装keepalived.其 他的节点用来提供真实的服务,同 ...
- 基于Keepalived高可用集群的MariaDB读写分离机制实现
一 MariaDB读写分离机制 在实现读写分离机制之前先理解一下三种主从复制方式:1.异步复制:MariaDB默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库 ...
- Linux 笔记 - 第十八章 Linux 集群之(一)Keepalived 高可用集群
一.前言 Linux 集群从功能上可以分为两大类:高可用集群和负载均衡集群.此处只讲高可用集群,负载均衡放在下一篇博客讲解. 高可用集群(High Availability Cluster,简称 HA ...
- Nginx入门篇(七)之Nginx+keepalived高可用集群
一.keepalived介绍 keepalived软件最开始是转为负载均衡软件LVS而设计,用来管理和监控LVS集群系统中各个服务节点的状态,后来又加入了可实现高可用的VRRP功能.所以Keepali ...
- Linux实战教学笔记31:Keepalived高可用集群应用实践
1.1 Keepalived高可用软件 1.1.1 Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入 ...
随机推荐
- git-服务器搭建-协议概念
现在开发过程中,很多的实现某一些功能的工具,都是类似的服务器-客户端结构,即C-S架构,例如消息队列的KAFKA,文件存储的EasticSearch,包括我们日常工作中的数据库,他都是一种C-S架构, ...
- python(iJmeter-master)接口测试程序部署实践
记录学习性能测试过程遇到的问题 环境 安装环境如下: Windows 10 1803 VMWare Workstation 15 Pro Centos Linux release 7.9.2009(c ...
- 20201214-1 Json与pickle数据序列化
1-1 文件处理时,只能存字符串或者二进制 info = { 'name':'alex', 'age':22 } f = open("test.text", "w&quo ...
- Eclipse设置自动提示
Eclipse设置自动提示可通过以下方式实现, 1.运行Eclipse开发工具,在开发工具最顶端菜单栏,点击"windows"->"preferences" ...
- JavaSE10-继承&super&this&抽象类
1.继承 1.1 概述 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可. 其中,多个类可以称为子类,单独那一个类称为父类.超类(s ...
- Rest vs Soap 比较
一.前言 昨天为止,政府的一个公共部门的项目顺利结束,就系统间消息传输这个点,知识点总结一下.本文主要参考octoperf的文章,链接见文末参考资料. 系统中用到的是SOAP协议进行传输数据,有人会立 ...
- css精髓:这些布局你都学废了吗?
前言 最近忙里偷闲,给自己加油充电的时候,发现自己脑海中布局这块非常的凌乱混杂,于是花了一些时间将一些常用的布局及其实现方法整理梳理了出来,在这里,分享给大家. 单列布局 单列布局是最常用的一种布局, ...
- webpack入门级 - 从0开始搭建单页项目配置
前言 webpack 作为前端最知名的打包工具,能够把散落的模块打包成一个完整的应用,大多数的知名框架 cli 都是基于 webpack 来编写.这些 cli 为使用者预设好各种处理配置,使用多了就会 ...
- Tomcat9没有service.bat
下载个Windows版本的才有service.bat,默认是不带的. 附上tomcat9的下载地址: https://archive.apache.org/dist/tomcat/tomcat-9/v ...
- 多任务-python实现-多线程共享全局变量(2.1.3)
@ 目录 1.全局变量的修改 2.全局变量在多线程中的共享 3.多线程可能遇到的问题 1.全局变量的修改 代码实现 num = 100 nums = [11,22] def test(): globa ...