HAproxy入门学习

HAproxy在四层的工作负载

第一阶段:

client发送http请求报文到haproxy,haproxy由于工作在第四层,因此通过拆包可以查看到TCP/IP包头信息,haproxy根据定义的规则将client请求的目标地址修改为后端的web服务器的IP地址,与此同时还将源地址修改为haproxy的IP地址并转发给后端的web服务器。

第二阶段:

后端的web服务器将响应的结果封装成响应报文发送给haproxy服务器后,haproxy再将报文的源地址修改为haproxy的IP地址,目标地址修改为client的IP地址并转发给client。

HAproxy在七层的工作负载

第一阶段:

client发送http请求报文到haproxy,haproxy接收到client的http请求报文后,会查看client的请求报文,根据http请求报文的信息在结合haproxy自身定义的规则判断出client要访问后端的web服务器;

第二阶段:

haproxy根据client的请求报文判断要访问的后端的web服务器后,会代替客户端的重新发起http请求报文到后端的web服务器;

第三阶段:

后端的web服务器接收到haproxy的http请求报文后,如果访问的资源存在且权限允许的话会将haproxy请求的资源封装成响应报文并发送给haproxy服务器;

第四阶段:

haproxy接收到web服务器的响应报文后,haproxy将后端web服务器返回的结果封装成响应报文并发送给client。

四层与七层的区别

HAProxy的四层与七层的主要区别就在于是否重新发起了http请求,如果重新发来http请求则说明工作在第七层,若没有重新发起http请求则说明haproxy工作在第四次。

  这也就是为什么HAProxy在反向代理MySQL,Redis,RDP等服务时需要特别指定mode为TCP模式的主要原因,因为工作在七层会重新发起http请求,而重新发起的http请求MySQL,Redis,RDP等服务压根就不认识,因为这些服务都有着自己默认的协议。

mode参数可设置HAProxy工作在四层还是七层,在HAProxy中mode有三种工作模式:

1.tcp:基于layer4实现代理;可代理mysql, pgsql, ssh, ssl等协议;

2.http:仅当代理的协议为http时使用;

3.health:工作为健康状态检查的响应模式,当连接请求到达时回应“OK”后即断开连接;

HAproxy提供高可用,负载均衡以及基于TCP和THHP应用的代理,支持虚拟机,免费、快速并且可靠的一套方案。

HAproxy适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层代理。HAproxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您的架构中,同事可以保护你的web服务器不被暴露到网路上。

**************************************************************************************************************

一。负载平衡类型

(1)无负载均衡:没有负载均衡的简单Web应用程序环境可能如下所示

用户直接连接到你的web服务器,在youdomain.com上,并且没有负载均衡。如果你的单个web服务器出现故障时,用户将无法再访问您的web服务器。此外,如果许多用户试图同时访问您的服务器并且无法处理负载,他们可能会遇到缓慢的体验,或者可能根本无法连接。

(2)4层负载均衡

将网络流量负载平衡到多个服务器的最简单方式是使用第4层(传输层)负载平衡。以这种方式进行负载均衡将根据IP范围和端口转发用户流量(即,如果请求进入http://yourdomain.com/anything,则流量将转发到处理yourdomain.com的所有请求的后端。端口80)

(3)7层负载平衡

7层负载平衡是更复杂的负载均衡网络流量的方式是使用第7层(应用层)负载均衡。使用第7层允许负载器根据用户请求的内容将请求转发到不同的后端服务器。这种负载均衡模式允许您在同一域和端口下运行多个web应用程序服务器

示例中,如果用户请求yourdomain.com/blog,则会将其转发到博客后端,后端是一组运行博客应用程序的服务器。其他请求被转发到web-backend,后端可能正在运行另一个应用程序。

二、HAproxy基础配置文件详解:

HAproxy配置中分成五部分内容,分别如下:

1.global:设置全局配置参数,属于进程的配置,通常是和操作系统相关。

2.defaults:配置默认参数,这些参数可以被用到frontend,backend,Listen组件

3.frontend:接收请求的前端虚拟节点,Frontend可以更加规则直接指定具体使用后端的backend

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

5.Listen: frontend和backend的组合体。

部署

1.部署lua环境

192.168.200.12   HAproxy

192.168.200.13   Nginx

192.168.200.14   Nginx

#lua的当前版本
[root@node4 app]# lua -v
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio

#源码部署5.3.5lua
mkdir /app
cd /app
yum install -y libtermcap-devel ncurses-devel libevent-devel readline-devel gcc gcc-c++
wget http://www.lua.org/ftp/lua-5.3.5.tar.gz
tar xvf lua-5.3.5.tar.gz
cd lua-5.3.5
make linux test

#拷贝新版本的lua命令
mv /usr/bin/lua /usr/bin/lua.bak
ln -s /app/lua-5.3.5/src/lua /usr/bin/lua
[root@node4 lua-5.3.5]# ll /usr/bin/lua
lrwxrwxrwx 1 root root 22 Jan  6 18:58 /usr/bin/lua -> /app/lua-5.3.5/src/lua
[root@node4 ~]# lua -v
Lua 5.3.5  Copyright (C) 1994-2018 Lua.org, PUC-Rio

2.部署haproxy

#下载haproxy2.0.4,下载地址:http://www.haproxy.org/download
mkdir /app
cd /app
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.4.tar.gz
tar xvf haproxy-2.0.4.tar.gz
#安装依赖包
yum install -y gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools vim iotop bc zip unzip zlib-devel lrzsz tree screen lsof tcpdump wget ntpdate 

#安装编译环境
#HAProxy 1.8及1.9版本编译参数:
cd haproxy-1.8.4
make ARCH=x86_64 TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1
USE_CPU_AFFINITY=1 PREFIX=/usr/local/haproxy

#HAProxy 2.0编译参数:
cd haproxy-2.0.4
make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 \
USE_SYSTEMD=1 USE_CPU_AFFINITY=1 USE_LUA=1 LUA_INC=/app/lua-5.3.5/src/ \
LUA_LIB=/app/lua-5.3.5/src/ PREFIX=/usr/local/haproxy

make install PREFIX=/usr/local/haproxy
cp haproxy /usr/sbin/
echo 'export PATH=/usr/local/haproxy/sbin:$PATH' > /etc/profile.d/haproxy.sh
source /etc/profile

3.查看haproxy安装版本

[root@node4 haproxy-2.0.4]# haproxy -v HA-Proxy version 2.0.4 2019/08/06 - https://haproxy.org/

4.创建用户haproxy及配置文件

#启动用户 useradd -M -s /sbin/nologin haproxy [root@node4 ~]# id haproxy uid=1000(haproxy) gid=1000(haproxy) groups=1000(haproxy)

/etc/haproxy/haproxy.cfg

defaults
  log global
  mode http
  maxconn 20480
  option httplog
  option httpclose
  option dontlognull
  #option forwardfor
  option redispatch
  option abortonclose
  #stats refresh 30
  retries 3
  balance roundrobin
  #balance source
  #balance leastconn
  timeout check 2000

frontend  http
  bind   192.168.200.12:9999
#  acl url_doc path_beg    doc.test.com
#  use_backend docserver   if url_doc
  default_backend servers

backend servers
#  balance  roundrobin
  server node1 192.168.200.13:80 check inter 3000 fall 2 rise 5
  server node2 192.168.200.14:80 check inter 3000 fall 2 rise 5

5HAproxy的启动脚本

cat >> /usr/lib/systemd/system/haproxy.service <<EOF
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
[Service]
ExecStartPre=/usr/sbin//haproxy -f /etc/haproxy/haproxy.cfg -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target

6启动HAproxy

mkdir /var/lib/haproxy chown haproy.haproxy /var/lib/haproxy/ -R systemctl start haproxy systemctl enable haproxy systemctl status haproxy

7.两台web yum安装nginx

yum -y install nginx

并 echo 'node1 192.168.200.13' > /usr/share/nginx/html/index.html

8.发现会出现轮询

curl 192.168.200.12:9999

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Haproxy和Nginx是两个常用的开源软件,用于负载均衡和反向代理。下面是关于Haproxy和Nginx的一些信息和命令: Haproxy是一款高性能的负载均衡器,可以将流量分发到多个服务器上,以提高系统的可靠性和性能。要安装Haproxy,可以按照以下步骤操作: 1. 下载并解压Haproxy的源代码包。 2. 进入解压后的目录,执行命令:`./configure --prefix=/usr/local/haproxy`,这将配置Haproxy的安装路径为/usr/local/haproxy。 3. 接下来,执行命令:`make`,然后再执行命令:`make install`,这将编译和安装Haproxy。 4. 安装完成后,可以在/usr/local/haproxy目录下找到Haproxy的可执行文件。 Nginx是一款高性能的Web服务器和反向代理服务器,常用于静态资源的加速和负载均衡。要安装Nginx,可以按照以下步骤操作: 1. 下载并解压Nginx的源代码包。 2. 进入解压后的目录,执行命令:`./configure --prefix=/usr/local/nginx --user=nginx --group=nginx`,这将配置Nginx的安装路径为/usr/local/nginx,并指定Nginx运行的用户和用户组为nginx。 3. 接下来,执行命令:`make`,然后再执行命令:`make install`,这将编译和安装Nginx。 4. 安装完成后,可以在/usr/local/nginx目录下找到Nginx的配置文件和可执行文件。 在安装完Haproxy和Nginx后,还需要进行相应的配置才能使用它们。对于Haproxy,可以通过编辑配置文件/etc/haproxy/haproxy.cfg来配置代理规则和后端服务器。可以使用命令`cp /opt/haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy`将示例配置文件复制到/etc/haproxy目录下。 对于Nginx,可以通过编辑配置文件/etc/nginx/nginx.conf来配置服务器和代理规则。可以使用命令`cp /opt/nginx-1.19.0/conf/nginx.conf /etc/nginx`将示例配置文件复制到/etc/nginx目录下。 需要注意的是,以上命令只是示例命令,实际使用时可能需要根据具体情况进行修改。另外,安装和配置Haproxy和Nginx需要一定的系统管理经验,建议在操作前先备份相关配置文件,并参考官方文档进行详细了解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值