squid代理服务器参数及环境部署

一 Haproxy简介

  • 目前常见的Web集群调度器分为软件和硬件
  • 软件:通常使用开源的LVS、Haproxy、Nginx
  • 硬件:一般使用比较多的是F5,也有很多人使用国内的一些产品,如梭子鱼、绿盟(裸金属)等

二 aproxy高可用反向代理服务器

Haproxy调度算法

  • Haproxy群集配置
  • Haproxy日志管理
  • Haproxy参数优化

三 常见的Web集群调度器

目前常见的Web集群调度器分为软件和硬件,软件通常使用开源的LVS、Haproxy、Nginx,硬件一般使用比较多的是F5,也有很多人使用国内的一些产品,如梭子鱼、绿盟等
在这里插入图片描述

3.1功能

一.代理服务器 squid
squid主要提供缓存加速、应用层过滤的功能

3.2代理的工作机制
代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址
将获得的网页数据(静态web元素)保存到缓存中并发给客户机,以便下次请求相同的数据快速响应
3.2 squid代理类型
  • 如果squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端,否则反向代理服务器将向后台的web服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。
  1. 传统代理
    适用于Internet,需要在客户机指定代理服务器的地址和端口
  2. 透明代理
    客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将web访问重定向给代理服务器处理
  3. 反向代理
    如果squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端,否则反向代理服务器将向后台的web服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用地,供下一个请求者使用
    • ① 定义后端真实服务器地址池
    • ② 配置反向代理(部分服务)
    • ③ 设置所需要的分流算法(轮询策略)
    • ④ 是否对流量进行访问控制

squid把一部分的业务流量缓存在本地,在下一次重复请求来的时候直接根据提供数据,不需要再次向真实服务器建立请求连接。

3.3Haproxy的优点
3.3.1 LVS在企业应用中抗负载能力很强,但有以下缺点
  1. LVS不支持正则处理
  2. 不能实现动静分离
  3. 不支持7层
  4. 对于大型网站,LVS的实施配置复杂,维护成本相对较高
3.3.2 Haproxy优点
  1. Haproxy在负载均衡速度和并发处理上是优于Nginx
  2. Haproxy支持虚拟主机,可以工作在4、7层
  3. 能够补充Nginx (ip_ hash) 的一些缺点,比如session的保持、Cookie的引导等工作
  4. 支持以ur1的方式检测后端的服务器的状态
  5. Haproxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡
  6. 支持很多负载均衡算法(丰富),Round-robin (轮询)、weighl-round- robin(加权轮询)、source hashing (原地址保持)、 RI (请求URL)、 rdp-cookie (根 据cookie)
3.4 Haproxy的应用
  • Haproxy是一款可提供高可用性、 负载均衡、及基于TCP和HTTP应用的代理的软件
  • 适用于负载大的Web站点
  • 运行在硬件上可支持数以万计的并发连接的连接请求
3.5 Haproxy调度算法原理
  • Haproxy支持多种调度算法,最常用的有三种
3.5.1 RR(Round Robin)

RR算法是最简单最常用的一种算法,即轮询调度
理解举例:
◆有三个节点A、B、C
◆第一个用户访问会被指派到节点A
◆第二个用户访问会被指派到节点B
◆第三个用户访问会被指派到节点C
◆第四个用户访问继续指派到节点A,轮询分配访问请求实现负载均衡效果

3.5.2 LC (Least Connections)

最小连接数算法,根据后端的节点连接数大小动态分配前端请求
理解举例:
◆ 有三个节点A、B、C,各节点的连接数分别为A:4、B:5、C:6
◆ 第一个用户连接请求,会被指派到A上,连接数变为A:5、B:5、C:6
◆ 第二个用户请求会继续分配到A上,连接数变为A:6、B:5、C:6;再有新的请求会分配给B,每次将新的请求指派给连接数最小的客户端
◆ 由于实际情况下A、B、C的连接数会动态释放,很难会出现一样连接数的情况
◆ 此算法相比较rr算法有很大改进,是目前用到比较多的一种算法

3.5.3 SH (Source Hashing)

基于来源访问调度算法,用于一些有Session会话记录在服务器端的场景,可以基于来源的IP、Cookie等做集群调度
理解举例:

  1. ◆ 有三个节点A、B、C,第一个用户第一次访问被指派到了A,第二个用户第一次访问被指派到了B
  2. ◆ 当第一个用户第二次访问时会被继续指派到A,第二个用户第二次访问时依旧会被指派到B,只要负载均衡调度器不重启,第一个用户访问都会被指派到A,第二个用户访问都会被指派到B,实现集群的调度
  3. ◆ 此调度算法好处是实现会话保持,但某些IP访问量非常大时会引起负载不均衡部分节点访问量超大,影响业务使用

四 安装squid服务

在这里插入图片描述

实验环境:

虚拟机IP
Haproxy服务器Haproxy:192.168.10.130
nginx1服务器nginx01:192.168.10.142
nginx2服务器nginx02:192.168.10.146
4.1主机改名
hostnamectl set-hostname haproxy
su

hostnamectl set-hostname nginx1
su

hostnamectl set-hostname nginx2
 su
4.2 安装和布置haproxy

将包haproxy-1.5.19.tar.gz 上传到/opt/下

[root@haproxy]cd /opt
[root@haproxy opt]#tar zxvf haproxy-1.5.19.tar.gz
[root@haproxy opt]# yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
[root@haproxy opt]# cd haproxy-1.5.19/
[root@haproxy haproxy-1.5.19]# make TARGET=linux2628 ARCH=x86_64  #指定内核版本
[root@haproxy haproxy-1.5.19]# make install

在这里插入图片描述
参数说明:

  • TARGET=linux2628 ##内核版本
    • 使用uname -r 查看内核,如2.6.18-371.e15,此时该参数用TARGET=linux26;kernel大于2.6.28的用TARGET=linux2628
  • ARCH=x86_64 ##系统位数,64位系统
4.3 Haproxy服务器配置【配置文件解析】
[root@haproxy haproxy-1.5.19]# mkdir /etc/haproxy  #在当前目录常见存放配置文件的目录
[root@haproxy haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/
[root@haproxy haproxy-1.5.19]# cd /etc/haproxy/
[root@haproxy haproxy]# vim haproxy.cfg
global
        log /dev/log    local0 info		#修改local0为日志设备,默认存放到系统日志
        log /dev/log    local0 notice
        #log loghost    local0 info
        maxconn 4096			#最大连接数,可以用ulimit -n限制
     chroot /usr/share/haproxy		#将这行注释
        uid 99					#用户UID
        gid 99					#用户GID
        daemon					#守护进程模式
        #debug
        #quiet

defaults
        log     global			#定义日志为global配置中的日志定义
        mode    http			#模式是http
        option  httplog			#采用http日志格式记录日志
        option  dontlognull		#不记录健康检查日志信息
        retries 3				#检查节点服务器失败次数,连续达到三次失败,则认为节点不可用
        redispatch				#当服务器负载很高时,自动结束当前队列处理比较久的连接
        maxconn 2000			#最大连接数
        contimeout      5000	#连接超时时间
        clitimeout      50000	#客户端超时时间
        srvtimeout      50000	#服务器超时时间
#删除多余部分
listen  webcluster 0.0.0.0:80
        option httpchk GET /test.html	#检查服务器的test.html文件
        balance roundrobin		#负载均衡调度算法使用轮询算法
        server  inst1 192.168.10.142:80  check inter 2000 fall 3		#定义在线节点
        server  inst2 192.168.10.146:80  check inter 2000  fall 3
#check inter 2000		检测时间2000
#fall 3				表示连续三次检测不到心跳频率则认为该节点失效

参数详解:

  • balance roundrobin #负载均衡调度算法
    • 轮询算法:roundrobin
    • 最小连接数算法:leastconn
    • 来源访问调度算法:source hashing,类似于nginx的ip_hash
  • check inter 2000 #表示haproxy服务器和节点之间的一个心跳频率
  • fall 3 #表示连续三次检测不到心跳频率则认为该节点失效
    • 若节点配置后带有“backup”表示该节点只是个备份节点,只有主节点失效该节点才会上。不携带“backup”,表示为主节点,和其它主节点共同提供服务

在这里插入图片描述

  • 2 配置nginx端(确保已安装)
4.4 2台web服务器安装httpd服务
netstat -antp | grep 80

在这里插入图片描述
在这里插入图片描述

4.5启动管理Haproxy
[root@haproxy examples]# cd /opt/haproxy-1.5.19/
[root@haproxy haproxy-1.5.19]# cd /opt/haproxy-1.5.19/examples/
[root@haproxy examples]# cp haproxy.init /etc/init.d/haproxy
[root@haproxy examples]# cd /etc/init.d/
[root@haproxy init.d]# ls
functions  haproxy  netconsole  network  README
[root@haproxy init.d]# chmod +x haproxy
[root@haproxy init.d]# chkconfig --add /etc/init.d/haproxy
[root@haproxy init.d]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@haproxy init.d]# service haproxy start
Starting haproxy (via systemctl):                          [  确定  ]

在这里插入图片描述

4.6.编辑测试网页
192.168.10.142:
echo "this is ddd web" > /usr/local/nginx/html/test.html
192.168.10.146:
echo "this is www web" > /usr/local/nginx/html/test.html

在这里插入图片描述
在这里插入图片描述

五 Haproxy 日志管理

修改Haproxy配置文件中关于日志配置的选项,加入配置

log /dev/1oq loac10 info
log /dev/ log 1oca10 notice

修改rsyslog配置,将haproxy相关配置独立定义到haproxy.conf, 并放到/etc/rsyslog.d/下
保存配置文件并重启rsyslog服务,完成rsyslog配置

六 Haproxy参数优化

随着企业网站负载增加,haproxy参数优化相当重要,具体的优化项如下:

1.  maxconn: 最大连接数,根据应用实际情况进行调整,推荐使用10 240
2.  daemon: 守护进程模式;Haproxy可以使用非守护进程模式启动,建议使用守护进程模式启动
3. nbproc:负载均衡的并发进程数,建议与当前服务器CPU核数相等或为其24. retries: 重试次数,主要用于对集群节点的检查,如果节点多,且并发量大,设置为2次或35. option http-server-close: 主动关闭http请求选项, 建议在生产环境中使用此选项
6. timeouthttp-keep-alive:长连接超时时间,设置长连接超时时间,可以设置为10s
7. Limeoul http-requesL: hLLp请求超时时问,建议将此时问设置为5-~10s, 增加http连接释放速度
6. timcout. clicnt: 客户端超时时间,如果访问量过大,节点响应慢,可以将此时间设置短一 些,建议设置为1min左右就可以了

七 小结

常见的web集群调度器分为软件和硬件
LVs性能最好,但是搭建相对复杂;Nginx的upstream模块支持群集功能,但是对群集节点健康检查功能不强,高并发性能没有Haproxy好

  1. Haproxy是一款可提供高可用性、 负载均衡、及基于TCP和HTTP应用的代理的软件
  2. 最常用的调度算法有三种:
    ① RR:轮询调度;
    ② LC:最小连接数算法
    ③ SH:基于来源访问调度算法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值