HAProxy——监控管理HAProxy服务器的负载均衡、 添加日志、动静分离、页面重定向、读写分离

一、HAProxy(单核)是什么?

HAProxy是一款提供高可用性、负载均衡以及基于 TCP(第四层) 和 HTTP(第七层) 应用的代理软件, 支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy 特别适用于那些负载特大的 web 站点, 这些站点通常又需要会话保持或七层处理。HAProxy 运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的 web 服务器不被暴露到网络上。

二、监控管理haproxy服务器的负载均衡

实验环境

主机名 IP 服务
虚拟机server1 172.25.7.1 haproxy,httpd,代理服务器
虚拟机server2 172.25.7.2 httpd,php,后端服务器
虚拟机server3 172.25.7.3 httpd,php,后端服务器
物理机 172.25.7.250 测试端

搭建一个基本的haproxy服务器

1、在 server1 上面搭建HAProxy服务器,安装haproxy服务 yum install haproxy -y
在这里插入图片描述
查看该服务的版本
在这里插入图片描述
2、更改配置文件:vim /etc/haproxy/haproxy.cfg

 listen admin *:8080
       stats enable
       stats uri /status  		# 监控页面地址
       stats auth admin:westos  # 管理帐号和密码
       stats refresh 5s  		#刷新频率


listen  ranran *:80      		#监听的实例名称,地址和端口 
        balance roundrobin      #负载均衡算法
        server web1 172.25.7.2:80 check
        server web2 172.25.7.3:80 check

在这里插入图片描述

3、在server1上开启haproxy服务

在这里插入图片描述
在这里插入图片描述
4、在 server2和server3 上,安装httpd服务且配置web资源。

 1)yum install httpd -y
 2)vim /var/www/html--》server2/server3
 3)systemctl start httpd  

在这里插入图片描述

在这里插入图片描述

5、在物理机测试:curl 172.25.7.1,实现了负载均衡

在这里插入图片描述

在物理机浏览器里面测试,进入监控页面:172.25.7.1:8080/status
在这里插入图片描述

宕掉server3
在这里插入图片描述

在这里插入图片描述
监控页面立马会显示
在这里插入图片描述

server3的服务重启
在这里插入图片描述
监控页面又显示正常

在这里插入图片描述

三、给haproxy服务器添加日志

1、更改日志监控的配置文件:vim /etc/rsyslog.conf

在这里插入图片描述

$ModLoad imudp     #接受 haproxy 日志
$UDPServerRun 514

*.info;mail.none;authpriv.none;cron.none;local2.none     /var/log/messages
local2.*                       /var/log/haproxy.log   #日志文件位置

在这里插入图片描述在这里插入图片描述 2、重启haproxy和rsyslog服务

在这里插入图片描述
3、查看日志在这里插入图片描述

四、动静态访问分离

1、更改配置文件:vim /etc/haproxy/haproxy.cfg,重启服务。

frontend  ranran *:80
    acl url_static       path_beg       -i  /images   (以/images开头 默认根目录)
    acl url_static       path_end       -i .jpg .gif .png (以.jpg .gif .png结尾)

    use_backend static   if url_static
    default_backend  	 app  

backend static  
       server web2 172.25.7.3:80 check

backend app
       server web1 172.25.7.2:80 check
	   server local 172.25.7.1:8000 backup

在这里插入图片描述

在这里插入图片描述

2、在server3的httpd服务的默认发布目录里,新建images目录,放置.jpg的图片。

在这里插入图片描述

3、在server1上安装httpd服务,且更改httpd服务的工作端口为8000,添加web服务的资源
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5、当我访问静态资源的时候,服务器去找server3
在这里插入图片描述

五、页面重定向

5.1 403错误页面重定向

1、更改配置文件:vim /etc/haproxy/haproxy.cfg,重启服务。

frontend  ranran *:80
    acl url_static       path_beg       -i  /images   
    acl url_static       path_end       -i .jpg .gif .png  
	acl badhost  src  172.25.7.250  ##设定物理机不能访问server1 
    block if badhost
    errorloc 403 http://172.25.7.1:8000 ##注意端口不要冲突,如果是403错误就重定向到 172.25.7.1:8000
    use_backend static          if url_static
    default_backend  app
backend static
		server web2 172.25.7.3:80 check
backend app
		server web1 172.25.7.2:80 check
       

在这里插入图片描述

在这里插入图片描述

2、更改server1的web页面
在这里插入图片描述

在这里插入图片描述

3、在物理机测试:172.25.7.1:8000
在这里插入图片描述

5.2 任何错误页面重定向

1、更改配置文件:vim /etc/haproxy/haproxy.cfg,重启服务。

frontend  ranran *:80
    acl url_static       path_beg       -i  /images   
    acl url_static       path_end       -i .jpg .gif .png  
	acl badhost  src  172.25.7.250   
 	redirect location http://172.25.7.1:8000 if badhost #如果出现错误访问就重定向,无论什么错误 
    use_backend static          if url_static
    default_backend  app
backend static
		server web2 172.25.7.3:80 check
backend app
		server web1 172.25.7.2:80 check
       

在这里插入图片描述

2、为了实验效果明显更改server1的web页面

在这里插入图片描述

在这里插入图片描述

3、在物理机测试:172.25.7.1:8000
在这里插入图片描述

5.3 301永久重定向

  • 301 redirect: 301 代表永久性转移(Permanently Moved);302 redirect: 302 代表暂时性转移(Temporarily Moved ),ps:这里也顺带记住了两个比较相近的英语单词(permanently、temporarily)
  • 详细来说,301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)——这是它们的共同点。他们的不同在于。301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。

此时我们在物理机测试,发现是302临时重定向
在这里插入图片描述

1、更改配置文件:vim /etc/haproxy/haproxy.cfg,重启服务。

frontend  ranran *:80
    acl westos.org  hdr_beg(host) -i westos.org  
    acl 172.25.7.1  hdr_beg(host) -i 172.25.7.1   
	redirect code 301 location http://www.westos.org if westos.org
     ###以westos.org访问 自动重定向 www.westos.org)
    redirect code 301 location http://www.westos.org if 172.25.7.1
     ###以172.25.7.1访问 自动重定向 www.westos.org)  
    use_backend static          if url_static
    default_backend  app
 	server web1 172.25.7.2:80 check
       

在这里插入图片描述
2、在物理机浏览器测试:
以172.25.7.1访问 自动跳转到 www.westos.org
在这里插入图片描述

在这里插入图片描述

以westos.org访问 自动跳转 www.westos.org

在这里插入图片描述

在这里插入图片描述

六、Haproxy的读写分离

1、给server2和server3安装php : yum install php -y
在这里插入图片描述

2、给server2和server3的默认上传目录权限:chmod 777 upload

在这里插入图片描述

3、更改配置文件:vim /etc/haproxy/haproxy.cfg,重启服务。

    acl read method GET      
    acl read method HEAD     ##两个read write 只用一个就行
    acl write method PUT
    acl write method POST
	use_backend app       if write  
    default_backend  static   
  backend static  
       server web2 172.25.7.3:80 check

  backend app
       server web1 172.25.7.2:80 check
	   server local 172.25.7.1:8000 backup  

在这里插入图片描述

在这里插入图片描述

4、在物理机浏览器测试:172.25.7.1/index.php在这里插入图片描述
客户端上传.jpg图片
在这里插入图片描述

在这里插入图片描述
就会发现上传到server2

在这里插入图片描述

发布了102 篇原创文章 · 获赞 21 · 访问量 5332

猜你喜欢

转载自blog.csdn.net/ranrancc_/article/details/102791409
今日推荐