keepalived+haproxy构建高可用负载均衡
一、环境介绍
我用的是centos6.7,内核版本为2.6.32-573.el6.x86_64,keepalived版本为keepalived-1.2.22,haproxy版本为haproxy-1.6.4
# yum install libnl* popt* openssl openssl-devel -y
下载并安装ipvsadm-1.26 、libnfnetlink-1.0.1、 libnfnetlink-devel-1.0.1
html-A IP 192.168.1.41
html-B IP 192.168.1.59
haproxy_master 192.168.1.240 主
haproxy_backup 192.168.1.92 备
VIP(virtual IP) 192.168.1.180

二、在192.168.1.240和192.168.1.92上安装Keepalived
1.下载keepalived http://www.keepalived.org/download.html
2.安装
#tar -zxvf keepalived-1.2.22.tar.gz
#ln -s /usr/src/kernels/2.6.32-573.el6.x86_64/ /usr/src/linux
#cd keepalived-1.2.22
#./configure --prefix=/ --mandir=/usr/local/share/man/ --with-kernel-dir=/usr/src/kernels/2.6.32-573.el6.x86_64/
#make
#make install
#cd /etc/keepalived/
#mv keepalived.conf keepalived.conf.default
3.编写配置文件
#vim keepalived.conf
! Configuration File for keepalived
vrrp_script chk_http_port {
script "/etc/keepalived/check_haproxy.sh"
interval 2
weight 2
global_defs {
#设置邮件报警,可以不设
# notification_email {
# wt@123.com
# }
# notification_email_from wt@123.com
# smtp_server 192.168.1.100 #邮件服务器IP
# smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER #192.168.1.92上改为BACKUP
interface eth0
virtual_router_id 51
priority 150 #192.168.1.92上改为120
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.1.180
}
}
}
4.编写keepalived自启动脚本
#vim /etc/keepalived/check_haproxy.sh
#!/bin/bash
A=`ps -C haproxy --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
sleep 3
if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi
赋予脚本执行权限
#chmod 755 /etc/keepalived/check_haproxy.sh 该脚本可保证haproxy程序意外挂掉时重新启动程序
三、在192.168.1.240和192.168.1.92上安装Haproxy
1.下载Haproxy http://download.csdn.net/detail/a15134566493/9521419
2.安装配置
#tar -zxvf haproxy-1.6.2.tar.gz
#cd haproxy-1.6.2
# make TARGET=linux26 PREFIX=/usr/local/haproxy install
#cd /usr/local/haproxy/
# mkdir conf logs
#cd conf/
# vim haproxy.cfg
######## 全局配置信息 #########
######参数是进程级的,通常和操作系统相关#######
global
log 127.0.0.1 local3 info #日志服务器
maxconn 4096 #最大连接数
uid nobody #用户身份
gid nobody #组身份
daemon #守护进程方式后台运行
nbproc 1 #工作进程数量
####### 默认设置 ###################
#####这些参数是配置 frontend,backend,listen 组的 ###########
defaults
log global
mode http #工作模式 http ,tcp 是 4 层,http是 7 层
maxconn 2048 #最大连接数
retries 3 #3 次连接失败就认为服务器不可用
option redispatch #如果 cookie 写入了 serverId 而客户端不会刷新 cookie,当serverId 对应的服务器挂掉后,强制定向到其他健康的服务器
stats uri /haproxy #使用浏览器访问 http://192.168.1.240/haproxy,可以看到服务器状态
contimeout 5000
clitimeout 50000
srvtimeout 50000
frontend http-in
bind 0.0.0.0:80
mode http
log global
option httplog #日志类别 http 日志格式
option httpclose #打开支持主动关闭功能
#acl php url_reg -i \.php$ #acl <ACL名字> <类型> <大小写> <规则> 有PHP网页就取消注释
acl html url_reg -i \.html$ #use_backend <服务器组> if <ACL名字>
#use_backend php-server if php 有PHP网页就取消注释
use_backend html-server if html
default_backend html-server #默认使用的服务器组
######以下注释的是PHP的配置,没有PHP网页可以不写这个配置#############
#backend php-server
#mode http
#balance roundrobin #负载均衡的方式
#option httpchk GET /index.php #健康检查
cookie SERVERID insert indirect nocache #客户端的 cookie 信息
#server php-A 192.168.1.30:80 weight 1 cookie 1 check inter 2000 rise 2 fall 5
#server php-B 192.168.1.40:80 weight 1 cookie 2 check inter 2000 rise 2 fall 5
#cookie 1 标识 serverid 为 1
#check inter 2000 检测心跳频率
#rise 2 2 次正确认为服务器可用
#fall 5 5 次失败认为服务器不可用
backend html-server
mode http
balance roundrobin
option httpchk GET /index.html
cookie SERVERID insert indirect nocache
server html-A 192.168.1.41:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5
server html-B 192.168.1.59:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5
3.启动HAproxy
# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
4.查看HAproxy状态
由于使用了keepalived虚拟主机,所以可访问192.168.1.180/haproxy查看HAproxy状态
四、搭建网页服务器
1.# yum install httpd -y
2.在/var/www/html/目录下创建index.html,
在192.168.1.41的index.html中写 i am 192.168.1.41
在192.168.1.59的index.html中写 i am 192.168.1.59
3.#service httpd restart
5.在客户端访问 HAproxy 测试
在浏览器访问192.168.1.180即可访问。其显示的网页内容实际上是192.168.1.41或192.168.1.59的网页。
实际效果:

keepalived+haproxy构建高可用负载均衡的更多相关文章
- Keepalived+HAProxy 搭建高可用负载均衡
转载自:https://mp.weixin.qq.com/s/VebiWftaRa26x1aA21Jqww 1. 概述 软件负载均衡技术是指可以为多个后端服务器节点提供前端IP流量分发调度服务的软件技 ...
- Keepalived+HAproxy实现高可用负载均衡
总概: Keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived的作用是检测web服务器的状态, ...
- Keepalived+Haproxy搭建高可用负载均衡
Keepalived 简单的是一个路由的软件用C写的这个项目的主要目标是提供简单而强大的设施的负载均衡和高可用性对Linux系统和基于Linux的基础设施.负载均衡架构依赖于众所周知的和广泛使用的Li ...
- 【线上测试之后的应用】基于MySQL+MHA+Haproxy构建高可用负载均衡数据库集群(详解)
这里我们先介绍一下MHA是什么,其次就是它的应用与测试,同时为了大家呈现了数据备份案例,最后总结了使用情况以及注意事项和解决办法 一.MHA 概述 MHA(Master High Availabili ...
- docker下用keepalived+Haproxy实现高可用负载均衡集群
启动keepalived后宿主机无法ping通用keepalived,报错: [root@localhost ~]# ping 172.18.0.15 PING () bytes of data. F ...
- Haproxy+Keepalived搭建Weblogic高可用负载均衡集群
配置环境说明: KVM虚拟机配置 用途 数量 IP地址 机器名 虚拟IP地址 硬件 内存3G 系统盘20G cpu 4核 Haproxy keepalived 2台 192.168.1.10 192 ...
- LVS+Keepalived搭建MyCAT高可用负载均衡集群
LVS+Keepalived 介绍 LVS LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国 ...
- CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...
- 转载--CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
源地址:http://www.cnblogs.com/mchina/archive/2012/08/27/2644391.html 一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台: ...
随机推荐
- 工具,如何去掉百度编辑器 ueditor 元素路径、字数统计等
去掉如下截图: 在百度编辑器 ueditor 根目录下: ueditor.config.js 文件中 搜索并将参数elementPathEnabled设置成false即可 常用功能开关如下: ,ele ...
- JavaScript parseInt函数
首先还是从很热门的实例parseInt("09")==0说起. parseInt(number,type)这个函数后面如果不跟第2个参数来表示进制的话,默认是10进制. 比如说pa ...
- SpringMVC应用
SpringMVC的核心是DispatcherServlet,这个Servlet充当SpringMVC的前端控制器. SpringMVC是多线程的吗??? 控制器是一个用于处理请求的Spring组件. ...
- Typecho中的gravatar头像无法加载
将var/Typecho/Common.php中的第939行中的http://www.gravatar.com/中的www.给去掉即可! //修改前 $url = $isSecure ? 'https ...
- winScp上传文件时,如何过滤制定文件
在用winScp上传文件时,有些文件不想上传到服务器上.怎么办呢? 比如我希望过滤.svn .git文件和目录怎么操作呢? 第一步:在菜单上选中选项,点击选项. 第二步,点击传输->编辑 第三步 ...
- JS抽奖功能代码
HTML <label for="awardListDom">奖项列表</label><br> <input type="tex ...
- JS keycode 事件响应
<script language="javascript"> function keyevent(){ if(event.keyCode==13) alert(&quo ...
- 通过google chrome操作JavaScript中Console
紧接着有关上一个文章的!function................. 前端开发人员一定会用到你的开发者工具中的Console控制台.通常Console用于调试程序,日志输出,打断点等功能.比如我 ...
- 关于EXCEL学习的那些事
由于在客服中心工作,虽然日常工作基本与数据打交道,但是周围的同事对EXCEL基本不怎么了解,仅会一些基本操作.所以基本日常我会被问到许多EXCEL相关的问题,也针对这个做了一些整理与思考. 之后无意看 ...
- Java并发包源码学习之AQS框架(三)LockSupport和interrupt
接着上一篇文章今天我们来介绍下LockSupport和Java中线程的中断(interrupt). 其实除了LockSupport,Java之初就有Object对象的wait和notify方法可以实现 ...