linux————haproxy

一、概述

        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作者在8年前(2009)年使用1.4版本进行了一次测试,单个HAProxy进程的处理能力突破了10万请求/秒,并轻松占满了10Gbps的网络带宽。

应用场景

        高并发要求较高的场合下

二、安装

一、环境内核配置

可有可无(vim /etc/sysctl.conf)

net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65023
net.ipv4.tcp_max_syn_backlog = 10240
net.ipv4.tcp_max_tw_buckets = 400000
net.ipv4.tcp_max_orphans = 60000
net.ipv4.tcp_synack_retries = 3
net.core.somaxconn = 10000

二、编译安装

wget https://www.haproxy.org/download/1.7/src/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”
mkdir /etc/haproxy
touch /etc/haproxy/haproxy.cfg

添加系统服务

vim  /etc/init.d/haproxy
chmod +x /etc/init.d/haproxyd
chkconfig --add /etc/init.d/haproxy

添加3和5运行级别下自启动

chkconfig haproxy --level 35 on
chkconfig --list 

 配置文件

三、 启动haproxy

 service haproxy  start
service haproxy  stop
service haproxy  restart  | reload
systemctl  daemon-reload

也可以使用systemctl 启动

配置web

安装epel-release                yum install -y epel-release 

安装nginx                            yum install -y  nginx 

修改配置文件 并启动           echo   nginx1 > /usr/share/nginx/html/index.html  (web1)

                                             echo   nginx2 > /usr/share/nginx/html/index.html  (web1)

                                            systemctl start nginx 

 四、调度算法

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

五、负载均衡

一、七层负载

配置负载

global 
    daemon  
    maxconn 256  
    pidfile /var/run/haproxy/haproxy.pid   
defaults 
    mode http  
    timeout connect 5000ms  
    timeout client 50000ms  
    timeout server 50000ms 
frontend http-in 
    bind *:8080  
    default_backend servers  
backend servers 
    server server1 127.0.0.1:8000 maxconn 32  
    server server2 127.0.0.1:8090 maxconn 32

配置监控页面

listen stats    #定义监控页面    
bind *:1080                   #绑定端口1080    
stats refresh 30s             #每30秒更新监控数据    
stats uri /stats              #访问监控页面的uri    
stats realm HAProxy\ Stats    #监控页面的认证提示    
stats auth admin:admin        #监控页面的用户名和密码

 

 二、四层负载

配置负载

global 
    daemon  
    maxconn 256  
    pidfile /var/run/haproxy/haproxy.pid  
defaults 
    mode tcp
    timeout connect 5000ms  
    timeout client 50000ms  
    timeout server 50000ms 
frontend http-in 
    bind *:8080  
    default_backend servers  
backend servers
    balance  roundrobin  #轮询
    #balance  source     #保持会话 
    server server1 127.0.0.1:8000 maxconn 32  
    server server2 127.0.0.1:8090 maxconn 32

六、keepalived+haproxy高可用

haproxy配置

(需要两台haproxy  配置内容一致)

global 
    daemon  
    maxconn 256  
    pidfile /var/run/haproxy/haproxy.pid  
defaults 
    mode http  
    timeout connect 5000ms  
    timeout client 50000ms  
    timeout server 50000ms 
frontend http-in 
    bind *:80 
    default_backend servers  
backend servers 
    server server1 192.168.115.128:80 maxconn 32  
    server server2 192.168.115.131:80  maxconn 32

配置keepalived

yum install -y  keepalived

vim  /etc/keepalived/keepalived.conf

global_defs {
   router_id LVS_DEVEL
}
#HAProxy健康检查配置
vrrp_script chk_haproxy {
    script "killall -0 haproxy"  #使用killall -0检查haproxy实例是否存在,性能高于ps命令
    interval 2   #脚本运行周期
    weight 2   #每次检查的加权权重值
}

vrrp_instance HA_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.115.200
    }
    track_script {
        chk_haproxy        #对应的健康检查配置
    }
}

 

 测试

 虚拟ip监控页面

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/54030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无涯教程-PHP.INI File Configuration函数

PHP配置文件php.ini是影响PHP功能的最终且最直接的方法。每次初始化PHP时都会读取php.ini文件。换句话说,无论是模块版本的httpd重新启动还是CGI版本的每次脚本执行都重新启动。如果未显示您的更改,请记住停止并重新启动httpd。 该配置文件已注释完整。键区分大小写,关键字值不…

python实现的淘宝自动发货脚本

pyhton # 文件用ini # 自动应答,自动点发货

leetcode496. 下一个更大元素 I 【单调栈】

【简单题】&#xff08;暴力遍历法很简单&#xff09;但是时间复杂度很高&#xff0c;n的立方级别了。。。 代码&#xff1a; class Solution { public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {vector<int&g…

gitee远程仓库——Git常用远程仓库托管服务

远程仓库 我们的代码不能总是放在本地&#xff0c;因为总是放在本地&#xff0c;一旦电脑出现故障&#xff0c;数据将丢失&#xff0c;怎么共享呢&#xff1f;这里我们需要一个服务器&#xff0c;我们可以把代码放到服务器上&#xff0c;然后让别人下载&#xff0c;这样我们既…

k8s-dashboard使用指导手册

一、访问 dashboard http://172.66.209.101:32001 二、选择 Namespace 如下图&#xff1a; 1 在①搜索框中输入 spms 2 在②选择 spms-cloud 三、查找 pod 1 打开 pod 列表 2 打开过滤窗口 3 搜索 pod 在打开的搜索框中输入 pod的关键字&#xff0c;支持模糊搜索 如搜索…

“石头剪刀布”游戏:while、函数自调用实现循环游戏

if…else实现“石头剪刀布”游戏&#xff0c;while、函数自调用实现循环游戏。 (本笔记适合学过if…else的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c…

ArcGIS学习总结(19)——要素转点与空间连接(属性表字段映射)

1.在新创建的面矢量数据的属性表中没有对应的字段信息&#xff0c;为了能够和有属性信息的数据进行匹配&#xff0c;使其具有对应字段的信息。 2.需要匹配的矢量文件属性表信息。 3.对新创建的矢量文件执行要素转点&#xff1a;数据管理工具→要素→要素转点。 4.选择分析工…

Docker安装MySQL、Redis如何自启?

1、问题&#xff1a; Docker自启&#xff1a;http://t.csdn.cn/L2v55 重新启动虚拟机&#xff0c;Docker自动启动之后&#xff0c;发现MySQL、Redis都没有启动。 docker ps 没查到有启动的容器。 docker ps -a 查看所有的容器。 2、先使用 su root 命令&#xff0c;切换到root…

小程序如何手动变更会员卡等级

有时候需要商家手动变更会员卡等级&#xff0c;以让会员获取更多的福利和特权。下面就介绍一些小程序手动变更会员卡等级的常见方法和策略。 1. 找到指定的会员卡。在管理员后台->会员管理处&#xff0c;找到需要更改等级的会员卡。也支持对会员卡按卡号、手机号和等级进行…

盖雅工场获评2023年度苏州市服务型制造示范企业(平台)

苏州市工信局公布 2023年度苏州市服务型制造示范企业&#xff08;平台&#xff09;名单 遴选出服务型制造示范企业34家 服务型制造示范平台19个 苏州盖雅信息技术有限公司 “劳动力管理SaaS云平台服务” 获评2023年度苏州市服务型制造示范平台 全市唯一获评的人力资源服务…

7.接着跑一下triton官方教程

5.Model Ensemble 在此示例中&#xff0c;我们将探索使用模型集成来仅通过单个网络调用在服务器端执行多个模型。这样做的好处是减少了在客户端和服务器之间复制数据的次数&#xff0c;并消除了网络调用固有的一些延迟。 为了说明创建模型集成的过程&#xff0c;我们将重用第…

C#__使用Thread启动线程和传输数据

class Program{static void Test(){Console.WriteLine("Start……");Thread.Sleep(2000); // 1s等于1000ms&#xff0c;暂停2sConsole.WriteLine("end");}static void Download(Object ob){string str ob as string; // 遍历传递过来的ob字符串Console.Wr…

[MySQL]主从服务器布置

配置主服务器 配置文件 /etc/my.cnf 在[mysqld]下进行配置 log_binON //启动二进制日志 log-bin mysql-bin //启用二进制日志&#xff0c;用于记录主服务器的更新操作 server-id 1 // 用来表示mysql服务id,保证集成环境中的唯一性 , 范围 [1,2^32) read-only0 // 1表示只…

爬虫逆向实战(二十二)--某恩数据电影票房

一、数据接口分析 主页地址&#xff1a;某恩数据 1、抓包 通过抓包可以发现数据接口是API/GetData.ashx 2、判断是否有加密参数 请求参数是否加密&#xff1f; 无请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 通过查看“响应”模块可以发现&#xff0c;响应是…

左耳朵耗子:TCP 的那些事儿(下)

原文地址&#xff1a;https://coolshell.cn/articles/11609.html 这篇文章是下篇&#xff0c;所以如果你对TCP不熟悉的话&#xff0c;还请你先看看上篇《TCP的那些事儿&#xff08;上&#xff09;》 上篇中&#xff0c;我们介绍了TCP的协议头、状态机、数据重传中的东西。但是T…

不用循环数组,js+html实现贪吃蛇

功能描述&#xff1a;每走10步随机改变一个方方向&#xff0c;当键盘按下方向键 w,s,a,d时&#xff0c;使用键盘方向控制蛇的移动&#xff0c;蛇头每撞到一次自身时改变屏幕颜色&#xff0c;蛇头碰到边界时从另一边回来。 实现思路&#xff1a;用个30大小的数组存放每个结点&a…

【C语言】喝汽水问题

大家好&#xff01;今天我们来学习C语言中的喝汽水问题&#xff01; 目录 1. 题目内容&#xff1a; 2. 思路分析 2.1 方法一 2.2 方法二 2.3 方法三 3. 代码实现 3.1 方法一 3.2 方法二 3.3 方法三 1. 题目内容 喝汽水&#xff0c;1瓶汽水1元&#xff0c;2个空瓶可以…

fastadmin后台表格新增tab选项卡不生效问题

官方一张图解析表格列表功能文档&#xff1a;(一张图解析FastAdmin中的表格列表的功能 - FastAdmin问答社区) 会遇到后期手动添加tab栏的情况 首先&#xff0c;需要在控制器对应的index.html页面中需要增加你想要筛选的字段 <div class"panel-heading">{:bui…

Gitlab服务部署及应用

第四阶段 时 间&#xff1a;2023年8月21日 参加人&#xff1a;全班人员 内 容&#xff1a; Gitlab服务部署及应用 目录 一、Gitlab简介 二、Gitlab工作原理 三、Gitlab服务构成 四、Gitlab的优点 五、Gitlab环境部署 &#xff08;一&#xff09;安装部署 &#xf…

ARM开发,stm32mp157a-A7核中断实验(实现按键中断功能)

1.实验目的&#xff1a;实现KEY1/LEY2/KE3三个按键&#xff0c;中断触发打印一句话&#xff0c;并且灯的状态取反&#xff1b; key1 ----> LED3灯状态取反&#xff1b; key2 ----> LED2灯状态取反&#xff1b; key3 ----> LED1灯状态取反&#xff1b; 2.分析框图: …