文章目录

  • 一.HAproxy负载均衡
  • 1.HAProxy简介
  • 2.与LVS的比较
  • 3.Haproxy调度算法原理
  • 4.
  • 二.配置内容
  • 1.负载均衡调度器
  • 2.节点服务器
  • 三.总结
  • 1.对比集群调度工具Haproxy、LVS和Nginx的区别及工作选择
  • 2.haproxy配置文件重要参数说明
  • 3.四层代理和七层代理


一.HAproxy负载均衡

1.HAProxy简介

HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。HAProxy非常适用于并发大(并发达1w以上) web站点这些站点通常又需要会话保持或七层处理。HAProxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上

2.与LVS的比较

Haproxy是一款可提供高可用性、负载均衡、及基于TCP和HTTP应用的代理软件
• 适用于负载大的web站点

• 运行在硬件上可支持数以万计的并发连接的连接请求

LVS在企业应用中抗负载能力很强,但存在不足
• LVS不支持正则处理,不能实现动静分离

• 对于大型网站,LVS的实施配置复杂,维护成本相对较高

3.Haproxy调度算法原理

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

常用的3种算法原理有roundrobin(轮询) leastconn(最小链接) 和source hash(类似源IP,与nginx的hash机制一样)

4.

二.配置内容

1.负载均衡调度器

systemctl stop firewalld
setenforce 0
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
上传压缩包
tar zxvf haproxy-1.5.19.tar.gz   解压
cd haproxy-1.5.19/  
make 
make install

mkdir /etc/haproxy
cp examples/haproxy.cfg /etc/haproxy/
vim /etc/haproxy/haproxy.cfg
	4行:log /dev/log    local0
	5行:log /dev/log    local1 notice
	
	8行:#chroot /usr/share/haproxy
	26行以下:全部删除
	26-30行:添加节点服务器信息
		listen  webcluster 0.0.0.0:80
        option httpchk GET /index.html
        balance roundrobin
        server inst1 192.168.111.20:80 check inter 2000 fall 3
        server inst1 192.168.111.30:80 check inter 2000 fall 3

cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod +x /etc/init.d/haproxy
ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
service haproxy start

2.节点服务器

systemctl stop firewalld
setenforce 0
 
yum install -y pcre-devel zlib-devel gcc gcc-c++ make
 #编译安装语言环境
useradd -M -s /sbin/nologin nginx
 #创建一个nginx用户
cd /opt
tar zxvf nginx-1.22.0.tar.gz -C /opt/
 
cd nginx-1.22.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install
 
make && make install
 
--192.168.111.10---
echo "this is mcl web" > /usr/share/nginx/html/index.html
 
--192.168.110.10---
echo "this is long web" > /usr/share/nginx/html/index.html
 
ln -s /usr/share/nginx/sbin/nginx /usr/local/sbin/
 
nginx      #启动nginx 服务
 
或者用yum安装
cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
EOF
 
yum install nginx -y

三.总结

1.对比集群调度工具Haproxy、LVS和Nginx的区别及工作选择

区别:
① nginx
支持正则
只支持基于端C1的健康检查
不支持session的直接保持,但能通过IP_ hash来解决
对网络稳定性要求不高
反向代理能力强
nginx社区活跃( 社区:维护、更新服务的组织)、收费社区

② LVS
只能基于四层端口转发
在四层做分发作用,抗负载能力强
应用范围广(几乎可以对所有应用做负载)

③ HAproxy
支持8种负载均衡策略
仅做负载均衡软件使用,在高并发情况下性能优于nginx
支持URL健康检测、支持session保持

工作使用:
HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做
在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大
选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器
配置简单,所以中小型企业推荐使用HAproxy

2.haproxy配置文件重要参数说明

1.全局配置: global 作用: 用于设定义全局参数,属于进程级的配置,通常与操作系统配置有关。
2.默认配置: defaults 作用: 配置默认参数,一般会被应用组件继承。
3.应用组件配置: listen 作用: 一般配置应用模块参数
haproxy支持的最大并发量=并发进程数×每个进程最大连接数,即"nbproc的值 × maxconn的值"

3.四层代理和七层代理

四层是TCP层,使用IP+端口的方式。类似路由器,只是修改下IP地址,然后转发给后端服务器,TCP三次握手是直接和后端连接的。只不过在后端机器上看到的都是与代理机的IP的established而已
7层代理则必须要先和代理机三次握手后,才能得到7层(HTT层)的具体内容,然后再转发。意思就是代理机必须要与client和后端的机器都要建立连接。显然性能不行了,但胜在于七层,能写更多的转发规则。