HAproxy

目录

前言

一、概述

(一)、概念

(二)、核心功能

(三)、关键特性

(四)、调度算法

(五)、内核配置

二、安装

(一)、编译安装

(二)、建立配置文件

(三)、添加为系统服务

(四)、keepalive+haproxy实现高可用

总结



前言

HAproxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。

一、概述

(一)、概念

    HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上(CentOS、Ubuntu、Debian、OpenSUSE、Fedora、麒麟、欧拉、UOS)。
    HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备丰富的功能。HAProxy具备媲美商用负载均衡器的性能和稳定性。

(二)、核心功能


        负载均衡:L4和L7两种模式,支持RR/静态RR/LC/IP Hash/URI Hash/URL_PARAM Hash/HTTP_HEADER Hash等丰富的负载均衡算法


        健康检查:支持TCP和HTTP两种健康检查模式


        会话保持:对于未实现会话共享的应用集群,可通过Insert Cookie/Rewrite Cookie/Prefix Cookie,以及上述的多种Hash方式实现会话保持


        SSL:HAProxy可以解析HTTPS协议,并能够将请求解密为HTTP后向后端传输


        HTTP请求重写与重定向


        监控与统计:HAProxy提供了基于Web的统计信息页面,展现健康状态和流量数据。基于此功能,使用者可以开发监控程序来监控HAProxy的状态

(三)、关键特性


        采用单线程、事件驱动、非阻塞模型,减少上下文切换的消耗,能在1ms内处理数百个请求。并且每个会话只占用数KB的内存。
        大量精细的性能优化,如O(1)复杂度的事件检查器、延迟更新技术、Single-buffereing、Zero-copy forwarding等等,这些技术使得HAProxy在中等负载下只占用极低的CPU资源。
        HAProxy大量利用操作系统本身的功能特性,使得其在处理请求时能发挥极高的性能,通常情况下,HAProxy自身只占用15%的处理时间,剩余的85%都是在系统内核层完成的。
        HAProxy作者在2009年使用1.4版本进行了一次测试,单个HAProxy进程的处理能力突破了10万请求/秒,并轻松占满了10Gbps的网络带宽。

应用场景
    高并发要求较高的场合下

(四)、调度算法

roundrobin 简单的轮询
static-rr 根据权重
leastconn 最少连接者先处理
source 根据请求的源 IP,类似 Nginx 的 IP_hash 机制
ri 根据请求的 URI
rl_param 根据 HTTP 请求头来锁定每一次 HTTP 请求
rdp-cookie(name) 根据据 cookie(name)来锁定并哈希每一次 TCP 请求

(五)、内核配置

实验环境可有可无,为内核优化配置

net.ipv4.tcp_tw_reuse = 1                                   指定是否在处于TIME-WAIT状态的TCP连接可重用,默认值为0,设置为1表示允许重用                             
net.ipv4.ip_local_port_range = 1024 65023        指定本地端口范围,默认值为32768-60999,这个参数可以用来限制本地端口的范围
net.ipv4.tcp_max_syn_backlog = 10240             指定半连接队列的最大长度,默认值为128,这个参数可以用来调整SYN队列的长度,以便处理大量的连接请求
net.ipv4.tcp_max_tw_buckets = 400000             指定系统允许的最大TIME-WAIT套接字数量,默认值为180000,这个参数可以用来限制TIME-WAIT状态的套接字数量
net.ipv4.tcp_max_orphans = 60000                    指定系统允许的最大孤儿套接字数量,默认值为4096,这个参数用于限制内核中的未完成连接的数量
net.ipv4.tcp_synack_retries = 3                           指定发送SYN-ACK包的重试次数,默认值为5,这个参数用于设置SYN-ACK包的重试次数
net.core.somaxconn = 10000                              指定系统中可以同时排队等待的最大连接数,默认值为128,这个参数用于调整系统中的连接队列长度

二、安装

192.168.238.138

192.168.238.139(web)

192.168.238.140(web)

(一)、编译安装

192.168.238.138

wget https://www.haproxy.org/download/1.7/src/haproxy-1.7.2.tar.gz

tar xf haproxy-1.7.2.tar.gz

cd haproxy-1.7.2

make PREFIX=/usr/local/haproxy TARGET=linux2628(注意大写)

make install PREFIX=/usr/local/haproxy

(二)、建立配置文件

从haproxy的源码包中的examples下的init.haproxy中获得配置文件的路径“/etc/haproxy/haproxy.cfg”(haproxy-1.7.2/examples/init.haproxy)

HAproxy_第1张图片

mkdir /etc/haproxy

vim /etc/haproxy/haproxy.cfg(http为7层负载,可以监控页面;4层负载只需将http改成tcp,但不支持监控状态)

(三)、添加为系统服务

cp /root/haproxy-1.7.2/examples/haproxy.init /etc/init.d/haproxy

vim  /etc/init.d/haproxy

修改: 35行 内容为 BIN=/usr/local/haproxy/sbin/$BASENAME

HAproxy_第2张图片

chmod +x /etc/init.d/haproxy

chkconfig --add /etc/init.d/haproxy

chkconfig haproxy --level 35 on

chkconfig --list 

HAproxy_第3张图片 service haproxy  start

测试

在web服务器中安装Nginx(yum),添加访问文件

139        echo OK > /usr/share/nginx/html/index.html

140        echo HOW > /usr/share/nginx/html/index.html

138里进行访问(页面访问很慢在终端里更方便观察) 

HAproxy_第4张图片

配置监控页面

vim /etc/haproxy/haproxy.cfg插入后重启服务

HAproxy_第5张图片

HAproxy_第6张图片

HAproxy_第7张图片

多刷新访问页面后查看

HAproxy_第8张图片

(四)、keepalive+haproxy实现高可用

在上一实验基础上再加一备用192.168.238.136

192.168.238.138

keepalived配置

yum install -y keepalived

vim /etc/keepalived/keepalived.conf


HAproxy_第9张图片

systemctl start keepalived

HAproxy_第10张图片

192.168.238.136

安装HAproxy、配置、启动

同上面安装操作若出现异常

安装keepalived、配置、启动(修改属性和优先级)

HAproxy_第11张图片

测试

停掉138的keepalived        systemctl stop keepalived     systemctl stop haproxy

查看136的IP                       ip a 

 HAproxy_第12张图片

 

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

你可能感兴趣的:(linux)