haproxy安装部署及使用

博主vx: haitangyijiusu 。很高兴认识你!偶尔带huo,都是精挑细选信得过的产品,欢迎来支持,期待和您相遇! 

环境准备:

    haproxy是七层负载均衡。

1、解压

tar -zxvf haproxy-1.9.16.tar.gz 

cd  haproxy-1.9.16

2、安装

make TARGET=linux31

make install PREFIX=/usr/local/haproxy

mkdir /usr/local/haproxy/conf

cp examples/option-http_proxy.cfg /usr/local/haproxy/conf/haproxy.cfg

3、修改配置文件,配置文件全部内容:

#
# demo config for Proxy mode

global
        maxconn         5000
    ulimit-n    16384
        log             127.0.0.1 local0
        uid             200
        gid             200
        chroot          /var/empty
    nbproc        4
        daemon

defaults
timeout connect      5000             #连接超时时间。 单位:ms 毫秒
timeout client       50000            #客户端连接超时时间
timeout server      50000             #服务器端连接超时时间
mode    http

frontend test-proxy
    # bind        192.168.200.10:8080
    bind        192.168.20.26:8080
        mode            http
        log             global
        option          httplog
        option          dontlognull
        option          nolinger
        option          http_proxy
        maxconn         8000
        timeout client  30s

    # layer3: Valid users
    acl allow_host src 192.168.200.150/32
    http-request deny if !allow_host

    # layer7: prevent private network relaying
    acl forbidden_dst url_ip 192.168.0.0/24
    acl forbidden_dst url_ip 172.16.0.0/12
    acl forbidden_dst url_ip 10.0.0.0/8
    http-request deny if forbidden_dst

    default_backend test-proxy-srv


frontend py-front
    bind 0.0.0.0:8087
    default_backend python-lch
    timeout client  30s


backend python-lch
    timeout connect 5s
    server s1 192.168.20.26:8088
    server s2 192.168.20.26:8089


backend test-proxy-srv
    mode            http
    timeout connect 5s
    timeout server  5s
    retries         2
    option          nolinger
    option          http_proxy

    # layer7: Only GET method is valid
    acl valid_method        method GET
    http-request deny if !valid_method

    # layer7: protect bad reply
    http-response deny if { res.hdr(content-type) audio/mp3 }
 

3、启动haproxy

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg

至此,安装完毕。后面我会其具体的服务进行详细演示。

2021-01-24补充:

4、起2个服务 

此处为了方便,使用Python27起2个python服务演示。分别起8088、8089两个端口服务,并分别在其目录下创建py_project-1.txt   py_project-2.txt两个文件加以区分。

起第一个服务:

mkdir -p /home/lch/py_project-1

cd /home/liuchaohua/py_project-1

touch  py_project-1.txt

python -m SimpleHTTPServer 8088

服务启动,如下图:

起第二个服务:

mkdir -p /home/lch/py_project-2

cd /home/liuchaohua/py_project-2

touch  py_project-2.txt

python -m SimpleHTTPServer 8089

服务启动,如下图:

5、验证

多次执行   wget http://192.168.20.26:8087/

vim 打开下载的页面 “index.html”   可以看到会随机下载到 py_project-1.txt 和 py_project-2.txt 文件。

这样,负载均衡的目的就达到了。

6、配置文件解释说明, 里面会有注释帮助大家理解

#
# demo config for Proxy mode
# 
 
global
        maxconn         20000
	#设定HAProxy进程可接受的最大并发数
	ulimit-n	41000
	#linux命令行选项,等同于上参数
        log             127.0.0.1 local0
	#全局的日志中配置,local0 是日志设备 info(err,warnig,minfo,debug)为日志级别,使用rsyslog
        uid             200
        gid             200
	#用户和组 ,可以用uid,gid代替
        chroot          /var/empty
	nbproc		1
	#HAProxy启动时可创建的进程数,配合daemon参数使用,默认只启动一个进程,该值应小于cpu核数。
        daemon
	#进程后台运行,(推荐模式)
 
defaults
	mode		http
	#实例的默认运行模式
	retries		3
	#连接后端服务器的失败重试次数
	timeout		connect	10s
	#连接服务器的最长等待时间,默认单位为毫秒,可使用其它时间单位
	timeout		client	20s
	#连接客户端发送数据时最长等待时间,默认单位为毫秒,可使用其它时间单位
	timeout		server	30s
	#服务器回应给客户端数据发送的最长等待时间,默认单位为毫秒,可使用其它时间单位
	timeout		check	5s
	#对后端服务器的检查超时时间,默认单位为毫秒,可使用其它时间单位
 
listen	admin_stats
	bind		*:9188
	#设置监控页面的访问地址,该地址表示为监听本机所有地址的9188端口
	mode		http
	log		global
	#使用全局日志
	stats		refresh 30s
	#监控页面自动刷新时间
	stats		uri /haproxy-status
	#uri的访问后缀
	stats		realm welcome login\ Haproxy
	#文本提示信息
	stats		auth	admin:admin~!@
	#统计页面的用户名和地址,每行一个
	stats		hide-version
	#隐藏统计页面的HAProxy的版本信息
	stats		admin if TRUE
	#可手工启动或禁用后端真实服务器,仅在1.4.9版本后有效
 
 
frontend test-proxy
	bind		*:80
	#定义监听地址
        mode            http
        log             global
        option          httplog
		#启用日志记录
	option		forwardfor
	#获取客户端真实ip。通过日志“X-Forwarded-For”查看
	option		httpclose
	#HAProxy在完成一次请教请求连接后,将主动关闭该连接,对性能非常有帮助
        option          dontlognull
        option          nolinger
        option          http_proxy
        maxconn         8000
        timeout client  30s
 
	# layer3: Valid users
#	acl allow_host src 192.168.200.150/32
	acl allow_host src 192.168.10.0/24
	#acl 控制,运行192.168.10.0/24网段的访问请求
	#acl使用方法如下
	#acl 自定义acl名称 acl方法 -i [ 匹配的路径或文件 ]
#	acl allow_host src 0.0.0.0/24
	http-request deny if !allow_host
	#拒绝连接请求除allow_host外
 
	# layer7: prevent private network relaying
#	acl forbidden_dst url_ip 192.168.0.0/24
#	acl forbidden_dst url_ip 172.16.0.0/12
	acl forbidden_dst url_ip 192.168.20.0/24
	http-request deny if forbidden_dst
 
	default_backend test-proxy-srv
 
 
backend test-proxy-srv
	mode            http
	timeout connect 5s
	timeout server  5s
	retries         2
	option		redispatch
	#应用于cookie保持的环境
	option		abortonclose
	#自动结束长时间连接
	option          nolinger
	option          http_proxy
#	option		httpchk	GET /index.php
	balance		roundrobin
	cookie		SERVERID
	server web1	192.168.10.101:8080	cookie	server1 weight 6 check inter 2000 rise 2 fall 
 3
	#后端服务器真实地址
	server web2	192.168.10.101:8888	cookie	server2	weight 6 check inter 2000 rise 2 fall 
 3
 
	# layer7: Only GET method is valid
	acl valid_method        method GET
	acl valid_method	method POST
	http-request deny if !valid_method
 
	# layer7: protect bad reply
	http-response deny if { res.hdr(content-type) audio/mp3 }

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值