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 高可用集群代理的更多相关文章

  1. Haproxy+keepalived高可用集群实战

    1.1  Haproxy+keepalived高可用集群实战 随着互联网火热的发展,开源负载均衡器的大量的应用,企业主流软件负载均衡如LVS.Haproxy.Nginx等,各方面性能不亚于硬件负载均衡 ...

  2. rabbitmq+haproxy+keepalived高可用集群环境搭建

    1.先安装centos扩展源: # yum -y install epel-release 2.安装erlang运行环境以及rabbitmq # yum install erlang ... # yu ...

  3. Keepalived高可用集群应用

    Keepalived高可用集群应用 1.keepalived服务说明 1.1.keepalived介绍 Keepalived是一个用C语言编写的路由软件.该项目的主要目标是为Linux系统和基于Lin ...

  4. Nginx+Keepalived高可用集群应用实践

    Nginx+Keepalived高可用集群应用实践 1.Keepalived高可用软件 1.1 Keepalived服务的三个重要功能 1.1.1管理LVS负载均衡软件 早期的LVS软件,需要通过命令 ...

  5. Keepalived高可用集群搭建(转载linuxIDC)

    1.Keepalived简介 Keepalived是一个基于VRRP协议来实现的WEB服务高可用方案,可以利用其来避免单点故障.使用多台节点安装keepalived.其 他的节点用来提供真实的服务,同 ...

  6. 基于Keepalived高可用集群的MariaDB读写分离机制实现

    一 MariaDB读写分离机制 在实现读写分离机制之前先理解一下三种主从复制方式:1.异步复制:MariaDB默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库 ...

  7. Linux 笔记 - 第十八章 Linux 集群之(一)Keepalived 高可用集群

    一.前言 Linux 集群从功能上可以分为两大类:高可用集群和负载均衡集群.此处只讲高可用集群,负载均衡放在下一篇博客讲解. 高可用集群(High Availability Cluster,简称 HA ...

  8. Nginx入门篇(七)之Nginx+keepalived高可用集群

    一.keepalived介绍 keepalived软件最开始是转为负载均衡软件LVS而设计,用来管理和监控LVS集群系统中各个服务节点的状态,后来又加入了可实现高可用的VRRP功能.所以Keepali ...

  9. Linux实战教学笔记31:Keepalived高可用集群应用实践

    1.1 Keepalived高可用软件 1.1.1 Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入 ...

随机推荐

  1. 移动端H5微信分享

    移动端H5微信分享功能,可以使项目更好地传播. 微信官方教程文档:  微信JS-SDK说明文档 步骤一:绑定域名 先登录微信公众平台进入"公众号设置"的"功能设置&quo ...

  2. sessionStorage 退出登录删除sessionStorage储存

    1 登录后在sessionStorage中添加token的值,退出后清空 登录后在sessionStorage中添加token的值,退出后清空 localStorage 和 sessionStorag ...

  3. 自动化管理平台rundeck的安装方法

    简介 RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程.通过命令行或者web界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自 ...

  4. Vue必须必须要注意的几个细节

    1.每次执行完,尽量npm run dev 一次,有时候又缓存问题 2.安装sass 一.使用save会在package.json中自动添加.因为sass-loader依赖于node-sass npm ...

  5. Codis集群相关

    在大数据高并发场景下,单个 Redis 实例往往会显得捉襟见肘.首先体现在内存上,单个 Redis 的内存不宜过大,内存太大会导致 rdb 文件过大,进一步导致主从同步时全量同步时间过长,在实例重启恢 ...

  6. CentOS8 部署SqlServer

    官方文档https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-red-hat?view=sql-server-li ...

  7. MySQL忘记密码了怎么解决

    前言:在不考虑到原来用户对关联数据库的授权问题的情况下,有以下三种思路解决 #1.登录状态下修改 说明:在登录状态的话,直接使用命令修改密码就行了 mysql> use mysql; mysql ...

  8. Linq基础知识

    开发人员不需要关心将要访问的是关系数据库还是XML数据,或是远程对象,它都采用同样的访问方式. Linq包含一系列的查询技术,其中Linq到对象是对内存进行操作,LINQ到SQL是对数据库的操作,LI ...

  9. Gitlab+Jenkins构建一个Go项目

    部署Go项目简介 对于golang的发布,之前一直没有一套规范的发布流程,来看看之前发布流程: 方案一 • 开发者本地环境需要将环境变量文件改为正式环境配置 • 编译成可执行文件 • 发送给运维 • ...

  10. Java连接MySQL数据库——含详细步骤和代码

    工具:eclipse.MySQL.MySQL连接驱动:mysql-connector-java-5.1.45.jar 首先要下载Connector/J地址:http://www.mysql.com/d ...