Haproxy服务的配置详解

1.Haproxy介绍:

(1)HAproxy的简单介绍:

1.HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件;适用于负载大的web站点,这些站点通常又需要会话保持或七层处理。它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上
2.HAProxy 实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接;事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。
3.HAProxy 支持连接拒绝 : 因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害,这也是其他负载均衡没有的优点
4.HAProxy 支持全透明代理(已具备硬件防火墙的典型特点): 可以用客户端IP地址或者任何其他地址来连接后端服务器.

(2)HAproxy配置文件详解

配置文件主要分为5部分:

global:全局变量的参数,属于进程配置,通常与操作有关
defaults:配置默认参数,这些参数可以被用到frontend,backend,Listen组件
frontend:接收请求的前端虚拟节点,Frontend可以更加规则直接指定具体使用后端的backend:后端服务集群的配置,是真实服务器,一个Backend对应一个或者多个实体服务器
Listen :frontend和backend的组合体

2.Haproxy负载均衡的配置

实验环境
Haproxy服务器 172.25.33.1(server1)
后端服务器:172.25.33.2(server2)
172.25.33.3(server3)

(1)下载软件

yum install haproxy -y

#查看安装包 rpm -qa haproxy
#查看安装目录 rpm -ql haproxy
#会生成haproxy用户

在这里插入图片描述
在这里插入图片描述
(2)修改配置文件

vim /etc/haproxy/haproxy.cfg
systemctl start haproxy

在这里插入图片描述
在这里插入图片描述
(3)后端服务器的操作:

server2和server3下载httpd
并添加默认发布页面
yum install httpd
vim /var/www/html/index.html
systemctl restart httpd

在这里插入图片描述
在这里插入图片描述
(4)测试:curl 172.25.33.1,观察能否实现负载均衡

curl 172.25.33.1

在这里插入图片描述

3.Haproxy配置日志存放位置

(1)修改/rsyslog日志文件

vim /etc/rsyslog.conf

15 $ModLoad imudp
16 $UDPServerRun 514
75 local2.*                       /var/log/haproxy.log

systemctl restart rsyslog.service

在这里插入图片描述
在这里插入图片描述
(2)测试,观察日志存储位置:

使用其他主机访问 curl 172.25.33.1

此时,可以在172.25.33.1的主机上查看:

vim /var/log/haproxy.log

在这里插入图片描述

4.添加服务器监控页面

(1)修改haproxy配置文件,并重启

vim /etc/haproxy/haproxy.cfg

 stats uri           /admin/stats     #打开监控页面
 monitor-uri         /monitoruri      #显示返回的状态码

systemctl restart haproxy.service

在这里插入图片描述
(2)测试:

浏览器查看 172.25.33.1/admin/stats   后端服务器监控页面。当一个服务器挂掉以后,该行会变红
172.25.33.1/monitoruri   查看访问页面的状态码

在这里插入图片描述
在这里插入图片描述
(3)给该访问页面添加管理用户,并设置刷新页面时间5秒:修改配置文件并重启

vim /etc/haproxy/haproxy.cfg

 61         stats auth  admin:westos
 62         stats refresh 5s

systemctl restart haproxy.service

在这里插入图片描述
(4)测试用户管理:浏览器访问172.25.33.1/admin/stats 会出现管理用户登陆页面,并且5秒刷新一次
在这里插入图片描述
在这里插入图片描述

5. 设置拒绝连接设置

(1)修改配置文件,并重启:

vim /etc/haproxy/haproxy.cfg

frontend  main 
    bind *:80
        acl blcaklist src 172.25.33.250
        http-request deny if blacklist
        #errorloc 403
    default_backend webserver

systemctl restart haproxy.service

在这里插入图片描述
(2)直接浏览器刷新以后 为403forbidden
在这里插入图片描述
(3)现在设置,当访问拒绝以后,转到其他地方
vim /etc/haproxy/haproxy.cfg

frontend  main 
    bind *:80
     acl blacklist src 172.25.33.250
     http-request deny if blacklist
     errorloc 403 http://172.25.33.1:8080/index.html  会转到本机的8080端口
     default_backend webserver

在这里插入图片描述
本机下载httpd

 yum install httpd
 vim /var/www/html/index.html   
waiting

vim /etc/httpd/conf/httpd.conf


修改端口号 因为haproxy使用了80,所以改httpd为8080

Listen 8080

重启并测试:

systemctl restart httpd

浏览器访问172.25.33.1   会看到waiting

在这里插入图片描述

6.Haproxy的动静分离

(1)修改配置文件,并重启

在server1上:
frontend  main  
    bind *:80 


    use_backend dynamic if { path_end .php } 
 
    default_backend static 

backend dynamic 
    balance     roundrobin 
    server      web1 172.25.33.2:80 check 
 
backend static 
    balance     roundrobin 
    server      web2 172.25.33.3:80 check


systemctl restart haproxy.service

在这里插入图片描述
(2)server2和server3的操作:

下载php 并写入默认发布页面
server2:
<?php
phpinfo()
?>

server3:
server3

因为新加了php插件,需要重新加载httpd
systemctl restart httpd

在这里插入图片描述
在这里插入图片描述
(3)测试:

浏览器访问分别访问:

172.25.33.1/index.php
172.25.33.1

在这里插入图片描述
在这里插入图片描述

6.Haproxy的读写分离

(1)server1中修改配置文件,并注释掉动静分离:

acl read method HEAD
acl read method GET
acl write method POST
acl write method PUT

use_backend dynamic if write

use_backend static if read

重启haproxy httpd

在这里插入图片描述

(2)现在有两个用来测试动静分离的页面,放到server2和server3的/var/www/html目录下

[root@server2 html]# ls
index.html  index.php  upload_file.php upload
[root@server3 html]# ls
index.html  index.php  upload_file.php upload
[root@server3 html]# 


修改上传文件大小
[root@server2 html]# vim upload_file.php
修改第五行为2000000

scp -r index.php upload upload_file.php server3:/var/www/html

在这里插入图片描述

修改服务器名称:
[root@server2 html]#vim index.php
修改第五行为server2


同样在server3中修改vim index.php
修改第五行为server3

在这里插入图片描述
在这里插入图片描述
(3)测试:访问http://172.25.33.1/index.php 读操作一直为server3,点击上传图片 ,在server2 /var/www/html/upload中会有图片存在

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值