haproxy安装配置

可以使用yum安装或者rpm安装。

配置文件

haproxy配置文件主要由全局段和代理段两部分组成:

全局段 global配置段,主要配置全局参数

代理段有: default、frontend、backend和listen。


global:参数是进程级的,通常和操作系统(OS)相关。这些参数一般只设置一次,如果配置无误,就不       需要再次配置进行修改;

    

default:配置默认参数的,这些参数可以被利用配置到frontend,backend,listen组件;

frontend:接收请求的前端虚拟节点,Frontend可以根据规则直接指定具体使用后端的backend(可动态        选择);

backend:后端服务集群的配置,是真实的服务器,一个Backend对应一个或者多个实体服务器;

listen:Frontend和Backend的组合体。

负载均衡算法:

1、roundrobin

表示简单的轮询,每个服务器根据权重轮流使用,在服务器的处理时间平均分配的情况下这是最流畅和公平的算法。该算法是动态的,对于实例启动慢的服务器权重会在运行中调整。

2、leastconn

连接数最少的服务器优先接收连接。leastconn建议用于长会话服务,例如LDAP、SQL、TSE等,而不适合短会话协议。如HTTP.该算法是动态的,对于实例启动慢的服务器权重会在运行中调整。

3、static-rr

每个服务器根据权重轮流使用,类似roundrobin,但它是静态的,意味着运行时修改权限是无效的。另外,它对服务器的数量没有限制。

该算法一般不用;

4、source

对请求源IP地址进行哈希,用可用服务器的权重总数除以哈希值,根据结果进行分配。只要服务器正常,同一个客户端IP地址总是访问同一个服务器。如果哈希的结果随可用服务器数量而变化,那么客户端会定向到不同的服务器;

该算法一般用于不能插入cookie的Tcp模式。它还可以用于广域网上为拒绝使用会话cookie的客户端提供最有效的粘连;

该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。

5、uri

表示根据请求的URI左端(问号之前)进行哈希,用可用服务器的权重总数除以哈希值,根据结果进行分配。只要服务器正常,同一个URI地址总是访问同一个服务器。一般用于代理缓存和反病毒代理,以最大限度的提高缓存的命中率。该算法只能用于HTTP后端;

该算法一般用于后端是缓存服务器;

该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。

6、url_param

在HTTP GET请求的查询串中查找<param>中指定的URL参数,基本上可以锁定使用特制的URL到特定的负载均衡器节点的要求;

该算法一般用于将同一个用户的信息发送到同一个后端服务器;

该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。

7、hdr(name)

在每个HTTP请求中查找HTTP头<name>,HTTP头<name>将被看作在每个HTTP请求,并针对特定的节点;

如果缺少头或者头没有任何值,则用roundrobin代替;

该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。

8、rdp-cookie(name)

为每个进来的TCP请求查询并哈希RDP cookie<name>;

该机制用于退化的持久模式,可以使同一个用户或者同一个会话ID总是发送给同一台服务器。如果没有cookie,则使用roundrobin算法代替;

该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。


haproxy实验环境:

haproxy基本配置_IP地址

主机接口ip
haproxyeth0172.16.42.77
haproxyeth1192.168.1.9
web1eth0192.168.1.10
web2eth0192.168.1.11
client本地连接1172.16.42.10



为web1和web2分别安装nginx服务,并使用不同的页面演示效果。

编辑 /etc/haproxy/haproxy.cfg,在配置文件里面添加一个backend和frontend

backend httpd  #为backend取名为httpd
        balance roundrobin #定义负载均衡算法
   server  app1 192.168.1.10:80 #定义后端主机
   server  app2 192.168.1.11:80 #定义后端主机

frontend web  #为frontend取名为web
        bind *:80
        mode http #定义工作的模式,有三种 http|tcp|health
        default_backend httpd #调用名为httpd的backend

启动haproxy服务

service haproxy start

访问http://172.16.42.77

haproxy基本配置_广域网_02

刷新页面后

haproxy基本配置_广域网_03

后端主机添加权重使用weight关键字

backend httpd  #为backend取名为httpd
        balance roundrobin #定义负载均衡算法
   server  app1 192.168.1.10:80 weight 1 #定义后端主机
   server  app2 192.168.1.11:80 weight 2 #定义后端主机
service haproxy reload #重新加载配置项


部分资料参考:

http://my.oschina.net/BambooLi/blog/506397