参考网站:

http://wenku.baidu.com/link?url=57AsCAL8TIv8NC3Vdnpd0hQ4fGNls8RFikjRWna3OaZb6qGHYTdV-4_wQPuzv89a5bq3G8pA9i96X4Mrdbvzl5qr_AeGl0tbHJAVASvKxKu

http://ilanni.blog.51cto.com/526870/1687054/

http://johnsz.blog.51cto.com/525379/715922/

https://www.douban.com/note/275230796/

http://www.linuxidc.com/Linux/2012-04/59089.htm

三台虚拟机,Ip地址分别为192.168.178.2(装载Haproxy服务以及httpd服务),

192.168.178.3(安装httpd服务),192.168.178.4(安装httpd服务)

1         Haproxy介绍

1.1         Haproxy原理

haproxy提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。

haproxy特别适用于那些负载特别大的web站点,这些站点通常又需要会话保持或七层处理。haproxy运行在时下的硬件上,完全可以支持数以万计的并发连接,并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

haproxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。

事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space)实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以使每个CPU时间片(Cycle)做更多的工作。

1.2         Haproxy的优点

(1)免费开源,稳定性也是非常好。单haproxy也跑得不错,稳定性可以与硬件级的F5相媲美。

(2)根据官方文档,haproxy可以跑满10Gbps,这个数值作为软件级负载均衡器是相当惊人的。

(3)haproxy支持连接拒绝:因为维护一个连接的打开开销是很低的,有时我们需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。

(4)haproxy支持全透明代理(已具备硬件防火墙的典型特点):可以用客户端IP地址或者任何其他地址来连接后端服务器。这个特性仅在Linux 2.4/2.6内核打了tcp proxy补丁后才可以使用。这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。

(5)haproxy现多于线上的Mysql集群环境,我们常用于它作为MySQL(读)负载均衡。

(6)自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警。

(7)HAProxy支持虚拟主机,许多朋友说它不支持虚拟主机是错误的,通过测试我们知道,HAProxy是支持虚拟主机的。

2         Haproxy安装与配置

2.1         Haproxy安装

获取haproxy-1.4.24.tar.gz源码安装包。

[root@localhost ~]# tar xzvf haproxy-1.4.24.tar.gz

[root@localhost ~]# cd haproxy-1.4.24

[root@localhost ~]# make TARGET=linux26 PREFIX=/usr/local/haproxy //26是linux系统内核

[root@localhost ~]# make install PREFIX=/usr/local/haproxy

2.2         Haproxy配置

安装完毕后,进入安装目录配置文件,默认情况下usr/local/haproxy是没有安装目录的,需要将安装目录/usr/local/src/haproxy-1.4.24/examples/下的haproxy.cfg拷贝到usr/local/haproxy目录下,或者在usr/local/haproxy目录下新建haproxy.cfg进行配置。命令如下:

[root@localhost ~]# cp /usr/src/local/haproxy-1.4.24/examples/haproxy.cfg

/usr/local/haproxy/haproxy.cfg

[root@localhost ~]# vim /usr/local/haproxy/haproxy.cfg

Haproxy的配置文件的含义可参考网站:

http://wenku.baidu.com/link?url=57AsCAL8TIv8NC3Vdnpd0hQ4fGNls8RFikjRWna3OaZb6qGHYTdV-4_wQPuzv89a5bq3G8pA9i96X4Mrdbvzl5qr_AeGl0tbHJAVASvKxKu

具体配置可根据自己的需要来进行配置,本文进行的是简单的配置,所以我的配置文件内容如下:

global

maxconn 256

daemon

defaults

mode http

timeout connect 5000

timeout client  5000

timeout server  5000

frontend http-in

bind *:80

default_backend servers

backend servers

server server1 192.168.1.3 maxconn 32

server server2 192.168.1.4 maxconn 32

2.3         日志支持

根据上面的global和default里的log配置如下:

命令如下:

[root@localhost ~]# vim /etc/rsyslog.conf

在最下边增加

local3.*       /var/log/haproxy.log

local0.*       /var/log/haproxy.log

[root@localhost ~]#vim /etc/sysconfig/rsyslog

修改:SYSLOGD_OPTIONS="-r –m 0"

启日志服务service rsyslog restart

2.4         设置开机启动

创建开机启动脚本,

[root@localhost ~]# vim /etc/rc.d/init.d/haproxy

内容如下:

#!/bin/bash

#

# haproxy

#

# chkconfig: 35 85 15

# description: HAProxy is a free, very fast and reliable solution \

# offering high availability, load balancing, and \

# proxying for TCP and HTTP-based applications

# processname: haproxy

# config: /etc/haproxy.cfg

# pidfile: /var/run/haproxy.pid

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

[ "$NETWORKING" = "no" ] && exit 0

config="/usr/local/haproxy/haproxy.cfg"

exec="/usr/local/haproxy/sbin/haproxy"

prog=$(basename $exec)

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

lockfile=/var/lock/subsys/haproxy

check() {

$exec -c -V -f $config

}

start() {

$exec -c -q -f $config

if [ $? -ne 0 ]; then

echo "Errors in configuration file, check with $prog check."

return 1

fi

echo -n $"Starting $prog: "

# start it up here, usually something like "daemon $exec"

daemon $exec -D -f $config -p /var/run/$prog.pid

retval=$?

echo

[ $retval -eq 0 ] && touch $lockfile

return $retval

}

stop() {

echo -n $"Stopping $prog: "

# stop it here, often "killproc $prog"

killproc $prog

retval=$?

echo

[ $retval -eq 0 ] && rm -f $lockfile

return $retval

}

restart() {

$exec -c -q -f $config

if [ $? -ne 0 ]; then

echo "Errors in configuration file, check with $prog check."

return 1

fi

stop

start

}

reload() {

$exec -c -q -f $config

if [ $? -ne 0 ]; then

echo "Errors in configuration file, check with $prog check."

return 1

fi

echo -n $"Reloading $prog: "

$exec -D -f $config -p /var/run/$prog.pid -sf $(cat /var/run/$prog.pid)

retval=$?

echo

return $retval

}

force_reload() {

restart

}

fdr_status() {

status $prog

}

case "$1" in

start|stop|restart|reload)

$1

;;

force-reload)

force_reload

;;

checkconfig)

check

;;

status)

fdr_status

;;

condrestart|try-restart)

[ ! -f $lockfile ] || restart

;;

*)

echo $"Usage: $0 {start|stop|status|checkconfig|restart|try-restart|reload|force-reload}"

exit 2

esac

保存后赐予可执行权限

[root@localhost ~]# chmod +x /etc/rc.d/init.d/haproxy

就可以使用 service haproxy start|stop|restart 来控制服务的启动停止跟重启。

并通过以下命令加载到开机服务启动列表

[root@localhost ~]# chkconfig –add haproxy

2.5         启动服务

启动服务:

[root@localhost ~]#/usr/local/haproxy/sbin/haproxy –f /usr/local/haproxy/haproxy.cfg

重启服务:

[root@localhost ~]#/usr/local/haproxy/sbin/haproxy –f /usr/local/haproxy/haproxy.cfg –st

`cat /usr/local/haproxy/logs/haproxy.pid`

停止服务:

[root@localhost ~]# killall haproxy

3         测试

虚拟机192.168.178.2命令如下:

[root@localhost ~]# srevice iptables stop

[root@localhost ~]# setenforce 0

[root@localhost ~]# service haproxy start

[root@localhost ~]# service httpd stop

 

虚拟机192.168.178.3命令如下

[root@ xldmysql ~]# srevice iptables stop

[root@ xldmysqlt ~]# setenforce 0

[root@ xldmysqlt ~]# service httpd start

虚拟机192.168.178.4命令如下

[root@xldwhj ~]# srevice iptables stop

[root@ xldwhj ~]# setenforce 0

[root@ xldwhj ~]# service httpd start

打开浏览器,输入192.168.178.2,点击确定出现如下界面:

这是我在192.168.178.3的机器上所写的网页,为了体现与192.168.178.4的不同,出现上述网页后点击F5刷新,出现下述界面;

可以看出每次刷新访问,在192.168.178.3与192.168.178.4之间交替访问,配置成功。

CentOS6.5 下Haproxy服务的安装与配置的更多相关文章

  1. centos6.5下vsftpd服务的安装及配置并通过pam认证实现虚拟用户文件共享

    FTP的全称是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.它工作在OSI模型的第七层,即是应用层,使用TCP传输而不是UDP.这样FTP客户端和服务器建立 ...

  2. CentOS 6.5 下Nginx服务的安装与配置

    参考网站: http://www.cnblogs.com/zhuhongbao/archive/2013/06/04/3118061.html http://www.cnblogs.com/jilia ...

  3. 关于linux - Centos 7 下DHCP服务的安装与配置

    DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP ...

  4. [转] Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置

    from:  http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 如果要在Linux上做j2ee开发,首先得 ...

  5. Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置

    原文:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 如果要在Linux上做j2ee开发,首先得搭建好j ...

  6. CentOS6.4下Mysql数据库的安装与配置

    原文连接:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 说到数据库,我们大多想到的是关系型数据库,比如 ...

  7. Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置(转)

    原文地址:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 如果要在Linux上做j2ee开发,首先得搭建 ...

  8. Linux学习之CentOS(一)--CentOS6.6下Mysql数据库的安装与配置

    在这里我是通过yum来进行mysql数据库的安装的,通过这种方式进行安装,可以将跟mysql相关的一些服务.jar包都给我们安装好,所以省去了很多不必要的麻烦!!! [root@larry ~]# c ...

  9. linux-Centos 7下tftp-server服务的安装与配置

    TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间 进行简单文件传输的协议,提供不复杂.开销不大的文件传输服 ...

随机推荐

  1. 20145326 《Java程序设计》第9周学习总结

    20145326 <Java程序设计>第9周学习总结 教材学习内容总结 第十六章 一.JDBC入门 1.JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数 ...

  2. 设置VS快捷代码片段

    一.自定义sinppets方式 1.在VS安装路径[D:\vs2013\VC\Snippets\2052\Visual C++]下新建一个snippt文件 2.添加代码 <?xml versio ...

  3. [问题解决]win10误删启动项(BCD)(HP电脑亲测,无需启动盘,并非重装系统)

    昨天使用easyBCD软件,开始不太懂,手残把win10的引导删除了,后来发现电脑关机总是变成重启,无奈强制关机.今天重启了一下电脑,发现电脑已经无法打开了,这才明白昨天是误删了win10的BCD. ...

  4. 【bzoj5170】Fable(树状数组)

    题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=5170 我们会发现,经过一轮冒泡后,若a[i]的前面有比它大的数,就一定会有一个被丢到后 ...

  5. [kata]数值内3和5的倍数的总和求解

    这个题是这样的,方法参数接受一个数值,以3,5为基数,返回小于这个参数的3,5的倍数,加上3,5本身总和. 朋友段帅说头疼,估计是天气原因吧,好起来吧,还得战斗呢.

  6. C++函数的返回值——返回引用类型&非引用类型

    函数的返回主要分为以下几种情况: 1.主函数main的返回值: 允许主函数main没有返回值就可结束:可将主函数main返回的值视为状态指示器,返回0表示程序运行成功,其他大部分返回值则表示失败. 2 ...

  7. BZOJ 4012 【HNOI2015】 开店

    题目链接:开店 这道题显然一眼树分治,维护点分的结构,在每个点上,对每种年龄到这个点\(u\)以及他在点分树上父亲的距离和建一棵线段树,查询的时候一路往上跳即可. 但是我太懒了(其实你要说我不会也可以 ...

  8. Github Clone to local files

    cd to you local files address key the word: git clone -0 github https://github.com/xxxxxxxxx Done... ...

  9. python 随机整数

    # Program to generate a random number between and # import the random module import random print(ran ...

  10. Android-----购物车(包含侧滑删除,商品筛选,商品增加和减少,价格计算,店铺分类等)

    电商项目中常常有购物车这个功能,做个很多项目了,都有不同的界面,选了一个来讲一下. 主要包含了 店铺分类,侧滑删除,商品筛选,增加和减少,价格计算等功能. 看看效果图: 重要代码: private v ...