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原理图: 二.系统环境 实验拓扑: 系统平台: ...
随机推荐
- Linux环境PHP5.5以上连接SqlServer2008【全网最经典无错版】
原文地址:http://blog.csdn.net/21aspnet/article/details/47451253 linux版本:64位CentOS 6.4 Nginx版本:nginx1.8.0 ...
- Redis for .NET 系列之实现分页需求
代码笔记: var tableName = "Table1"; redisClient.AddItemToSortedSet(tableName, ); redisClient.A ...
- 合并两个结构完全相同的DataTable
两个结构一模一样的DataTable如何合并? 例子:使用Winform进行演示,表2的数据为固定的,表1的数据可以动态添加,通过合并按钮合并表1和表2的数据到表3 1.规定公共的DataTable结 ...
- c# 日期函数[string.Format----GetDateTimeFormats]格式 .【转帖备查】
DateTime dt = DateTime.Now;Label1.Text = dt.ToString();//2005-11-5 13:21:25Label2.Text = dt.ToFileTi ...
- JAVA浅析字节流与字符流
[概括] 字节流是通用的,既可以操作图片又可以操作文本,但一般都用于操作图片.字符流是基于字节流的,因为字符流内部融合编码表,所以用来操作文本. 1.在字节输入流中能根据文件的大小来开辟数组空间 Fi ...
- [设计模式] javascript 之 策略模式
策略模式说明 定义: 封装一系列的算法,使得他们之间可以相互替换,本模式使用算法独立于使用它的客户的变化. 说明:策略模式,是一种组织算法的模式,核心不在于算法,而在于组织一系列的算法,并且如何去使用 ...
- R语言 小程序
x<-sample(1:11) x 日期和时间 ###Data and Time### > data_time <- data.frame(data = c("2015-0 ...
- 被拒原因——You have selected the Kids Category for your app, but it does not include the required privacy policy. Please update your app metadata to include a privacy policy URL and ensure that the URL yo
对于一些孩子类的应用,必须加上隐私政策网址(URL),直接截个图吧! 就是你上架的时候,填写应用信息,里面有一个隐私政策网址(URL),望后者不掉坑里了!!!
- git之remote branch controller(远程分支控制)
1.创建本地分支 git branch //查看远程分支 git checkout -b branch_name //创建远程分支 在查看分支git branch 2.将分支提交到远程仓库 此时远程 ...
- 《Lua程序设计 第二版》学习笔记一
Lua简介 Lua是一种简单.可拓展.可移植及高效的脚本语言. 开始 Lua之间不需要分隔符 运行方式: Linux下: lua -i prog dofile("lib1.lua" ...