负载均衡器 HAProxy 入门与安装

haproxy 简介:

haproxy 是一款开源的负载均衡软件,他提供 L4 和 L7 层负载功能,全称为 high availability proxy。

下面将主要介绍两大系统的三种安装方式

一.Ubuntu安装:

版本:ubuntu1804
可以正常连接网络
开启ssh远程登陆root

~# apt-get install software-properties-common
~# add-apt-repository ppa:vbernat/haproxy-2.0
~# apt update
~# apt-cache madison haproxy
~# apt install haproxy=2.0.4-1ppa1~bionic
#验证haproxy版本
# haproxy -v
HA-Proxy version 2.0.4-1ppa1~bionic 2019/08/09 - https://haproxy.org/ 

二.Centos 7 yum安装haproxy

# yum list haproxy
# yum install haproxy -y
# rpm -ql haproxy

查看 haproxy 版本信息

[root@haproxy ~]# haproxy -v
HA-Proxy version 1.5.18 2016/05/10
Copyright 2000-2016 Willy Tarreau <willy@haproxy.org>

默认的base仓库中包含haproxy的安装包文件,但是版本比较旧,是1.5.18的版本,距离当前版本已经有较长时间
没有更新,由于版本比较旧所以有很多功能不支持,如果对功能和性能没有要求可以使用此版本,否则推荐使用新
版本

以上为ubuntu apt安装和centos yum安装的过程步骤 过程较为简单
下面将介绍cenos 7中的编译安装

三.Centos 7编译安装haproxy

解决lua环境

由于 CentOS自带的lua版本较低,因为haproxy 高版本依赖 lua5.3 以上的版本,因此编译安装 haproxy 之前,需要提前编译安装 新的lua环境,然后才能编译安装HAProxy。

1.lua简介:

HAProxy 支持基于lua实现功能扩展,lua是一种小巧的脚本语言,于1993年由巴西里约热内卢天主教大学
(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组开发,其设计目的是为了嵌入应用程序中,
从而为应用程序提供灵活的扩展和定制功能。

官方网址:http://www.lua.org/

Lua的应用场景:
    游戏开发
    独立应用脚本
    Web 应用脚本
    扩展和数据库插件,如MySQL Proxy
    安全系统,如入侵检测系统
2.环境及源码包的安装:
# yum install libtermcap-devel ncurses-devel libevent-devel readline-devel gcc -y  //编译安装 lua 所依赖的软件包

# wget http://www.lua.org/ftp/lua-5.3.5.tar.gz     //安装lu-5.3.5
3.解压源码包
# tar xf lua-5.3.5.tar.gz    //解压lua-5.3.5
# cd lua-5.3.5               //进入解压后的lua目录
# make linux test 
# cd                         //返回根目录
4.版本检查
# lua -v                     //查看当前lua系统版本

在这里插入图片描述

#  ./src/lua -v              //查看编译安装的版本
编译安装haproxy
1.安装下载源码包及编译环境

在这里插入图片描述

# wget http://www.haproxy.org/download/2.1/src/haproxy-2.1.2.tar.gz     //下载haproxy源码包

# tar xf haproxy-2.1.2.tar.gz          //解压源码包

# yum install gcc gcc-c++ glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools iotop bc zip unzip zlib zlib-devel lsof ntpdate -y     //加载haproxzy的编译环境 
2.编译安装
# cd haproxy-2.1.2      //进入解压包目录
# 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=/root/lua-5.3.5/src LUA_LIB=/root/lua-5.3.5/src PREFIX=/usr/local/haproxy       //添加编译参数
# make install PREFIX=/usr/local/haproxy
# cp haproxy /usr/sbin/
# cd
3.版本验证
# /usr/local/haproxy/sbin/haproxy -v   //验证HAProxy版本

在这里插入图片描述

4.启动脚本配置
# vi /usr/lib/systemd/system/haproxy.service

[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    


# systemctl daemon-reload   //后台重新装载进程   
5. haproxy服务的配置文件
# vi /etc/haproxy/haproxy.cfg

以下为本机配置:

#---------------------------------------------------------------------
global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        root
    group       root
    daemon
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000


#---------------------------------------------------------------------
listen webapps
    bind 192.168.1.138:80
    server web1 127.0.0.1:88 check inter 3000 fall 2 rise 5
    server web2 xxx.xxx.xxx.xxx:xx check inter 3000 fall 2 rise 5
6.启动
# mkdir -p /var/lib/haproxy   //haproxy目录需要手动创建,否则报错。
# haproxy -f /etc/haproxy/haproxy.cfg -d     // 检查配置文件有没有错
# chown 99.99 /var/lib/haproxy/ -R

启动正常的显示的结果:
在这里插入图片描述

# systemctl start haproxy

# ss -ntl           //检查端口

在这里插入图片描述

# systemctl status haproxy           //启动服务

在这里插入图片描述

7.状态验证
# curl 127.0.0.1
curl: (7) Failed connect to 127.0.0.1:80; Connection refused
# curl 192.168.1.138
web server index page 
haproxy主要配置参数
1.haproxy的全局配置
global  :       表示全局配置内容开始
log     :       定义 rsyslog 配置
chroot  :       锁定 haproxy 进程的运行目录 
pidfile :       指定 pid 文件存放路径
maxconn :       指定进程的最大并发连接数
user    :       指定进程的运行者身份
group   :       指定进程的运行组身份
daemon  :       指定进程以守护进程运行
nbproc  :       指定 haproxy 开启的进程数
cpu-map :       1.8 版本以上的 haproxy 指定进程号和指定cpu绑定
nbthread:       指定每个进程所开启的线程数,默认为 1 个
spread-checks:  分散 tcp 健康监测,防止后台服务器数量过多,压力过大,建议 2-5
2.proxies 配置haproxy 所代理的主机配置
- defaults                    :表示代理配置功能开始
- mode  http/tcp              :表示默认采用的代理模式, L4 或者 L7
- log        global           :日志配置
- option     dontlognull      :是否记录空连接日志
- option     http-server-close:开启 http 服务端主动关闭连接功能
- option     forwardfor       :开启 http 转发的 Forwarded-For 报文头功能
- option     redispatch       :当已建立的连接服务器宕机后,强制将用户请求调度到其他健康的服务器
- retries                     :连接失败后的重复尝试连接次数
- timeout http-request        :设置 http 请求最大请求时长
- timeout queue               :连接在等待队列中的最大时长
- timeout connect             :设置等待连接成功的最长时间
- timeout client              :设置客户端不活跃时间
- timeout server              :设置服务器端最大不活跃时间
- timeout http-keep-alive     :设置连接的 keepalive 时间
- timeout check               :设置已连接的连接检查
- maxconn                     :设置前端最大连接数量
3.listten 方式定义代理服务功能
listen:后面配置一个代理名称,配置区分大小写
bind  :定义本格代理中haproxy对外监听的IP地址和端口
server:指定后端被代理的地址和健康检测配置
4.frontend和backend

通过前后端分别定义的方式完成代理配置,建议使用上面的listen方式,示例:

forntend web
        bind 00.000.000.000:00
        use_backend web_server
    
backend web_server
    server 000.000.000.000:00
    server 000.000.000.000:00
5.haproxy.service配置信息

由于 haproxy 通常会配置多个业务和系统的代理配置,将全部配置信息写到一个配置文件中不便于管理,下面我们可以指定一个目录作为配置文件的存放目录,haproxy启动时可以读取目录下的全部配置文件,比如我们创建 /etc/haproxy/conf目录,然后修改 haproxy的启动配置文件,添加该路径

[root@haproxy ~]# vi /usr/lib/systemd/system/haproxy.service

[unit]
Description=HAProxy Load Balancer
After=syslog.target network.target


[Service]
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf -p /var/lib/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID


[Install]
WantedBy=multi-user.target
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HAProxy是一种基于第三应用实现的软负载衡,它可以提供TCP和HTTP应用的负载衡综合解决方案。相比于LVS负载衡,HAProxy具有以下特点: 1. HAProxy支持四层和七层技术,能够实现更灵活的负载衡策略。在七层负载衡模式下,负载衡器与客户端及后端的服务器会分别建立一次TCP连接,而在四层负载衡模式下,仅建立一次TCP连接。 2. HAProxy具有强大的状态监测功能,可以支持多种状态检测方式,包括端口、URL、脚本等。这使得HAProxy能够更精确地检测后端服务器的状态,并根据情况进行动态调度。 3. 虽然HAProxy功能强大,但整体处理性能低于四层模式的LVS负载衡。LVS拥有接近硬件设备的网络吞吐和连接负载能力。 综上所述,HAProxy是一种灵活且功能强大的负载衡解决方案,适用于需要更精细的负载衡策略和强大状态监测功能的场景。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [haproxy原理](https://blog.csdn.net/blogzlh/article/details/80307684)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [MySQL大型分布式集群 龙果学院](https://download.csdn.net/download/yu123456789chao/10595626)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值