LAMP架构3-haproxy加pacemaker实现高可用


前言

在ansible使用那块,已经学过基本的haproxy的安装使用ansible角色使用2.2

在企业运维1中我们已经实现IOS模型第四层上的负载均衡与高可用企业运维1
但是存在很多不足

  1. 在大规模网络中应用不足
    各种转发模式;网络拓扑复杂,运维成本高。
  2. 和商用LB设备比较
    缺少TCP标志位DDOS攻击防御。
  3. 主备部署方式不足
    性能无法线性扩展。

本篇内容主要利用haproxy+pacemaker实现在IOS模型第七层的负载均衡与高可用

一、haproxy的详细使用

1.1 实验环境清理

  • 在企业运维1中我们设置了lvs和keepalived,这里需要将server11和server14上的keepalived停止
  • 将server12和server13上的arptables策略删除,并删除vip
  1. 在企业运维1中我们设置了lvs和keepalived,这里需要将server11和server14上的keepalived停止
    在这里插入图片描述
    在这里插入图片描述
  2. 将server12和server13上的arptables策略删除,并删除vip
    在这里插入图片描述
    在这里插入图片描述

1.2 实验环境搭建

  1. 在server11上安装haproxy并配置,重启服务生效。

配置文件如下:

[root@server11 ~]# cat /etc/haproxy/haproxy.cfg 
#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
    
    stats uri /status             ##这里增加后台监控
    stats auth admin:haojin       ##后台监控的用户名和密码

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  main *:80   ##这里改成80端口,记得关闭httpd,不然端口冲突
#    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
    default_backend             app

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
#backend static
 #   balance     roundrobin
  #  server      static 127.0.0.1:4331 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
    balance     roundrobin
    server  app1 1.2.3.12:80 check       #改为rs的ip和端口,这里我是12和13
    server  app2 1.2.3.13:80 check
  #  server  app3 127.0.0.1:5003 check
  #  server  app4 127.0.0.1:5004 check

在这里插入图片描述

1.3 haproxy日志设置

  1. haproxy默认不记录日志,我们需要进行设置

vim /etc/haproxy/haproxy.cfg
在这里插入图片描述

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

vim /etc/rsyslog.conf
在这里插入图片描述在这里插入图片描述
重启日志服务,重启haproxy,查看日志是否生成!

systemctl restart rsyslog.service 
systemctl restart haproxy.service
cat /var/log/haproxy.log

在这里插入图片描述
可以看到我刷新几次页面,日志被记录
在这里插入图片描述

在这里插入图片描述

1.4 给后台监测增加密码

 stats uri /status             ##这里增加后台监控
 stats auth admin:haojin       ##后台监控的用户名和密码

vim /etc/haproxy/haproxy.cfg
在这里插入图片描述
在这里插入图片描述

1.5 haproxy的source模式

介绍
源地址散列调度(Source Hashing Scheduling)算法正好与目标地址散列调度算法相反,它根据请求的源 IP 地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

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

这个效果就是一直是调server12

1.6 default_backend和use_backend的使用

配置文件解释

  • default_backend
    default_backend
    use_backend

在没有匹配的”use_backend”规则时为实例指定使用的默认后端,因此,其不可应用于backend区段。在”frontend”和”backend”之间进行内容交换时, 通常使用”use-backend”定义其匹配规则;而没有被规则匹配到的请求将由此 参数指定的后端接收。

在这里插入图片描述

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

在这里插入图片描述
结果:
在这里插入图片描述

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

1.7 设置黑/白名单及重定向网址

在这里插入图片描述
在这里插入图片描述
结果:
在这里插入图片描述

1.8 redirect location设置默认访问地址

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

结果:
在这里插入图片描述

在这里插入图片描述

1.9 读写操作与读写分离

acl write method POST | PUT

(读的时候是默认的app,在server2上,写的时候的在server3上,
 数据存储在server3上,server2和server3上需要同样的文件,实现读写分离)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
俩个php文件内容

index.php

<html>
<body>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>

</body>
</html>
upload_file.php

<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 2000000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>

http://172.25.13.100/

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

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

二、pacemaker的搭建(集群,没有主辅之分)

2.1 备用机前期的一些简单设置

在这里插入图片描述

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

2.2 pacemaker的配置

下载pacemaker有俩个包需要另一个仓库才可以全部安装成功。
在这里插入图片描述

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

2.3 stonith的设置(fencing设备) (后期看一看)

 网卡坏了,内核坏了也不可能手动去重启网卡,重启电脑。所以需要设置stonith。

 stonith相当于电源交换机,插排,可以发信息告诉stonith需要断开哪个电源(直接断电),
 开启哪个电源,实现了远程自动开关机。

在这里插入图片描述
小知识:

  • Intel支持的虚拟化技术是kvm,AMD支持的是svm
  • 没有kvm和svm之前使用的是qemu技术,半虚拟化。
  • kvm解决的是cpu和memory的问题,而qemu结局的是剩下的问题,一起组成了一个完整的虚拟机。

在这里插入图片描述
对真机的操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

对server1和server4上面的操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
开始配置stonith
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
检测配置了stonith之后的效果

- 可以实现摧毁内核,然后自动重启。
- 注意:如果stonith设备老是自动停止,可能是真机的防火墙和selinux设置问题。
- 可以关闭防火墙,将selinux配置文件改为disabled。

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值