Haproxy学习笔记-源码安装

原创文章,转载请指明出处并保留原文url地址

haproxy简介

1.1 Haproxy功能介绍

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机, 它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整 合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

下图是HAProxy的架构:

wps_clip_image-4675[4][1]

1.2 Haproxy监控

下图是HAProxy的监控页面截图:

wps_clip_image-15376[3][1]

1.3 Haproxy基本特点

HAProxy相比LVS的使用要简单很多,功能方面也很丰富。当前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器、内部协议通信服务器等),和7层(HTTP)。在4层模式下,HAProxy仅在客户端和服务器之间转发双向流量。7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求 (request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则。

l 免费开源,稳定性也是非常好,这个可通过我做的一些小项目可以看出来,单Haproxy也跑得不错,稳定性可以与LVS相媲美;

l 根据官方文档,HAProxy可以跑满10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom's 10GbE NICs (Myri-10G PCI-Express),这个作为软件级负载均衡,也是比较惊人的;

l HAProxy可以作为MySQL、邮件或其它的非web的负载均衡,我们常用于它作为MySQL(读)负载均衡;

l 自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警,这个也是我非常喜欢它的原因之一;

l HAProxy支持虚拟主机。

2 . linux环境准备

2.1 linux准备

我们采用vmware软件安装linux系统来完成实验。

1. vmware软件到搜索引擎搜索并下载安装, linux软件可以到下面地址下载安装好的linux虚拟机, 然后在vmware中运行。

wps_clip_image-11398[3][1]

Url:http://www.thoughtpolice.co.uk/vmware/#download

http://downloads.sourceforge.net/thoughtpolicevm/centos-5.2-i386-server.zip

2. 解压缩下载后的虚拟机文件到一个硬盘空间比较大的硬盘分区中.

打开解压缩的文件目录

3. 双击文件centos-5.5-x86_64-server.vmx,然后启动vmware虚拟机

wps_clip_image-14196[3][1]

4. 登录系统

如下图, 启动后系统如下界面

wps_clip_image-27502[3][1]

用户点击鼠标左键后, 在登录页面可以输入用户名 :root

然后提示输入密码信息, 用户可以输入原始密码 :"thoughtpolice"(密码是双引号中内容)The root password for this image is "thoughtpolice".

2.2 Linux的操作工具准备

配置SecureCRT软件(自行到百度搜索下载)

SecureCRT是一常见的linux终端软件,我们可以通过这个软件登录我们的虚拟机系统,完成各种操作,他的操作方法比直接在虚拟机上操作方便多了.软件的下载及安装大家自己去搜索及下载.

wps_clip_image-21540[3][1]

安装完成后, 启动软件, 然后点击

图1处 启动快速连接,

图2处 输入ip地址

图3处 输入用户名

2.3 Linux环境更改

1. 通过登录虚拟机, 检查虚拟机的ip地址(一般虚拟机是采用dhcp方式分配的ip地址,因此需要我们检查一下ip地址)

wps_clip_image-17221[3][1]

2. 配置linux的登陆终端

wps_clip_image-5255[3][1]

打开SecureCRT软件, 创建连接, 最后在会话选项中,填写上面信息,重要的是ip地址, 端口, 用户名

最后保存确定, 然后登陆,相关过程省略。

3 安装nginx

1. 添加nginx的yum安装源

vi  /etc/yum.repos.d/nginx.repo

填入如下数据:

[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/centos/5/$basearch/

gpgcheck=0

enabled=1

保存退出

2. 安装 nginx

yum install nginx

3. 配置nginx

cd /

mkdir wwwroot

chown -R sch:sch /wwwroot/

cd /wwwroot/

vi a.txt

输入如下内容:hello this is a.txt

保存退出vi

4. Nginx配置文件

cd /etc/nginx/

cd conf.d/

vi default.conf

删除原来的数据, 替换为下面配置

server {

listen       8080;

server_name  test.com;

location / {

root   /wwwroot/test;

index  index.html index.htm;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   /usr/share/nginx/html;

}

}

保存退出

5. 启动nginx

[root@bogon conf.d]# nginx       //启动nginx。

或者通过nginx -s  reload 从新启动nginx,是配置文件生效

6. 修改本机hosts文件,如下图

wps_clip_image-13698[3][1]

7. 测试nginx配置

wps_clip_image-568[3][1]

打开浏览器, 输入: http://test.com:8080/a.txt 后输出结果如上图, 说明nginx已经配置完成。

8. 关闭虚拟机防火墙

注意:虚拟机中有可能个防火墙等还打开, 需要关闭, 或者无法连接。

关闭虚拟机的防火墙,如下:

[sch@bogon ~]$ su -            // 切换到root

Password:                    // 输入root账号密码

[root@bogon ~]# setup         // 启动配置界面

wps_clip_image-847[3][1]

如上图, 移动光标键, 选择 防火墙选项(图中黑色的部分),然后 按动tab键, 移动当前焦点到 “run  tool”按钮, 回车

wps_clip_image-10192[3][1]

进入上图界面后, 选中绿色区域的设置, 然后移动tab键, 选中ok后,屏蔽了防火墙, 这么设置后,nginx应该可以被访问了。

4 安装haproxy

1. 运行yum命令, 为虚拟机安装编译haproxy的必要工具

yum -y groupinstall "Development Tools"    // 安装gcc等linux开发工具

2. 下载haproxy程序,并编译

# wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz         // 下载程序
# tar xzvf haproxy-1.3.20.tar.gz                                       // 解压缩
# cd haproxy-1.3.20                                            // 进入源码目录
# make TARGET=linux26 PREFIX=/usr/local/haprpxy                   // 编译
# make install PREFIX=/usr/local/haproxy                             // 安装

3. 配置haproxy

[root@bogon ~]# cd /usr/local/haproxy/

[root@bogon haproxy]# mkdir conf

[root@bogon conf]# pwd

/usr/local/haproxy/conf

[root@bogon conf]# vi haproxy.conf

输入如下配置:

global

log 127.0.0.1   local0

maxconn 4096

chroot /usr/local/haproxy

uid 501

gid 501

daemon

nbproc 1

pidfile /usr/local/haproxy/logs/haproxy.pid

defaults

log     127.0.0.1       local3

mode    http

option httplog

option httpclose

option dontlognull

option forwardfor

option redispatch

retries 2

maxconn 2000

balance roundrobin

stats   uri     /haproxy-stats

contimeout      5000

clitimeout      50000

srvtimeout      50000

listen web_proxy 192.168.186.161:80

server web1 localhost:8080 cookie app1inst1 check inter 2000 rise 2 fall 5

listen admin_stat

bind *:8011                     # 监听端口

mode http                       # http的7层模式

option httplog

log global

stats refresh 30s               # 统计页面自动刷新时间

stats uri /admin?stats           # 统计页面URL

stats realm Haproxy\ Statistics  # 统计页面密码框上提示文本

stats auth admin:admin          # 统计页面用户名和密码设置

stats hide-version              # 隐藏统计页面上HAProxy的版本信

保存退出。

4. 启动haproxy

输入如下命令: /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.conf

5. 测试haproxy

启动浏览器程序,进行测试

wps_clip_image-27307[3][1]

请注意上面蓝色得地址栏中, 绿色区域里面没有8080的端口号,说明是工作在80端口, 而80端口是haproxy进行监听的,同时显示数据是nginx给出的内容,因此, haproxy配置完成。

完成测试。

发表评论