企业部分实战---用haproxy实现负载均衡及高可用

一、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的组合体.

3.haproxy的安装与负载均衡实现

server1:
    yum install haproxy -y   安装haproxy
    cd /etc/haproxy
    vim haproxy.cfg          编辑haproxy配置文件
    systemctl stop httpd     由于haproxy需要占用80端口,关闭apache防止冲突
    systemctl restart haproxy 
    netstat  -antlp    过滤端口,查看那个服务占用80端口

haproxy配置文件编辑:

haproxy监控的是server3、server4的80端口,此处只需打开他们的httpd
 
server3、server4:
     systenmctl start httpd

测试:

server1:
     curl 172.25.12.1              访问172.25.12.1发现负载均衡已实现
     firefox:172.25.12.1/status     实现监控

在这里插入图片描述
在这里插入图片描述
网页监控:
在这里插入图片描述

关闭server3的httpd服务
在这里插入图片描述

二、haproxy独立日志

1.haproxy独立日志的实现

vim /etc/sysconfig/rsyslog
在这里插入图片描述

    vim haproxy.cfg 
    vim /etc/rsyslog.conf 
    systemctl restart rsyslog.service 
    cat  /var/log/messages 

在这里插入图片描述

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

此时访问172.25.1.2不会再在messages下产生日志,所有关于haproxy的日志都会在haproxy.log下产生
在这里插入图片描述

2.资源固定传输、权重算法+故障处理

2.1资源固定传输算法

vim /etc/haproxy/haproxy.conf

systemctl restart haproxy.service 

在这里插入图片描述

此时访问172.25.12.1只会分配给一个设备
在这里插入图片描述

2.2权重算法

vim /etc/haproxy/haproxy.conf

systemctl restart haproxy.service 

在这里插入图片描述

此时访问172.25.12.1,设备会按权重分配

在这里插入图片描述

2.3故障处理

当server3、server4都检测不到时,我们需要一个背锅侠去告诉客户出现故障了,这里我们就用server1来当背锅侠,具体设置如下:

vim /etc/haproxy/haproxy.conf

systemctl restart haproxy.service 

在这里插入图片描述
配置完成后需要修改各个服务器的httpd端口为相应数值
修改完成后,在server3、server4正常工作时,server1并不会被访问到
在这里插入图片描述

server1:
vi /etc/httpd/conf/httpd.service 
将server1主机中httpd 服务的80端口改为8000端口,然后重启服务
systemctl restart httpd 
echo "sorry,please try again later" > /var/www/html/index.html 给index.html文件中追加内容
systemctl restart haproxy.service    

在这里插入图片描述

此时,server1成功背锅
在这里插入图片描述

2.4访问黑名单+黑名单用户访问重定向

server1:

vim /etc/haproxy/haproxy.conf

systemctl restart haproxy.service 

在这里插入图片描述
此时在除了的主机访问172.25.12.12时都可以正常实现负载均衡
在这里插入图片描述
会自动被定向至报错页面

在这里插入图片描述

也可直接将黑名单用户指定至指定页面:在这里插入图片描述

在这里插入图片描述

三、用haproxy实现动静分离、读写分离、keepalived+haproxy高可用、paramaker+corosync+haproxy高可用

1.用haproxy实现动静分离

server3:
 
yum install -y php
cd /var/www/html/
ls
vim index.php
cat index.php 
  <?php
  phpinfo()
  ?>
vim /etc/httpd/conf/httpd.conf (端口改回80)
systemctl restart httpd
server3:
 
mkdir /var/www/html/images
server1:
 
vim haproxy.cfg 
systemctl restart haproxy.service 

在这里插入图片描述
动态访问:
在这里插入图片描述
静态访问:
在这里插入图片描述

2.用haproxy实现读写分离

server3、4:
 
mkdir /var/www/html/upload
 
cp index.php upload_file.php /upload   将老师准备的php文件移至upload目录中
 
vim upload_file.php    将文件上传大小修改
 
chmod 777 upload
 
mv /upload/*  /var/www/html

此时先在浏览器中直接访问4的index.php,并上传图片。上传后切至目录中查看,发现上传成功
在这里插入图片描述
在这里插入图片描述
下载完毕后删除图片,因为最终我们需要通过haproxy下载图片

server1:
 
vim haproxy.cfg 
systemctl restart haproxy.service 

firefox:172.25.1.2/index.php

在这里插入图片描述

在这里插入图片描述
可见图片上传到了app后端server4.读写分离完成
在这里插入图片描述

3.keepalived+haproxy实现高可用

server2:
yum install haproxy -y
vim /etc/haproxy/haproxy.conf   可直接从server1 scp过来
vim /etc/keepalived/keepalived.conf
scp /etc/keepalived/keepalived.conf server1:/etc/keepalived
vim /opt/check_haproxy.sh
scp /opt/check_haproxy.sh  server1:/opt

server1 keepalived.cfg
在这里插入图片描述
server2 keepalived.cfg
在这里插入图片描述
/opt/check_haproxy.sh


#!/bin/bash
systemctl status haproxy &>/dev/null || systemctl restart haproxy &> /dv/null
 
killall -0 haproxy
 
if [ $? -ne 0 ];then
        systemctl stop keepalived


firefox:172.25.12.100:

在这里插入图片描述
此时若故意写错server1中的keepalived.conf使得server1瘫痪,调度器会自动启用server2,实现haproxy高可用

在这里插入图片描述

4.paramaker+corosync+haproxy高可用

server1、servcer2:
      systemctl stop keepalived.service 
      systemctl start pcsd
      systemctl status pcsd
      pcs cluster start --all
      pcs resource delete webgroup
      pcs resource create haproxy systemd:haproxy op monitor interval=60s
      pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.11.100 op monitor interval=30s
      pcs resource group add webgroup vip haproxy

在这里插入图片描述

在这里插入图片描述

当执行ssh server2 pcs cluster stop 命令以后,server2主机挂掉了,资源被server1接管,不影响使用
在这里插入图片描述

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值