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原理图: 二.系统环境 实验拓扑: 系统平台: ...
随机推荐
- Python之路【第二篇】:Python基础
参考链接:老师 BLOG : http://www.cnblogs.com/wupeiqi/articles/4906230.html 入门拾遗 一.作用域 只要变量在内存中就能被调用!但是(函数的栈 ...
- RabbitMQ service is already present - only updating service parameters
如果你安装RabbitMQ不是那么一番顺利..那么你有可能会重装多次.. So..问题来了..重装时你执行 rabbitmq-service install 的时候..有可能就会报这个错了.. ...
- 360chrome,google chrome浏览器使用jquery.ajax加载本地html文件
使用360chrome和google chrome浏览器加载本地html文件时,会报错,提示: XMLHttpRequest cannot load file:///Y:/jswg/code/html ...
- hibernate4中使用Session doWork()方法进行jdbc操作(代码)
Hibernate3.3.2版本中getSession().connection()已被弃用,hibernate4中官方推荐使用Session doWork()方法进行jdbc操作 首先看看Work接 ...
- struts2文件上传提示信息国际化
1.在src的目录下新建文件fileUpload.properties 如图: fileUpload.properties文件内容为(把英文提示自定义为中文提示) struts.messages.er ...
- poj3070 (斐波那契,矩阵快速幂)
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9630 Accepted: 6839 Descrip ...
- Ubuntu 14 安装 “宋体,微软雅黑,WPS Office的symbol、wingdings、wingdings 2、wingdings 3、webding字体,Consolas雅黑混合版编程字体” 等 Windows 7 下的字体
Windows平台下,“宋体”.“微软雅黑”.“Courier New(编程字体)”用的比较多,看的也习惯了.那如何在 Ubuntu下也安装这些字体呢? 操作步骤如下: 第一步:从 Windows 7 ...
- linux之samba与linux权限
当linux的文件夹或文件为用户或root时,则在window上共享出来的samba是不能进行修改的,当samba设置为 [share]path = /home#available = yes#bro ...
- mongodb python image 图像存储读取
最近做一些数据库调研的工作,目标是实现影像更快的入库.出库.查询,并实现并行访问等操作. 将结果总结成一个mongoImg类,也算是小结吧. ''' Created on 2013-8-6 class ...
- SQL Server 跨数据库查询
语句 SELECT * FROM 数据库A.dbo.表A a, 数据库B.dbo.表B b WHERE a.field=b.field "DBO"可以省略 如 SELECT * F ...