HAProxy

  • 一. HAProxy的基本配置
  • 二. haproxy的优化策略
  • 三. 读写分离
  • 五. haproxy高可用



haproxy和nginx在功能上比较相似,但是又各有不同,接下来我先跟大家阐述这两个方法的区别:

nginx是master-workers多进程,每个进程单线程,多核CPU能充分利用;
haproxy是多线程,单进程就能实现超高性能,虽然haproxy也能多进程,但是网上资料多认为开了多进程也不能提升性能,不建议多进程跑。

即使做反向代理nginx性能略低于haproxy。

各自特点如下:

nginx:

使用花括号,层级化的配置文件结构
除了自带的map、if语句可以实现简单逻辑,原生支持js/perl脚本,非官方支持lua
除了做负载均衡还可以做静态web服务器,缓存服务器(Haproxy不行)
模块化,按需编译,因为模块化,所以可选很多第三方扩展模块
开源版本只有基础功能,更多的功能要折腾第三方模块,或者花钱买官方扩展版的nginx plus

haproxy:

定义和引用,命令式的配置结构
支持acl,但不支持其他脚本语言(评论里有人说现在可以支持了)
做负载均衡性能比nginx好
有一个状态统计页面官方支持会话保持、健康检查等(nginx开源版不带)
基础功能覆盖要比nginx开源版好,但是不易扩展,缺乏第三方资源。

Nginx的优点:
1、优点工作在OSI第7层,可以针对http应用做一些分流的策略
2、Nginx对网络的依赖非常小,理论上能ping通就就能进行负载功能
3、Nginx安装和配置比较简单
4、可以承担高的负载压力且稳定
5、Nginx可以通过端口检测到服务器内部的故障
6、Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器
Nginx的缺点:
1、Nginx不支持url来检测。
2、Nginx仅能支持http和Email,这个它的弱势。
3、Nginx的Session的保持,Cookie的引导能力相对欠缺。
HAProxy的优点:
1、HAProxy是支持虚拟主机的
2、支持url检测后端的服务器
3、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
4、HAProxy可以对Mysql读进行负载均衡,节点检测
5、HAProxy的算法较多

一. HAProxy的基本配置

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx


下载好之后就有了haproxy用户,在以下文件添加该用户

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_02


nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_03

更改haproxy的配置文件:

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_04

添加status,以方便一会查看

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_05

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_06

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_07

更改两个server的ip以及其httpd服务端口:

nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_08

开启haproxy服务:

查看日志,以确定haproxy是否开启成功:

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_09


nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_10

在网页上查看服务状态:


nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_11

红色标注就是服务未开启

开启httpd服务之后,先是黄色填充:

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_12

nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_13

等待一下就变成绿色:

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_14

查看负载均衡的结果:

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_15


nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_16

二. haproxy的优化策略

Haproxy的8种负载均衡算法:

roundrobin,表示简单的轮询
static-rr,表示根据权重,
leastconn,表示最少连接者先处理,
source,表示根据请求源IP,
uri,表示根据请求的URI;
url_param,表示根据请求的URl参数’balance url_param’ requires an URL parameter name
hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

测试:balance source
<一>

先更改配置文件:

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_17

开启acl权限以及静态访问:

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_18

将server服务器只保留一个:

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_19

访问haproxy服务页面:

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_20

在静态访问的ip里上传一张图片以便观察结果:

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_21

当我们访问172.25.2.5的images/vim.jpg时,虽然我们并没有配置server5上的httpd服务,但是会默认访问172.25.2.7上的文件:

nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_22

<二>

更改配置文件:

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_23

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_24

balance roundrobin :haproxy把请求轮流的转发到每一个服务器上,依据每台服务器的权重,此权重会动态调整。最常见的默认配置。

balance source :haproxy按照客户端的IP地址进行负载均衡策略,即同一IP地址的所有请求都发送到同一服务器时,需要配置此选项。

nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_25

停掉server6的httpd服务:

nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_26

此时curl ip ,就只能定位到server7:

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_27

重新开启server6,因为同一IP地址的所有请求都发送到同一服务器,所以一旦检测到服务开启就会继续把之前的ip访问定位到之前的服务器:

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_28

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_29

更改权重:

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_30

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_31

这时curl就会发现,server6出现的次数比server7多:

nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_32

将server5当作backup:

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_33


nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_34

因为80端口开启服务已被占用,为了不冲突,更改端口为8080:

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_35


nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_36

查看一下端口:

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_37

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_38

访问ip,最下栏显示已经配置成功:

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_39

查看实验结果:

停掉server6,7的服务:

nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_40

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_41

curl ip,显示server5:

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_42


配置成功!!!配置访问密码:

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_43

nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_44

需要密码用户访问:

nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_45

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_46

三. 读写分离

为了便于查找日志,排错,需要读写分离:

设置黑名单:

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_47

把真机ip配置到黑名单:

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_48

真机无法访问:

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_49

但是server6可以:

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_50

黑名单重定向:

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_47

让黑名单重定向403错误:

nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_52

curl -I,配置成功:

nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_53

黑名单重定向百度:

nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_54


nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_55


nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_56


nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_57

结合php服务:

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_58


nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_59

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_60


nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_61


nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_62

在server5上添加php服务:

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_63


nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_64

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_65

在server6上配置php上传文件的大小:

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_66


nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_67


nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_68


nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_69


nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_70

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_71


nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_72

server6,7配置相同,直接将server6的文件传过去:

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_73


nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_74

在server5上重新启用roundrobin:

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_75


nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_76

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_77

访问网页:

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_78


在日志上查看现在是app1服务:

nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_79


上传图片:

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_80


nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_81


nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_82

在server7查看upload目录,有上传记录:

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_83


server6上没有:

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_84

五. haproxy高可用

安装pacemaker:

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_85

配置软件仓库:

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_86

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_87


nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_88

做免密协议:

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_89


nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_90


nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_91


nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_92

在server4安装:

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_93

启用服务:

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_94


更改hacluster密码:

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_95


nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_96


nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_97

查看集群是否成功:

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_98


nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_99

显示success就成功:

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_100

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_101

开启server4,5的服务:

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_102


nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_103

查看状态:

nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_104


nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_105

发现有warning:

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_106


设置stonish-enabled为false就好:

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_107

将配置文件传给server4:

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_108


nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_109

访问server4,配置成功:

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_110

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_111

列出资源和提供者:

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_112

配置vip以及监控:

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_113


ip addr配置成功:

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_114

停掉server5的服务:

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_115

再列出就只有server4online:

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_116

开启server5:

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_117

停掉server4,5的haproxy:

nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_118


nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_119


nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_120


nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_121

再再server’4上试着查看服务状态:

nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_122

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_123

将vip加入服务:

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_124


nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_125

此时vip在server4上:

nginx haproxy lvs对比优缺点 nginx haproxy区别_linux_126

重新开启服务:

nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_127


nginx haproxy lvs对比优缺点 nginx haproxy区别_Nginx_128

down掉server4:

nginx haproxy lvs对比优缺点 nginx haproxy区别_负载均衡_129


server4会自动重启

server5上查看服务:

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_130

现在服务由server5接管,并且vip也飘到了server5上:

nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_131


nginx haproxy lvs对比优缺点 nginx haproxy区别_运维_132


nginx haproxy lvs对比优缺点 nginx haproxy区别_nginx_133