代码编织梦想

实验环境:
物理机 用于测试访问 172.25.254.67
haproxy服务器 172.25.254.1
后端 server2 172.25.254.2
后端 server3 172.25.254.3

haproxy的部署

rhel 7.6的系统中有自带的haproxy,我们也可以去官网下载:
https://www.haproxy.org/

 yum install haproxy -y
 [root@server1 ~]# id haproxy
uid=188(haproxy) gid=188(haproxy) groups=188(haproxy)
会自动生成haproxy用户。

它的配置文件在 /etc/haproxy/haproxy.cfg
大致有一下几个模块,global,defaults,frontend main *:5000,backend。

我们做一下更改:
在这里插入图片描述
将请求转发给两台后端。
物理机测试访问:
在这里插入图片描述
实现了反向代理和负载均衡。

haproxy的配置

查看状态和监控;

[root@server1 ~]# vim /etc/haproxy/haproxy.cfg

在这里插入图片描述
访问:
在这里插入图片描述
可以看到我们两台后端的状态,相当于我们的后台。

在这里插入图片描述
200OK 可以知道这个服务是正常的,用于监控。

后台访问权限控制

    stats auth          admin:westos               用户认证,帐号为admin  密码为westos
    stats refresh       5s						页面刷新间隔 5s

在这里插入图片描述
在这里插入图片描述
这样的话就会需要输入密码才能登陆,且5s刷新一次。

日志

[root@server1 ~]# vim /etc/haproxy/haproxy.cfg

在这里插入图片描述
每个应用都有自己的日志.我们配置haproxy时它告诉我们要去配置系统的日志。

[root@server1 ~]# vim /etc/rsyslog.conf

打开udp模式:
在这里插入图片描述
设置地址:
在这里插入图片描述
重启rsyslog服务.
在这里插入图片描述
发现里面已经记录了访问的信息,系统就会把haproxy的日志信息记录到 /var/log/haproxy.log 。

黑名单

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可见我们的物理机被拒绝,用其他的ip地址访问可以。
我们也可以把 block 替换为 http-request deny,效果相同:
在这里插入图片描述
我们还可以将403错误页面转接至本机的8080端口:
安装apache,修改配置文件端口为8080端口,启动httpd,并配置一个index.html页面:
在这里插入图片描述
重启haproxy,测试访问:
在这里插入图片描述
刚才的403页面就变成了8080端口的页面。

请求分发

设置一个动态页面的资源组,上面的static为静态组:

vim /etc/haproxy/haproxy.cfg

在这里插入图片描述
当访问以php结尾的页面使用dynamic 资源组,默认使用static资源组.

在server3 主机安装php,并配置一个php页面

yum install php -y

在这里插入图片描述
测试访问:
在这里插入图片描述
在这里插入图片描述
可见默认访问到了server2上,当访问以php结尾的页面时访问的时dynamic 的主机组,就是server3.

读写分离

给server2 页安装php。
在server2 和server3 的/var/ww/html 目录下建立两个php页面.
在这里插入图片描述
upload 的权限为777 不然 haproxy 用户不可写。

index.php:
在这里插入图片描述
upload_file.php:
在这里插入图片描述
index.php 会读取upload_file.php的动作,会把上传的文件上传到 upload目录下。

更改server1 的haproxy 配置:

vim /etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  main *:80
    acl read method HEAD
    acl read method GET                定义读的两种方法
    acl write method POST
    acl write method PUT				定义写的两种方法,都可以。

#    acl url_static       path_beg       -i /static /images /javascript /stylesheets
#    acl url_static       path_end       -i .jpg .gif .png .css .js
#
#    use_backend static          if url_static
    #acl blacklist src 172.25.254.99
    #http-request deny if blacklist 
    #errorloc 403 http://172.25.254.1:8080/index.html

    use_backend dynamic if write            写的时候使用dynamic资源组
    use_backend static if read				读的时候使用static资源组
    default_backend             static

在这里插入图片描述
读的时候读的是 static 组。
我们可以测试该server2的index.php;
在这里插入图片描述
在测试访问:
在这里插入图片描述
可见读取的就是server2 主机。

我们选择上传daolian.jpg ,然后点击submit提交,
在这里插入图片描述
这时 server3 的upload目录下出现了图片,而server2 没有
在这里插入图片描述
在这里插入图片描述

这样就实现了读写分离。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/thermal_life/article/details/106013567

文件编码格式转换 dos2unix unix2dos-爱代码爱编程

Task: Convert DOS file to UNIX format Type the following command to convert file called myfile.txt:$ dos2unix myfile.txt However above command will not make a backup of original

shell脚本学习——随机数、嵌套循环、shift位移、expect自动应答、推送公钥-爱代码爱编程

一、随机数 echo $RANDOM 默认产生0~32767随机整数 echo $[$RANDOM%2] 产生0~1之间的随机数 echo $[$RANDOM%3] 产生0~2之间的随机数 echo $[$RANDOM%4] 产生0~3之间的随机数 echo $[$RANDOM%10] 产生0~9之间的随机数 echo $[$RANDOM%9

ZYNQ BOOT.bin 的制作方法-爱代码爱编程

ZYNQ BOOT.bin 的制作方法 参考地址:(防丢失)ZYNQ之uboot,kernel,设备树,文件系统生成。[dts]Device Tree机制 1、FSBL.elf :SDK生成的FSBL(first stage boot loader) 2、your_design.bit :用户设计文件 3、u-boot.elf : (Linux boo

Docker镜像的导入与导出docker save和docker load-爱代码爱编程

来源自github:docke从入门到实践 Docker 提供了 docker save 和 docker load 命令,用以将镜像保存为一 个文件,然后传输到另一个位置上,再加载进来。这是在没有 Docker Registry 时 的做法,现在已经不推荐,镜像迁移应该直接使用 Docker Registry,无论是直接使 用 Docker Hub

制作U盘启动安装centos6.5-爱代码爱编程

制作U盘启动安装centos6.5 材料准备 centos6.5镜像文件容量为8G的U盘一个(看自己安装镜像文件的大小而定)UItraISO软件(一款功能强大而又方便实用的光盘映像文件制作/编辑/转换工具,它可以直接编辑ISO文件和从ISO中提取文件和目录,也可以从CD-ROM制作光盘映像或者将硬盘上的文件制作成ISO文件)操作步骤 步骤1 打开U

linux搭建svn-爱代码爱编程

linux搭建svn 1. 安装2. 配置2.1 配置passwd2.2 配置authz2.3 配置svnserve.conf3. 启动与终止服务4. 连接4.1 安装tortoise客户端4.2 连接svn服务器5. 相关操作5.1 修改端口6. 参考文档 1. 安装 yum install subversion 2. 配置

日志查询+数据库查询+转义+ha设置日志+ls看文件+svn+chattr修改文件属性-爱代码爱编程

ps:每个脚本都应该在文件开头加上set -e,这句语句告诉bash如果任何语句的执行结果不是true则应该退出 查询日志 for i in `seq 2 2 8`;do grep 'heroNum' /home/log/999900000$i.log.2020_04_19 ;done >>/tmp/heroNum19.log mongo查

Haproxy的实现(负载均衡、访问控制、读写分离)-爱代码爱编程

文章目录 1.Haproxy的介绍与安装1.1 Haproxy的介绍1.2 Haproxy的安装2.Haproxy的功能实现2.1 Haproxy的负载均衡2.2 Haproxy查看后端服务器的状态2.3 Haproxy的日志配置2.4 Haproxy的访问控制2.5 Haproxy的请求精确定位(动静分离)2.6 Haproxy的读写分离 1

HAproxy七层负载均衡部署、权限控制、添加程序日志、设置黑名单、动静分离、读写分离-爱代码爱编程

一、HAproxy介绍 HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当

企业 安装配置haproxy-爱代码爱编程

HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的

企业—haproxy七层负载均衡-爱代码爱编程

1.什么是haproxy? haproxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性,负载均衡,以及基于TCP和HTTP的应用程序代理。haproxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。haproxy运行在当前的硬件上完全可以支持数以万计的并发连接,并且他的运行模式使得他可以很简单安全的整合进你当前的

HAProxy介绍、编译安装、服务配置参考、检测配置、调度算法、IP穿透、基于cookie保持session、负载均衡4层与7层的区别-爱代码爱编程

HAProxy介绍 HAProxy是法国开发者Willy Tarreau开发的一个开源软件,是一款具备高并发、高性能的TCP和HTTP负载均衡器,尤其适合于高可用性高并发环境。支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态统计。 官网: http://www.haproxy.org https://www.haproxy.com