原创文章,转载请指明出处并保留原文url地址
1 haproxy简介
1.1 Haproxy功能介绍
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机, 它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整 合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
下图是HAProxy的架构:
1.2 Haproxy监控
下图是HAProxy的监控页面截图:
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中运行。
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虚拟机
4. 登录系统
如下图, 启动后系统如下界面
用户点击鼠标左键后, 在登录页面可以输入用户名 :root
然后提示输入密码信息, 用户可以输入原始密码 :"thoughtpolice"(密码是双引号中内容)The root password for this image is "thoughtpolice".
2.2 Linux的操作工具准备
配置SecureCRT软件(自行到百度搜索下载)
SecureCRT是一常见的linux终端软件,我们可以通过这个软件登录我们的虚拟机系统,完成各种操作,他的操作方法比直接在虚拟机上操作方便多了.软件的下载及安装大家自己去搜索及下载.
安装完成后, 启动软件, 然后点击
图1处 启动快速连接,
图2处 输入ip地址
图3处 输入用户名
2.3 Linux环境更改
1. 通过登录虚拟机, 检查虚拟机的ip地址(一般虚拟机是采用dhcp方式分配的ip地址,因此需要我们检查一下ip地址)
2. 配置linux的登陆终端
打开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文件,如下图
7. 测试nginx配置
打开浏览器, 输入: http://test.com:8080/a.txt 后输出结果如上图, 说明nginx已经配置完成。
8. 关闭虚拟机防火墙
注意:虚拟机中有可能个防火墙等还打开, 需要关闭, 或者无法连接。
关闭虚拟机的防火墙,如下:
[sch@bogon ~]$ su - // 切换到root
Password: // 输入root账号密码
[root@bogon ~]# setup // 启动配置界面
如上图, 移动光标键, 选择 防火墙选项(图中黑色的部分),然后 按动tab键, 移动当前焦点到 “run tool”按钮, 回车
进入上图界面后, 选中绿色区域的设置, 然后移动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
启动浏览器程序,进行测试
请注意上面蓝色得地址栏中, 绿色区域里面没有8080的端口号,说明是工作在80端口, 而80端口是haproxy进行监听的,同时显示数据是nginx给出的内容,因此, haproxy配置完成。
完成测试。