down:http://www.haproxy.org/

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

注意:haproxy代理ssl有两种方式

1.haproxy本身提供ssl证书,后面的web服务器走正常的http

2 haproxy本身只提供代理,后面的web服务器https

第一种方法 需要在编译haproxy支持ssl

[root@ha02 haproxy-1.4.]# make TARGET=linux26 USE_OPENSSL=1 ADDLIB=-lz

不过有报错:

btree/ebsttree.o ebtree/ebimtree.o ebtree/ebistree.o   -lcrypt -lz
/usr/bin/ld: cannot find -lz
collect2: ld returned exit status
make: *** [haproxy] Error
解决方法:
# yum install zlib-devel

如果装完如果没报错,查看haproxy并没有支持ssl

[root@ha02 sbin]# ldd haproxy |grep ssl
[root@ha02 sbin]#
查看发现并没有安装openssl-devel
[root@ha02 sbin]# rpm -qa|grep openssl
openssl-1.0.1e-.el6.x86_64
[root@ha02 sbin]# yum install openssl-devel
安装上了,好像还是不行:
[root@ha02 sbin]# rpm -qa|grep openssl
openssl-1.0.1e-.el6_8..x86_64
openssl-devel-1.0.1e-.el6_8..x86_64

还是不行!!!

换了个版本为haproxy-1.4.26成功了

[root@ha02 sbin]# ldd haproxy|grep ssl
libssl.so. => /usr/lib64/libssl.so. (0x00007efd2d921000)

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[root@ha01 haproxy-1.4.]# uname -a
Linux ha01 2.6.-.el6.x86_64 # SMP Thu Jul :: UTC x86_64 x86_64 x86_64 GNU/Linux
[root@ha01 haproxy-1.4.]# make TARGET=linux26 ARCH=x86_64 PREFIX=/apps/haproxy-1.4.26
gcc -Iinclude -Iebtree -Wall -m64 -march=x86- -O2 -g -fno-strict-aliasing -DTPROXY -DCONFIG_HAP_CRYPT -DENABLE_POLL -DENABLE_EPOLL -DENABLE_SEPOLL -DNETFILTER -DUSE_GETSOCKNAME -DCONFIG_HAPROXY_VERSION=\"1.4.26\" -DCONFIG_HAPROXY_DATE=\"2015/01/30\" \
-DBUILD_TARGET='"linux26"' \
-DBUILD_ARCH='"x86_64"' \
-DBUILD_CPU='"generic"' \
-DBUILD_CC='"gcc"' \
-DBUILD_CFLAGS='"-m64 -march=x86-64 -O2 -g -fno-strict-aliasing"' \
-DBUILD_OPTIONS='""' \
-c -o src/haproxy.o src/haproxy.c
make: gcc: Command not found
make: *** [src/haproxy.o] Error
[root@ha01 haproxy-1.4.]# yum install gcc -y
[root@ha01 haproxy-1.4.]# make TARGET=linux26 ARCH=x86_64 prefix=/apps/haproxy-1.4.26
#TARGET=linux26,ARCH=x86_64#26以上的都用linux26
#TARGET是指内核版本,ARCH指定CPU架构
[root@ha01 haproxy-1.4.]# make install PREFIX=/apps/haproxy-1.4.26
[root@ha02 haproxy-1.4.]# tree /apps/
/apps/
└── haproxy-1.4.
├── doc
│   └── haproxy
│   ├── architecture.txt
│   ├── configuration.txt
│   ├── haproxy-en.txt
│   └── haproxy-fr.txt
├── sbin
│   └── haproxy
└── share
└── man
└── man1
└── haproxy.
[root@ha02 haproxy-1.4.]# cp examples/haproxy.cfg /apps/haproxy-1.4./
[root@ha02 haproxy-1.4.]# pwd
/usr/local/src/haproxy-1.4.

[root@ha02 haproxy-1.4.26]# cat haproxy.cfg
# this config needs haproxy-1.4.26
global
log 127.0.0.1 local0 warning #日志输出配置,所有日志都记录在本机,通过local0输出
maxconn 4096 #最大连接数
#chroot /apps/apps/haproxy-1.4.26 #改变当前工作目录
uid 99 #所属用户的uid
gid 99 #所属运行的gid
daemon #以后台形式运行haproxy
nbproc 1

#haproxy启动时的进程数,<=CPU的核数,常见的2棵8核心CPU的服务器>,共16核心,则可以将其值设置为<=16,创建多个进程数,可以减少每个进程的任
务队列,但是过多的进程数也可能会导致进程的崩溃。

pidfile /var/run/haproxy.pid
defaults
log global
mode http #默认的模式mode {tcp|http|health},tcp是4层,http是7层,health只会返回ok
option httplog
option forwardfor except 127.0.0.0/8
option dontlognull
option redispatch
#当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
option abortonclose
#当服务器负载很高的时候,自动结束掉当队列处理比较久的链接
retries 3 #3次连接失败就认为是服务器不可用
maxconn 2000 #默认最大连接数
contimeout 5000 #连接超时
clitimeout 50000 #客户端超时
srvtimeout 50000 #服务器超时
timeout check 5s #心跳检测超时
stats refresh 30s #统计页面自动刷新时间
stats uri /stats #统计页面url
stats realm baison-test-Haproxy #统计页面密码框上提示文本
stats auth admin:admin123 #统计页面用户名和密码设置
stats hide-version #隐藏统计页面上HAProxy的版本信息
frontend www
bind *:80
#这里建议使用bind *:80的方式,要不然做集群高可用的时候有问题,vip切换到其他机器就不能访问了
acl web hdr(host) -i www.zhirs.com
#acl后面是规则名称,-i忽略大小写后面跟要访问的域名,如果访问www.zhirs.com这个域名就会分发到下面的webserver的做用域
acl img hdr(host) -i img.zhirs.com
#如果访问img.baison.com.cn就分发到imgserver这个作用域
use_backend webserver if web
use_backend imgserver if img
backend webserver #webserver作用域
#mode http
balance roundrobin
#balance roudrobin 轮询,balance source 保存session值,支持static-rr,leastconn,first,uri等参数
option httpchk HEAD /index.html
#检测文件,如果分发到后台index.html访问不到就不再分发给它"特别注意HEAD如果没有它是不成功的"用GET也可以,但我不知道name和get的区别!
server web01 192.168.1.104:80 check inter 2000 fall 3 weight 30
server web01 192.168.1.105:80 check inter 2000 fall 3 weight 20
backend imgserver
#node http
option httpchk /index.php
balance roundrobin
server img01 192.168.1.106:80 check inter 2000 fall 3
server img02 192.168.1.107:80 check inter 2000 fall 3

[root@ha02 haproxy-1.4.]# ./sbin/haproxy -f ./haproxy.cfg
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0.0.0.0: 0.0.0.0:* LISTEN /./sbin/haproxy
tcp 0.0.0.0: 0.0.0.0:* LISTEN /sshd
tcp 127.0.0.1: 0.0.0.0:* LISTEN /master
tcp ::: :::* LISTEN /sshd
tcp ::: :::* LISTEN /master
udp 0.0.0.0: 0.0.0.0:* /dhclient
udp 0.0.0.0: 0.0.0.0:* /./sbin/haproxy
[root@ha02 haproxy-1.4.]# ps auxwwf|grep -v 'grep'|grep haproxy
nobody 0.1 0.3 ? Ss : : ./sbin/haproxy -f ./haproxy.cfg
[root@ha02 haproxy-1.4.]# ./sbin/haproxy -f /apps/haproxy-1.4./haproxy.cfg -c
Configuration file is valid
#-c 是检查语法是否有问题

注意:chroot /apps/apps/haproxy-1.4.26 #改变当前工作目录 会无法启动,原因查找。

暂时实现结果:

[root@ha02 haproxy-1.4.]# ./sbin/haproxy -v
HA-Proxy version 1.4. //
Copyright - Willy Tarreau <w@1wt.eu>

http://www.cnblogs.com/MacoLee/p/5853413.html

通过web看状态信息:

stats enable

stats uri /admin?stats

stats auth proxy:xxxxx

-----------------------------------------

option forwarfor:让realserver记真实的用户的ip

inter 5000 是指间隔5秒做一个检测!!!!!

fall 5 5次失败会被提掉!!!!!

rise 2 检测2次好了,再把恢复的服务器加进来!!!

check port 22 对22号端口做健康检查,如果不通就踢出去相当于没配这个一行参数

=========================================

平滑重启:

haproxy -f $CONFFILE -sf $(cat $PIDFILE)

上面的平滑重启好像有问题:

改成下面的命令:

[root@ha02 ~]# /apps/haproxy-1.4./sbin/haproxy -f /apps/haproxy-1.4./haproxy.cfg  -st $(cat /var/run/haproxy.pid)
[root@ha02 ~]# ps aux|grep haproxy
nobody 0.0 0.2 ? Ss : : /apps/haproxy-1.4./sbin/haproxy -f /apps/haproxy-1.4./haproxy.cfg -st
root 0.0 0.1 pts/ S+ : : grep haproxy

--------------------------------------------------------

frontend:用来匹配接收客户所请求的域名,uri等,并针对不同的区配,做不同的请求处理。

===============================================================

stats realm baison-test-Haproxy #统计页面密码框上提示文本

HAProxy的算法现在也越来越多了,具体有如下8种:
①roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;
②static-rr,表示根据权重,建议关注;
③leastconn,表示最少连接者先处理,建议关注;
④ource,表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法,建议关注;
⑤ri,表示根据请求的URI;
⑥rl_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name;
⑦hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
⑧rdp-cookie(name),表示根据cookie(name)来锁定并哈希每一次TCP请求。

stats uri /stats        #统计页面url

可以改一下:

stats uri /vip

==================================================

HEAD配置方法:
option httpchk HEAD /checkstatus.html HTTP/1.0
这种检测方式就相当于curl http://192.168.1.82/checkstatus.html

在配置内核参数开发转发功能:
在/etc/sysctl.conf中加入如下配置

net.ipv4.ip_forward=1

sysctl -p

-----------------注意haproxy监听端口不能重复,backend端口可以相同(前题在不能的服务器上面)---------------------------------

如果重复会报错

frontend和backend的端口可以为不同的端口(规范考虑最好一致)

frontend server01_test.xxxxx.com:
bind *:
mode http
default_backend server-name01
frontend server02_test.guoeryyyyyyyyy.com:
bind *:
mode http
default_backend server-name02
backend server-name02
mode http
balance roundrobin
cookie SERVERID
option httpchk HEAD /chk/chk.html
server test2 .17x.xxx.xxx: cookie test2 weight check inter rise fall
backend server-name01
mode http
balance roundrobin
cookie SERVERID insert nocache
option httpchk HEAD /chk/chk.html
server srv130 .1x2.2xx.xxx: cookie srv130 weight check inter rise fall

haproxy 安装 各个参数的测试的更多相关文章

  1. Linux Haproxy 安装和部署

    一.Haproxy 安装 下载地址 http://pan.baidu.com/s/1mggViXE cd /usr/local tar xzvf haproxy-.tar.gz cd haproxy- ...

  2. CentOS7—HAProxy安装与配置

    概述 Haproxy下载地址:http://pkgs.fedoraproject.org/repo/pkgs/haproxy/ 关闭SElinux.配置防火墙 1.vi /etc/selinux/co ...

  3. 【转】Haproxy安装及配置

    1.安装 # wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz # tar zcvf haproxy-1.3.20.t ...

  4. Haproxy安装及配置(转)

    1.安装 # wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz # tar zcvf haproxy-1.3.20.t ...

  5. Haproxy安装及配置

    1.安装 # wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz # tar zcvf haproxy-1.3.20.t ...

  6. haproxy 安装与配置文件详解

    本文主要阐述haproxy的安装配置详解,对于它的概念,作用,功能,和其它LB软件的区别,优点,缺点等不再进行说明. 一. haproxy 的安装配置 # cat /etc/redhat-releas ...

  7. ubuntu10.10 tftp安装,配置,测试

    ubuntu10.10 tftp安装,配置,测试 成于坚持,败于止步 虽然ubuntu/centos/redhat都是linux,但是内核其中存在一定的修改,所以对于tftp服务器的安装存在不同的命令 ...

  8. CentOS6—HAProxy安装与配置

    概述 Haproxy下载地址:http://pkgs.fedoraproject.org/repo/pkgs/haproxy/ 关闭SElinux.配置防火墙 1.vi /etc/selinux/co ...

  9. 002.HAProxy安装及常见配置

    一 HAProxy安装 官方链接:http://www.haproxy.org/ (国内可能无法打开) 下载连接:http://pkgs.fedoraproject.org/repo/pkgs/hap ...

  10. 负载均衡-haproxy安装配置

    HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持 ...

随机推荐

  1. Configuration

    package edu.fzu.ir.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNot ...

  2. ZJOIDay2T1 BB题解

    讲道理我是调不出来了... 考虑对序列按下标维护每个节点最后的树. 那么 改操作点 - 把一段连续的节点改父亲 加点/删点(注意拆成两个操作了) 插儿子 那么用seg维护一下下标, 用ETT维护Dep ...

  3. Xcode开发技巧之Code Snippets Library

    http://blog.csdn.net/lin1986lin/article/details/21180007 目录(?)[-] 引言 什么是Code Snippets 如何新建Code Snipp ...

  4. 【GoLang】golang TCP 粘包处理 示例

    参考资料: http://www.01happy.com/golang-tcp-socket-adhere/

  5. Graph Valid Tree

    Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), ...

  6. poj 2378 (dijkstra)

    http://poj.org/problem?id=2387 一个dijkstra的模板题 #include <stdio.h> #include <string.h> #de ...

  7. Python操作PDF与Tiff文件

    1.PDF文件的合并与拆分 pypdf http://www.douban.com/note/455252403/ http://www.redicecn.com/html/Python/201301 ...

  8. Oracle10g下载地址--多平台下的32位和64位

    前段时间ORACLE把10G的下载从官网拿掉了 ,许多童鞋不知道ORACLE 10g 的下载地址,这里我附上oracle 10g 下载的链接,方便大家下载.      点击链接使用迅雷即可下载.    ...

  9. Kafka集群环境搭建

    Kafka是一个分布式.可分区.可复制的消息系统.Kafka将消息以topic为单位进行归纳:Kafka发布消息的程序称为producer,也叫生产者:Kafka预订topics并消费消息的程序称为c ...

  10. Java for LintCode 链表插入排序

    用插入排序对链表排序 解题思路: 最省时间的方法是使用优先级队列,但是无法通过,那就直接插入排序好了. public ListNode insertionSortList(ListNode head) ...