HaProxy安装配置入门学习


简介

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

安装
 
安装介质

从HaProxy官方网站下载最稳定的发布版本(1.4.25)源码包;使用源码包的好处是可以在不同的Linux环境上进行编译安装。

haproxy-1.4.25.tar.gz

环境准备

HaProxy支持大多数的Linux OS, 我选择开源的操作系统Ubuntu Server 14.04(64Bites),当然选择SUSE或RadHat也没有问题。如果没有Linux环境,可以安装虚拟软件(如VMWare)创建虚拟机并安装操作系统,由于Ubuntu比较小巧,占用资源较少,比较适合在本机虚拟化环境中运行。当然,现在的PC配置较高一般的Linux OS可以安装几台都不成问题。

查看源码包下面的README文件,可以知道HAProxy所支持的OS:

  - linux22    for Linux 2.2

  - linux24    for Linux 2.4 and above (default)

  - linux24e    for Linux 2.4 with support for a working epoll (> 0.21)

  - linux26    for Linux 2.6 and above

  - linux2628  for Linux 2.6.28 and above (enables splice and tproxy)

  - solaris    for Solaris 8 or 10 (others untested)

  - freebsd    for FreeBSD 5 to 8.0 (others untested)

  - osx        for Mac OS/X

  - openbsd    for OpenBSD 3.1 to 5.2 (others untested)

  - aix52      for AIX 5.2

  - cygwin      for Cygwin

  - generic    for any other OS.

  - custom      to manually adjust every setting

安装过程

(1)    解压安装包

如果你的本地环境是Linux,那就直接解压安装包;或者使用的是虚拟机,则把安装包上传至虚拟机(可以使用Xftp软件或Linux scp命令);如果虚拟机可以连接Internet,也可以在虚拟机里直接下载HaProxy源码安装包;把准备好的源码安装包解压缩;

HaProxy安装配置入门学习

(2)    源码包目录结构

HaProxy安装配置入门学习

CHANGELOG : 版本变更信息,记录新增更能、BUG修改等信息

doc : 文档

example : 配置示例

tests : 测试用例(配置文件)

include : 依赖类库

ebtree : 类库

src : 源代码(c)

(3)    编译源码

与一般编译安装源码程序不同,HaProxy安装不需要执行configure操作,在其安装包根目录下可以发现不存在configure脚本;执行make命令编译源码;

HaProxy安装配置入门学习

make TARGET=linux26 PREFIX=/opt/programs/haproxy-1.4.25

PREFIX指定安装程序的根目录,如果不指定则安装到系统默认目录下,编译结束根目录下多了一个可执行的文件:haproxy,就是核心程序,执行该命令可以启动HaProxy进程(当然要先准备好配置文件)。

HaProxy安装配置入门学习

(4)    安装

执行make install安装编译产物。

HaProxy安装配置入门学习

查看安装结果:

HaProxy安装配置入门学习

配置

HAProxy源码安装包中带有配置示例和技术文档,可以参考学习。以下举例配置最常用的两种代理HTTP和TCP。

HTTP

环境准备

Apache-tomcat

192.168.226.128:8080

Apache-tomcat

192.168.226.129:8080

配置文件

global

  daemon

  maxconn 256

defaults

  mode http

  timeout connect 5000ms

  timeout client 50000ms

  timeout server 50000ms

listen http-in

  bind *:80

  server server1 192.168.226.128:8080 maxconn 32

  server server2 192.168.226.129:8080 maxconn 32

测试

先做一个简单的配置并测试。新建haproxy配置文件${haproxy.home}/conf/haproxy.cfg,输入上述配置内容后保存(配置文件可以任意命名,只要启动时指定配置文件路径即可 [-f ${cfgFilePath}])。执行${haproxy.home}/sbin/haproxy –f ${haproxy.home}/conf/haproxy.cfg启动haproxy进程。如果不知道命令参数,可以输入-h查看帮助信息。

HaProxy安装配置入门学习

执行${haproxy.home}/sbin/haproxy -f ${haproxy.home}/conf/haproxy.cfg启动haproxy进程;

HaProxy安装配置入门学习

--------------------------------------分割线 --------------------------------------

Haproxy+Keepalived搭建Weblogic高可用负载均衡集群

Keepalived+HAProxy配置高可用负载均衡

CentOS 6.3下Haproxy+Keepalived+Apache配置笔记

Haproxy + KeepAlived 实现WEB群集 on CentOS 6

Haproxy+Keepalived构建高可用负载均衡

使用 HAProxy 配置 HTTP 负载均衡器

--------------------------------------分割线 --------------------------------------

编写一个JSP文件放入tomcat自带的example应用中(每个server里都放置一份),查看每次访问的server信息(可以在每个tomcat启动参数中加入不同的值-D${key}=${value},方便测试),JSP文件内容如下:

<%@pageimport="java.util.Properties"%>

<%@pageimport="java.net.InetAddress"%>

<%@pagelanguage="java"contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%

InetAddress address = InetAddress.getLocalHost();

String hostAddress = address.getHostAddress();

String hostName = address.getHostName();

Properties props = System.getProperties();

%>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<metahttp-equiv="Content-Type"content="text/html; charset=UTF-8">

<title>Test HAProxy HTTP mode</title>

</head>

<body>

  <spanstyle="color: blue;">ZhongWen.Li (lizw@primeton.com)</span>

  <tablewidth="100%"border="0.1">

      <thead>

        <tr>

          <thcolspan="2"align="center">Server information</th>

        </tr>

      </thead>

      <tbody>

        <tr>

          <td>SERVER ADDRESS</td>

          <td><%=hostAddress %></td>

        </tr>

        <tr>

          <td>SERVER NAME</td>

          <tdstyle="color: red;"><%=hostName %></td>

        </tr>

        <tr>

          <td>Session ID</td>

          <td><%=session.getId() %></td>

        </tr>

        <tr>

          <tdcolspan="2"align="center">System information</td>

        </tr>

        <%for (Object key : props.keySet()) { %>

        <tr>

          <td><%=key %></td>

          <td><%=props.get(key) %></td>

        </tr>

        <% } %>

      </tbody>

  </table>

</body>

</html>

直接访问应用容器1

HaProxy安装配置入门学习

直接访问应用容器2

HaProxy安装配置入门学习

更多详情见请继续阅读下一页的精彩内容

  • 1
  • 2
  • 下一页

相关内容