Haproxy 代理后端服务

参考

http://www.haproxy.org

HAProxy · GitHub

目录

一、Haproxy环境准备

1、Haproxy简介

1.1、haproxy原理

1.2、Haproxy优点

2、在线apt安装

二、使用Haproxy

1、基本脚本结构示例

2、配置反向代理

3、验证haproxy

3.1、重启服务

3.2、访问后台管理

3.3、访问代理prometheus-server端口

3.4、访问代理grafana端口


一、Haproxy环境准备

1、Haproxy简介

1.1、haproxy原理

haproxy提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。

haproxy特别适用于那些负载特别大的web站点,这些站点通常又需要会话保持或七层处理。haproxy运行在时下的硬件上,完全可以支持数以万计的并发连接,

并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

haproxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。

事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space)实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。

这就是为什么他们必须进行优化以使每个CPU时间片(Cycle)做更多的工作。

1.2、Haproxy优点

(1)免费开源,稳定性也是非常好。单haproxy也跑得不错,稳定性可以与硬件级的F5相媲美。

(2)根据官方文档,haproxy可以跑满10Gbps,这个数值作为软件级负载均衡器是相当惊人的。

(3)haproxy支持连接拒绝:因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。

(4)haproxy支持全透明代理(已具备硬件防火墙的典型特点):可以用客户端IP地址或者任何其他地址来连接后端服务器。这个特性仅在Linux 2.4/2.6内核打了tcp proxy补丁后才可以使用。这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。

(5)haproxy现多于线上的Mysql集群环境,我们常用于它作为MySQL(读)负载均衡。

(6)自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警。

(7)HAProxy支持虚拟主机

2、在线apt安装

apt-get install software-properties-common

add-apt-repository ppa:vbernat/haproxy-2.7

安装完成后服务会自启

systemctl status haproxy

查看版本信息

HA-Proxy version 2.0.29

二、使用Haproxy

1、基本脚本结构示例

global

    # global settings here

defaults

    # defaults here

frontend

    # a frontend that accepts requests from clients

backend

    # servers that fulfill the requests

2、配置反向代理

1、端口用途

Haproxy端口

被代理服务端口

备注

3264

N/A

haproxy管理页面

3265

9090

prometheus server

3266

30000

grafana dashboard

2、编辑配置文件

/etc/haproxy/haproxy.cfg

global
	log /dev/log	local0
	log /dev/log	local1 notice
	chroot /var/lib/haproxy
	stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
	stats timeout 30s
	user haproxy
	group haproxy
	daemon

	# Default SSL material locations
	ca-base /etc/ssl/certs
	crt-base /etc/ssl/private

	# See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate
        ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
        ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
        ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets


defaults
	log	global
	mode	http
	option	httplog
	option	dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
	errorfile 400 /etc/haproxy/errors/400.http
	errorfile 403 /etc/haproxy/errors/403.http
	errorfile 408 /etc/haproxy/errors/408.http
	errorfile 500 /etc/haproxy/errors/500.http
	errorfile 502 /etc/haproxy/errors/502.http
	errorfile 503 /etc/haproxy/errors/503.http
	errorfile 504 /etc/haproxy/errors/504.http
# Haproxy 控制台管理
listen admin_stats
   stats    enable
   bind     *:3264  #*所有ip都可以访问
   mode     http    #代理模式
   option   httplog
   log      global
   maxconn  10
   stats    refresh 30s   #统计页面自动刷新时间
   stats    uri /admin    #访问的uri   ip:3264/admin
   stats    realm haproxy
   stats    auth admin:1234567  #认证用户名和密码
   stats    hide-version   #隐藏HAProxy的版本号
   stats    admin if TRUE  #管理界面,如果认证成功了,可通过webui管理节点



listen prometheus-server
  bind *:3265  #服务IP端口      
  server prometheus-server 192.168.101.200:9090 check inter 500 rise 2 fall 4 weight 100        #后端prometheus的地址

listen grafana-server
  bind *:3266 #服务IP端口   

3、验证haproxy

3.1、重启服务

systemctl restart haproxy

netstat -ntlp|grep haproxy

3.2、访问后台管理

http://192.168.101.201:3264/admin

查看代理信息

3.3、访问代理prometheus-server端口

http://192.168.101.201:3265/graph

3.4、访问代理grafana端口

http://192.168.101.201:3266/login

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值