目录
前言
一、概述
(一)、概念
(二)、核心功能
(三)、关键特性
(四)、调度算法
(五)、内核配置
二、安装
(一)、编译安装
(二)、建立配置文件
(三)、添加为系统服务
(四)、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)
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
chmod +x /etc/init.d/haproxy
chkconfig --add /etc/init.d/haproxy
chkconfig haproxy --level 35 on
chkconfig --list
测试
在web服务器中安装Nginx(yum),添加访问文件
139 echo OK > /usr/share/nginx/html/index.html
140 echo HOW > /usr/share/nginx/html/index.html
在138里进行访问(页面访问很慢在终端里更方便观察)
配置监控页面
vim /etc/haproxy/haproxy.cfg插入后重启服务
多刷新访问页面后查看
在上一实验基础上再加一备用192.168.238.136
192.168.238.138
keepalived配置
yum install -y keepalived
vim /etc/keepalived/keepalived.conf
systemctl start keepalived
192.168.238.136
安装HAproxy、配置、启动
同上面安装操作若出现异常
安装keepalived、配置、启动(修改属性和优先级)
测试
停掉138的keepalived systemctl stop keepalived systemctl stop haproxy
查看136的IP ip a
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。