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原理图: 二.系统环境 实验拓扑: 系统平台: ...
随机推荐
- rz和sz上传下载文件工具lrzsz
######################### rz和sz上传下载文件工具lrzsz ####################################################### ...
- Redis-cluster集群【第三篇】:redis主从
Redis主从复制原理: 通过把这个RDB文件或AOF文件传给slave服务器,slave服务器重新加载RDB文件,来实现复制的功能! 复制的话:主服务器可以有多个从服务器!!! 不仅这样从服务器还 ...
- OC-内存管理-基本原理与引用计数器
基本原理 1. 什么是内存管理 移动设备的内存极其有限,每个app所能占用的内存是有限制的 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间.比如回收一些不需要使用 ...
- PhpStorm 快捷键
不容易记住的: Ctrl + Shift + F 查找文本,在项目目录或指定的目录 Ctrl + Shift + R 查找文本并替换,在项目目录或指定的目录 Ctrl + E 打开最近关闭的 ...
- ASP.NET MVC Global.cs - 应用程序事件
一.Application_End Application_End:网站关闭,或重启时,会触发该方法 二.Application_Start 第一个访问网站的用户会触发该方法. 通常会在该 ...
- Ajax异步刷新地址栏
公司项目后台使用现成的UI框架,DevExpress,jqGrid,XXXUI之类的,这些展示数据列表的控件/插件,基本是异步的. 这倒也好,有变化也只是数据那一块变化,不会重新加载整个页面. 但是, ...
- mysql几种性能测试的工具使用
mysql几种性能测试的工具使用 近期由于要比较mysql及其分支mariadb, percona的性能,了解了几个这方面的工具,包括:mysqlslap sysbench tpcc-mysql,做一 ...
- asp.net mvc 4 高级编程学习笔记:第三章 视图(2)
页面布局 asp.net MVC中提供了布局的支持,默认情况下才布局文件保存到 /View/Shared/目录下的_Layout.cshtml,View目录有个_ViewStart.cshtml文件, ...
- CF459E Pashmak and Graph (DP?
Codeforces Round #261 (Div. 2) E - Pashmak and Graph E. Pashmak and Graph time limit per test 1 seco ...
- ScriptManager与UpdatePanel总结
1.From http://www.cnblogs.com/Tim-Seven/archive/2011/02/11/1952409.html Ajax Extensions 2.ScriptMana ...