Rocky9系统实现haproxy负载集群、调度算法、监控页、ACL访问控制

  • 实验主要内容

①:理解网站架构拓展的基本思路

②:实现haproxy负载均衡集群

③:实现haproxy的调度算法、监控页、ACL访问控制。

  • 实验环境与准备

5拍完快照配置好的linux主机,一台100作为haproxy服务器,一台110作为客户端,一台120作为客户端,一台130作为客户端,一台140作为客户端

四、实验分析与设计思路

建议基于画图、思维导图等模式,结合文字描述,写的清晰、明了、得体

DNS和DHCP提供基础服务,ansible等自动化运维平台能够帮助我们更好的进行办公,大大提高工作效率,在访问网站时,通过Internet入口进行一系列的访问流程,包括接入层、web服务器,业务服务层,中间件层,数据库层,存储层,基础架构,网络层。

在接入层有API网关、负载均衡,让访问变得更合理,更有效,VPN可以实现翻墙,让通信更便捷,jumpserver堡垒机跨地域进行办公方便高效。Web服务器apache和nginx是非常常用的静态资源服务器,业务服务层的php、Java、python、go等等也是非常常用的后端服务。

中间件层Redis给mysql做缓存,kafka,rabbitmq消息队列:1、实现异步,可以跨机房;2削峰,不让大流量把服务器压垮;3、解耦(低耦合性是结构良好程序的特性,低耦合性程序的可读性及可维护性会比较好),Zookeeper端口注册,mycat数据库解耦

数据库层有MySQL,postgreSQL,mogodb,存储层有DAS,NAS,SAN,以及当前主流的对象存储OSS,基础机构物理机和KVM,OpenStack基于KVM的产品,是一些主流公有云厂商的虚拟化解决方案,最主要以IaaS为主,提供一些虚拟服务的

vSphere是基于VMware的产品,和OpenStack功能相似

KVM、OpenStack、vSphere侧向于IasS,docker,docker-compose、k8s侧向于PaaS,公有云是PaaS,IasS都做,SaaS也做

在此网络架构中,LBhaproxy负载均衡就是10.100主机,后面的各种主机各司其职,每个主机负责不同的任务,ww---10.110是php动态资源服务,10.120---static是静态资源服务包括文本html,css级联样式表等,10.130---images作为图片资源服务,10.140---upload作为上传资源服务。

五、详细实验过程

1、实现haproxy负载均衡集群

①实现负载均衡,首先我们先在10.100上安装haproxy    yum -y install haproxy

然后进行haproxy.cfg文件的配置,vim /etc/haproxy/haproxy.cfg

使用此命令检查语法haproxy -c -f /etc/haproxy/haproxy.cfg

ss -tnlp 查看80端口是监听在haproxy上的

然后我们在10.110和10.120上分别安装httpd服务,并且打开ServerName,在网页根路径编写网页yum -y install httpd

两个主机均进行vim /etc/httpd/conf/httpd.conf,打开ServerName(目的是让启动服务更快)

都要在网页根路径编写网页,vim /var/www/html/index.html,Server-1是110,Server-2是120

两个httpd都启动服务

我们进行访问网页,192.168.10.100,成功进行轮询访问,负载均衡效果达到

②我们在进行一下动态和静态前端的配置,10.88是需要添加到eth0中

检查语法是否有错,没有问题

添加一下10.88的ip,ip a a 192.168.10.88/24 dev eth0

然后我们将10.130中安装httpd,并且打开ServerName,vim /etc/httpd/conf/httpd.conf

编写10.130的网页vim /var/www/html/index.html

编写完之后启动httpd服务systemctl start httpd

我们访问192.168.10.88就能看到指定的网页资源

这样就实现了多前端多后端分区架构

③修改内核参数haproxy实现监听不存在的ip

在haproxy.conf中添加一个不存在的ip

检查语法haproxy -c -f /etc/haproxy/haproxy.cfg  语法没问题

然后echo 'net.ipv4.ip_nonlocal_bind = 1' >> /etc/sysctl.conf

接着sysctl -p  最后重启服务systemctl restart haproxy  

ip a 查看有无10.250,并不存在10.250,说明ip是不存在的

查看端口ss -tnl是有10.250在的,说明成功监听不存在的ip

④实现指定四层tcp和七层http模式的配置,要将default中的mode注释,因为后面还要在前端和后端中添加mode

前端分别使用七层http和四层tcp

后端也需要对应上前端的http和tcp

进行网页访问,192.168.10.100和192.168.10.88,其中10.100是进行负载均衡轮询的,10.88是绑定在server-3上的

2、实现haproxy的调度算法、监控页、ACL访问控制。

①balance调度算法source,源地址hash---consistent:一致性hash动态绑定主机ip

vim /etc/haproxy/haproxy.cfg

检查语法并重启服务,警告并不影响服务正常运行

然后浏览器和curl分别访问一下,确实邦死了,刷新都是一个页面

②根据uri进行目的地址绑定,目的hash是为了提高缓存命中率vim /etc/haproxy/haproxy.cfg

在server-1和server-2上使用循环语句分别创建10个网页,内容区分,server-1为web1,server-2为web2

for i in {1..10};do echo "<h1> page $i in Web1</h1>" > /var/www/html/test$i.html; done

我们重启haproxy服务,然后访问一下192.168.10.100/test1.html,无论访问多少次,或者后面的用户访问test1.html,访问的页面都是这个web1

访问一个新的test3.html,访问绑定到web2,也是同样的道理,无论其他用户访问test3.html多少次也都是web2

③使用hdr实现根据浏览器类型进行访问         vim /etc/haproxy/haproxy.cfg

微软浏览器访问结果为server-1,是绑死的

谷歌浏览器访问结果为server-1,是绑死的

使用虚拟机模拟IE浏览器访问结果为server-2,是绑死的

④实现健康监控检测----备机 在server后面加上backup,这个节点就变成了备机,只有当主节点停服的时候,备机才能提供服务

无论如何访问和刷新,都只会显示主节点

这个时候我们停止主节点服务,然后再次访问,备机就顶上来了,然而主机启动服务之后,备机就会退出,主机继续工作

⑤redir启用重定向功能,weight:权重,默认为1,最大值256,0表示不参与负载均衡

vim /etc/haproxy/haproxy.cfg   修改完重启服务systemctl restart haproxy

初始页面为server-2

再次刷新之后重定向跳转到指定网页

⑥定义状态监控页属性------listen   vim /etc/haproxy/haproxy.cfg

配置完成之后记得重启服务

systemctl restart haproxy

进行网页访问,输入用户名和密码登录

登录之后的网页就是这样了,在里面我们可以用鼠标点击让服务进行下线和上线

ACL访问控制

10.110安装php,yum -y install php php-fpm php-gd

编写index.php,启动php-fpm服务

网页访问看看,正常

upload主机安装httpd和php php-fpm php-gd编写

yum -y install php php-fpm php-gd,编写index.php网页,访问看看,成功了

在images主机中的网页根路径添加图片

在haproxy配置文件中配置 vim /etc/haproxy/haproxy.cfg

检查语法并重启服务

在html网页根路径创建static目录,将index.html网页移到static中

在浏览器访问一下192.168.10.100/static

尝试一下在index.html中添加一张图片,然后访问试试,成功的

实现上传功能,将脚本移到upload主机中,index.php脚本放到php主机中,在html中创建一个upload目录,并且给他写权

upload_file脚本放到upload中,index.php放到php中

网页访问尝试一下

可以看到上传成功

上传成功!!!

  • 实验结果及分析

要求:对于原理的解析,出错如何排错的,需要记忆的关键点

在进行访问网页时,我忘记启动httpd服务,导致访问老是失败,还好还好,查看端口之后就正常了,还有在访问网页时,他自动访问的是index.html,而我想访问的index.php,然后就又出了错,我加上了后缀index.php就成功了,还是要细心,不可粗心大意啊!

  • 总结

这次的实验主要还是要懂得haproxy的原理和各种算法,总体上并不难,但是需要很细致,可能某个错误就是因为某个服务没启动导致的。

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我变秃了也没变强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值