欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

荐 Haproxy Haproxy+Nginx负载均衡实战

程序员文章站 2022-04-15 16:59:44
Haproxy概述ha-proxy是一款高性能的负载均衡软件。因为其专注于负载均衡这一些事情,因此与nginx比起来在负载均衡这件事情上做更好,更专业。Haproxy的特点ha-proxy 作为目前流行的负载均衡软件,必须有其出色的一面。下面介绍一下ha-proxy相对LVS,Nginx等负载均衡软件的优点。•支持tcp / http 两种协议层的负载均衡,使得其负载均衡功能非常丰富。•支持8种左右的负载均衡算法,尤其是在http模式时,有许多非常实在的负载均衡算法,适用各种需求。•性....

荐
                                                        Haproxy Haproxy+Nginx负载均衡实战

 

Haproxy概述


ha-proxy是一款高性能的负载均衡软件。因为其专注于负载均衡这一些事情,因此与nginx比起来在负载均衡这件事情上做更好,更专业。

 

Haproxy的特点


ha-proxy 作为目前流行的负载均衡软件,必须有其出色的一面。下面介绍一下ha-proxy相对LVS,Nginx等负载均衡软件的优点。•支持tcp / http 两种协议层的负载均衡,使得其负载均衡功能非常丰富。

•支持8种左右的负载均衡算法,尤其是在http模式时,有许多非常实在的负载均衡算法,适用各种需求。•性能非常优秀,基于单进程处理模式(和Nginx类似)让其性能卓越。

•拥有一个功能出色的监控页面,实时了解系统的当前状况。

•功能强大的ACL支持,给用户极大的方便。

 

Haproxy算法


1.roundrobin 基于权重进行轮询,在服务器的处理时间保持均匀分布时,这是最平衡,最公平的算法.此算法是动态的,这表示其权重可以在运行时进行调整.

2.static-rr 基于权重进行轮询,与roundrobin类似,但是为静态方法,在运行时调整其服务器权重不会生效.不过,其在后端服务器连接数上没有限制

3.leastconn 新的连接请求被派发至具有最少连接数目的后端服务器.

 

Haproxy Nginx环境介绍(基于Centos7.x)


Server1

192.168.179.101

Haproxy

Server2

192.168.179.102

Web Server Nginx1

Server3

192.168.179.104

Web Server Nginx2

 

Haproxy的安装


#Centos7环境下安装你的haproxy软件
[root@master ~]# yum install epel* haproxy -y

#我这里不演示keepalived,后面博客演示,这里只有一台haproxy,没有backup haproxy
[root@localhost ~]# hostnamectl set-hostname master  192.168.179.101 haproxy

 

Nginx安装部署


#192.168.179.103  104上部署Nginx
systemctl stop firewalld && setenforce 0
wget -c http://nginx.org/download/nginx-1.16.1.tar.gz 
mv nginx-1.16.1.tar.gz  /usr/src/
cd /usr/src/
tar xf nginx-1.16.1.tar.gz 
cd nginx-1.16.1
yum install -y gcc pcre pcre-devel openssl openssl-devel gd gd-devel
./configure --prefix=/usr/local/nginx
make && make install
/usr/local/nginx/sbin/nginx 

#修改主机名
[root@localhost ~]# hostnamectl  set-hostname real-server1 192.168.179.103 nginx
[root@localhost ~]# hostnamectl  set-hostname real-server2 192.168.179.104 nginx

#为了负载均衡结果更加清晰展示,修改html页面内容
[root@real-server1 ~]# /usr/local/nginx/sbin/nginx -s reload
[root@real-server1 ~]# echo "this is http server nginx 192.168.179.103" > /usr/local/nginx/html/index.html 
[root@real-server1 ~]# vim /usr/local/nginx/conf/nginx.conf
keepalive_timeout  0;

[root@real-server2 ~]# vim /usr/local/nginx/conf/nginx.conf
keepalive_timeout  0;
[root@real-server2 ~]# echo "this is http server nginx 192.168.179.104" > /usr/local/nginx/html/index.html 
[root@real-server2 ~]# /usr/local/nginx/sbin/nginx -s reload

 

Haproxy配置配置文件


[root@master ~]# cat /etc/haproxy/haproxy.cfg
global
    log         127.0.0.1 local2 info
    pidfile     /var/run/haproxy.pid
    maxconn     4096  
    user        haproxy
    group       haproxy
    daemon               
    nbproc 1         
defaults
    mode                    http   
    log                     global
    retries                 3  
    option                  redispatch 
    maxconn                 4000 
    timeout connect         5000 
    timeout client          5000  
    timeout server          5000
    timeout check           5000
listen stats
    bind            *:81
    stats                       enable
    stats uri               /haproxy  
    stats auth              lulei:123 
     log         127.0.0.1 local2 err
     stats                  admin if TRUE
     stats                  hide-version
     stats                  refresh 30s
frontend  web
    mode                    http  
    bind                            *:80  
    option                  httplog     
    option                  forwardfor
    option                  httpclose
    log                     global
    acl html url_reg  -i  \.html$  
    use_backend httpservers if  html 
    default_backend    httpservers   
backend httpservers   
    balance     roundrobin 
    option      redispatch
    option      abortonclose
    cookie      SERVERID
    server  http1 192.168.179.103:80 maxconn 2000 cookie server1 weight 1  check inter 1s rise 2 fall 2
    server  http2 192.168.179.104:80 maxconn 2000 cookie server2 weight 1  check inter 1s rise 2 fall 2

 

Haproxy配置详解


global部分:

global
    log         127.0.0.1 local2 info
    pidfile     /var/run/haproxy.pid
    maxconn     4096  
    user        haproxy
    group       haproxy
    daemon               
    nbproc 1

□ log:全局的日志配置,local0是日志设备,info 表示日志级别。其中日志级别有err、
warning、info、debug四种可选。这个配置表示使用127.0.0.1上的rsyslog服务中
的local0日志设备,记录日志等级为 info

log指定收集哪个机器的log,log的收集是通过系统工具来实现的,在centos6版本之前以syslog来收集日志,6版本变为了rsysylog。这些都是用于收集系统的日志,local 0指定设备,info表示输出日志的级别,error级别是在报错的时候才会输出。info只要有正常信息都会进行输出


口 maxconn:设定每个haproxy进程可接受的最大并发连接数,此选项等同于Linux命令行选项"ulimit -n"

maxconn:可接受的最大并发连接数(不是最大连接数),注意是针对haproxy进程来说的,相当于操作系统的ulimit -n,如果设置了maxconn 4096,那么linux ulimit -n 也要设置为大于等于4096

口 user/group:设置运行haproxy进程的用户和组,也可使用用户和组的uid和gid值来替代


口 nbproc:设置HAProxy启动时可创建的进程数,此参数要求将 HAProy运行模式设
置为"daemon",默认只启动一个进程。根据使用经验,该值的设置应该小于服务器的CPU核数。创建多个进程能够减少每个进程的任务队列,但是过多的进程可能会导致进程的崩溃。

nbproc 1            #工作进程数量  cpu内核是几就写几
这个参数重要,设置haproxy启动的进程数。默认值是1,默认启动一个进程,如果访问量比较大需要将该值增加,这个值大小一般建议设置小于服务器cpu的核数,这个核数是物理核不是逻辑核,如两个4核cpu那就是8个核,也就是这个值最多设置为8,而不是通过超线程来实现。
创建过多的进程并不一定会有好的效果,进程数不能太大,也不能太小,最大不要超过cpu核数


nbproc 1            #工作进程数量  cpu内核是几就写几
这个参数重要,设置haproxy启动的进程数。默认值是1,默认启动一个进程,如果访问量比较大需要将该值增加,这个值大小一般建议设置小于服务器cpu的核数,这个核数是物理核不是逻辑核,如两个4核cpu那就是8个核,也就是这个值最多设置为8,而不是通过超线程来实现

创建过多的进程并不一定会有好的效果,进程数不能太大,也不能太小,最大不要超过cpu核数


口 pidfle:指定haproxy进程的pid文件,启动进程的用户必须有访问此文件的权限

 

Haproxy 日志的配置


两台机器都配置haproxy的日志:需要打开注释并添加 (如果有backup,backup上面也需要配置)

[root@master ~]# vim /etc/rsyslog.conf 
# Provides UDP syslog reception  #由于haproxy的日志是用udp传输的,所以要启用rsyslog的udp监听
$ModLoad imudp
$UDPServerRun 514

找到  #### RULES ####   下面添加
local2.*                       /var/log/haproxy.log


[root@master ~]# systemctl restart rsyslog
[root@master ~]# systemctl restart haproxy
[root@master ~]# tail -f /var/log/haproxy.log    #实时查看日志
Jul 15 05:00:13 master systemd: Stopping HAProxy Load Balancer...
Jul 15 05:00:13 master haproxy-systemd-wrapper: haproxy-systemd-wrapper: exit, haproxy RC=0
Jul 15 05:00:13 master systemd: Started HAProxy Load Balancer.
Jul 15 05:00:13 master systemd: Starting HAProxy Load Balancer...
Jul 15 05:00:13 localhost haproxy[16683]: Proxy stats started.
Jul 15 05:00:13 localhost haproxy[16683]: Proxy web started.
Jul 15 05:00:13 localhost haproxy[16683]: Proxy web started.
Jul 15 05:00:13 localhost haproxy[16683]: Proxy httpservers started.
Jul 15 05:00:15 localhost haproxy[16684]: Connect from 192.168.179.4:57940 to 192.168.179.101:81 (stats/HTTP)

 

 

测试是否配置成功查看结果


荐
                                                        Haproxy Haproxy+Nginx负载均衡实战

荐
                                                        Haproxy Haproxy+Nginx负载均衡实战

荐
                                                        Haproxy Haproxy+Nginx负载均衡实战

 

 

本文地址:https://blog.csdn.net/qq_34556414/article/details/107364506

相关标签: Haproxy