文章目录
- 一.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和后端的机器都要建立连接。显然性能不行了,但胜在于七层,能写更多的转发规则。