一、Haproxy的理解

   Haproxy是一个使用c语言编写的自由开发源代码软件,它提供高可用性、负载均衡、以及基于http和tcp的应用程序代理。

   Haproxy特别使用于那些负载特别大的web站点,这些站点通常需要会话或七层处理。Haproxy运行再当前的硬件上,完全可以支持数以万计的并发连接。并且他的运行模式使得它可以很简单安全的整合进当前的架构中,同时也可以保护我们的web服务器不被暴露再网络上。

二、haproxy的安装配置和负载均衡

   1)首先在server1中下载haproxy的源码包,解压

   --->  yum install rpm-build  -y       # 安装rpmbuild命令

   --->  rpmbuild  -tb haproxy-1.4.26.tar.gz   # 建立haproxy的二进制软件包

   --->  cd rpmbuild/RPMS/x86_64

   --->  rpm  -ivh  haproxy-1.4.26-1.x86_64.rpm       # 安装haproxy软件包

   --->  rpm  -ql  haproxy      # 查看软件相关文件的路径

   2)生成haproxy的配置文件

   --->  cd  /root/

   --->  tar  zxf  haproxy-1.4.24.tar.gz          # 解压压缩包。

   --->  cd  haproxy-1.4.26/examples

    --->  cp  conten-sw-sample.cfg  /etc/haproxy/haproxy.cfg   # 若目录haproxy不存在,新建即可

    3)创建haproxy用户,并修改配置文件

   --->  useradd  haproxy

   --->  vim  /etc/haproxy/haproxy.cfg

  global

          maxconn         10000       # 最大连接数

          stats socket    /var/run/haproxy.stat mode 600 level admin

          log             127.0.0.1 local0

          uid             haproxy         # 此处为新建的haproxy用户的信息

          gid             haproxy 

          chroot          /var/empty

          daemon

  defaults

          mod             http

          log             global

          option          httplog

          option          dontlognull

          monitor-uri     /monitoruri

          maxconn         8000

          timeout client  30s

          option  prefer-last-server

          retries         2

          option  redispatch

          timeout connect 5s

          timeout server  5s

  frontend public

          bind             *:80 name clear     # 默认haproxy的端口号为1080

          #bind            192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem

          #mode            http

          default_backend dynamic

  backend dynamic    # 默认使用的后端服务集群

          balance         roundrobin        # 负载均衡的算法为rr

          server          statsrv1 172.25.2.2:80 check inter 1000   # 后端服务器

          server          statsrv2 172.25.2.3:80 check inter 1000

   4)修改内核最大文件数

   --->  vim  /etc/security/limits.conf         # 在最后一行输入以下内容

         haproxy     -     nofile    10000

   5)启动服务,测试haproxy是否安装成功

   --->  /etc/init.d/haproxy   start

   --->  netstat  -antlp| grep  1080         # 查看1080端口是否可用

   6)在真机中进行负载均衡的测试,轮询的方式(端口号自己可以在配置文件中修改)

   7)对后端服务器的管理和页面数据的监控

   8)172.25.31.6/monitoruri #网站健康检测URL,用来检测HAProxy管理的网站是否可以用,正常返回200 

三、基于tcp和http的应用程序代理

   (一)动态页面和静态页面的分离

   1、在server1中的httpd默认发布目录中编写文件index.html(server2);在server3中http默认发布目录编写文件index.php

   ---> yum install -y php php-mysql          # 在server3中安装php动态页面

   ---> vim /vat/www/html/index.php  

   --->  /etc/init.d/httpd  restart

   2、在haproxy的配置文件中修改访问动态页面和静态页面

   --->  vim  /etc/haproxy/haproxy.cfg               # 在之前的基础上做如下修改

   3)在浏览器中进行测试

   # 动态访问server3的index.php界面

   # 静态访问的server2中的发布文件

   (二)修改haproxy的日志文件

   1)修改日志服务配置文件从而修改日志存储位置

   --->  vim /etc/rsyslog.conf           # 修改三处

   --->  /etc/init.d/rsyslog   restart      # 重启日志服务

   2)启动haproxy服务,生成日志,并查看

   --->  /etc/init.d/haproxy  restart

   --->  cat  /var/log/haproxy.log          # 查看日志

   (三)访问控制

   1)修改配置文件,添加访问控制的主机

   --->  vim /etc/haproxy/haproxy.conf      # 添加黑名单,在blacklist中的主机均不可以访问(可写ip亦可写网段)

   --->  /etc/init.d/haproxy  restart

   2)在浏览器中测试情况如下:

   3)重定向(当250访问时,重定向到server1中)

   --->  vim  /etc/haproxy/haproxy.conf        # 打开httpd服务

   --->  /etc/init.d/haproxy   reload

   --->  /etc/init.d/httpd  start

   4)测试结果如下
  

   (四)读写分离

   1)在server1中编写配置文件

   --->  vim  /etc/haproxy.haproxy.conf            # 当进行上传操作,转到server3

   --->  /etc/init.d/haproxy  reload

   2)在server2和server3中安装php,把上传脚本放在http默认发布目录,在server3中建立load目录,存放上传图片。(要设置权限)

   3)上传图片(注意图片的格式)

   # 上传成功,在upload目录中查看:

四、corosync+pacemaker实现haproxy的高可用

   1)首先在server4中安装haproxy服务。操作步骤与server1相同。配置好的结果为:

   2)在server1和server4中,开启corosync服务 (可以关闭haproxy服务)

   --->  /etc/init.d/corosync  start

   3)在crm中添加haproxy服务(首先删除之前的nginx服务和web组)

   # 添加haproxy服务并创建组,把ip和haproxy添加进去

  # 再另一端监控情如下:

   4)当节点server4的corosync关闭时,资源自动切换到server1上。

   # 真机中一直是可以显示的。

   5)当server1的主机挂掉的时候,由于fence服务是启动的,所以,server1可以自动开启,并加入可用节点中。

Haproxy的负载均衡和高可用配置的更多相关文章

  1. 本文介绍如何使用 Docker Swarm 来部署 Nebula Graph 集群,并部署客户端负载均衡和高可用

    本文作者系:视野金服工程师 | 吴海胜 首发于 Nebula Graph 论坛:https://discuss.nebula-graph.com.cn/t/topic/1388 一.前言 本文介绍如何 ...

  2. HAProxy+keepalived+MySQL 实现MHA中slave集群负载均衡的高可用

    HAProxy+keepalived+MySQL实现MHA中slave集群的负载均衡的高可用 Ip地址划分: 240    mysql_b2 242    mysql_b1 247    haprox ...

  3. net core 实战之 redis 负载均衡和"高可用"实现

    net core 实战之 redis 负载均衡和"高可用"实现 1.概述 分布式系统缓存已经变得不可或缺,本文主要阐述如何实现redis主从复制集群的负载均衡,以及 redis的& ...

  4. Keepalived+LVS+Nginx负载均衡之高可用

    Keepalived+LVS+Nginx负载均衡之高可用 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常 ...

  5. nginx负载均衡+keepalived高可用

    nginx负载均衡+keepalived高可用 环境准备 192.168.88.111:nginx + keepalived   MASTER 192.168.88.112:nginx + keepa ...

  6. dubbo服务层面上的负载均衡和高可用

    dubbo上的服务层可以做集群,来达到负载均衡和高可用,很简单,只需要在不同的服务器节点上向同一个zk(内网环境)注册相同的服务 注意就是,消费者不能在同一个zk做这种集群操作的 转载请注明博客出处: ...

  7. HAProxy+Keepalived+PXC负载均衡和高可用的PXC环境

    HAProxy介绍 反向代理服务器,支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服 ...

  8. asp.net core 实战之 redis 负载均衡和"高可用"实现

    1.概述 分布式系统缓存已经变得不可或缺,本文主要阐述如何实现redis主从复制集群的负载均衡,以及 redis的"高可用"实现, 呵呵双引号的"高可用"并不是 ...

  9. TCP接入层的负载均衡、高可用、扩展性架构

    一.web-server的负载均衡 互联网架构中,web-server接入一般使用nginx来做反向代理,实施负载均衡.整个架构分三层: 上游调用层,一般是browser或者APP 中间反向代理层,n ...

随机推荐

  1. mysql 数据操作 单表查询 where约束 between and or

    WHERE约束 where字句中可以使用: 比较运算符:>< >=  <=  != between 80 and 100 值在80到100之间   >=80  <= ...

  2. maven运行junit用例并生成报告

    原文地址https://blog.csdn.net/hdyrz/article/details/78398964 测试类如下: [java] view plain copypackage com.mm ...

  3. 手游精品时代,iClap参会TFC高效解决手游问题

    随着“互联网+”概念的广泛应用,文娱类产品跨界融合的现象日益明显,不再以孤立的形态出现在市场中.移动游戏作为泛娱乐产业链的变现末端和关键环节,在传统游戏和VR/AR.HTML5.机器人.智能设备等新业 ...

  4. Eclipse中如何查看使用的JDK版本

    有两种方法可以查看eclipse中jdk的版本: 第一种方法: 点击开始--运行--输入cmd--点击确定--在cmd命令行窗口中输入java -version,就可以显示出当前在使用的jdk的版本号 ...

  5. Spring-Boot 中 Redis 的简单使用以及简单模糊匹配删除

    https://yulaiz.com/spring-boot-redis-simple/

  6. pyDay17

    1.用filter求素数. 埃拉托色尼筛选法. #!/usr/bin/env python3 # -*- coding: utf-8 -*- def _odd_iter(): n = 1 while ...

  7. sudo pm2 提示 找不到命令

    一共有 3 台 staging 环境服务器,5 台生产环境服务器,centos7系统.前阵子刚给所有研发配置了自己的账号,今天有小伙伴说,在其中两台服务器上 sudo pm2 list 提示: sud ...

  8. HeyWeGo第三周项目总结

    HeyWeGo第三周项目总结 项目进展 第三周的计划是:将收集到的资料和代码,进行汇总并且分工后开始开始撰写游戏代码与测试代码. 本周我们已经开始编写了自己负责部分的代码. 按照我们的计划,本周我们完 ...

  9. 第二章 第二个spring-boot程序

    上一节的代码是spring-boot的入门程序,也是官方文档上的一个程序.这一节会引入spring-boot官方文档推荐的方式来开发代码,并引入我们在spring开发中service层等的调用. 1. ...

  10. ACM赛前准备——模板(排版篇)

    ACM赛前准备--模板(排版篇) 更新 前言 效果演示 封面 目录页 模板页(不分栏) 模板页(分栏) 结果文件 快速使用 准备工作 安装TexLive (可选)安装minted包 创建模板 文件结构 ...