Haproxy集群是基于应用层,可以根据客户端的访问来识别不同的发服务,LVS集群是基于传输层,需要在LVS服务器上指定好相应的端口,才能访问
举例说明:如有有两组服务器,一组服务器提供视频,另外一组服服务器提供音频,在这样的情况下,要能够同时实现对这两组服务器的负载均衡,则LVS集群实现不了,要用Haproxy才能实现
Haproxy就是基于应用层的负载均衡集群
搭建环境:
将html服务器和php服务器当成是提供两种不同服务的服务器集群
ip地址分配:
html服务器1:192.168.1.11
yum -y install mariadb-server php php-mysql mariadb
cd /var/www/html
touch index.html test.html test.php
html服务器2:192.168.1.12
yum -y install mariadb-server php php-mysql mariadb
cd /var/www/html
touch index.html test.html test.php
php服务器1:192.168.1.14
yum -y install mariadb-server php php-mysql mariadb
cd /var/www/html
touch index.html test.html test.php
php服务器2:192.168.1.15
yum -y install mariadb-server php php-mysql mariadb
cd /var/www/html
touch index.html test.html test.php
Haproxy服务器:192.168.1.10
客户端:192.168.1.13
一、使用Haproxy服务部署LB集群
1、更具客户端访问的业务类型,在不同的服务器组之间做负载均衡
配置haproxy服务器
安装软件包
[root@Haproxy ~]# yum -y install haproxy
/etc/haproxy/haproxy.cfg-----------------------配置文件 路径
[root@Haproxy ~]# cp /etc/haproxy/haproxy.cfg /opt/------------备份配置文件
[root@Haproxy ~]# vim /etc/haproxy/haproxy.cfg
3 frontend wenblb 192.168.1.10:80-------------------------Haproxy服务IP,当访问该IP地址的80端口时,进行下面的acl筛选
64 acl htmlpath path_end -i .html--------------访问的是以.html结尾的这一类服务,命名为htmlpath
65 acl phppath path_end -i .php--------------访问的是以.php结尾的这一类服务,命名为phppath
67 use_backend htmlgrp if htmlpath-------------如果来访问的服务匹配的是htmlpath,则把该服务交给htmlgrp 处理
68 use_backend phpgrp if phppath--------------如果来访问的服务匹配的是phppath,则把该服务交给phpgrp处理
69 default_backend htmlgrp --------------------如果来访问的服务没有匹配到任何acl,则把该服务默认交给htmlgrp处理
71 backend htmlgrp---------------------------------------------定义htmlgrp的后端(真实提供应用)的服务器IP地址组
72 balance roundrobin-----------------------------------表示用轮询的方式
73 server web11 192.168.1.11:80 check--------------提供应用的服务器IP地址 check表示检测应用服务器的存活状态
74 server web12 192.168.1.12:80 check
76 backend phpgrp
77 balance roundrobin
78 server php14 192.168.1.14:80 check
79 server php15 192.168.1.15:80 check
当访问192.168.1.10:80时,下做acl筛选,如果访问时是以.html结尾的这一类服务命名为htmlpath,
配置文件定义的名字可以随便写,没有特定要求
启动服务:
[root@Haproxy ~]# systemctl restart haproxy
2、实现LB集群
把接收到访问网站请求平均发给4台网站服务器,不根据业务区分
listen webser-rewrite 192.168.1.10:80-------------------------------------------------------------webser-rewrite集群名,Haproxy服务器IP地址
cookie SERVERID rewrite----------------------------------------------------------------------记录cookie ID
balance roundrobin--------------------------------------------------------------------------------轮询的方式负载均衡
server web11 192.168.1.11:80 cookie app11 check inter 2000 rise 2 fall 5-------web11服务名字,应用服务器IP地址,app11是cookie名字,2s检查一次,重试2次,重试5次后不再重试
server web12 192.168.1.12:80 cookie app12 check inter 2000 rise 2 fall 5
server web14 192.168.1.14:80 cookie app14 check inter 2000 rise 2 fall 5
server web15 192.168.1.15:80 cookie app15 check inter 2000 rise 2 fall 5
名字可以任意起,没有限制
3、cookies插入
一个客户端的多次链接请求分发给同一台服务器