HAProxy部署Web集群(Nginx)实验

news2024/11/16 13:23:21

实验前准备
HAProxy服务器:192.168.188.11
内核版本最好要在2.6以上,使用uname -r查看自己的内核版本是否适用


Nginx服务器1:192.168.188.12
Nginx服务器2:192.168.188.13
客户端:192.168.188.1(本机windows)

  1. HAProxy部署
    1. 关闭防火墙
      systemctl stop firewalld
      setenforce 0
    2. 编译安装HAProxy
      安装依赖包
      yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
      解压HAProxy软件包
      tar zxvf haproxy-1.5.19.tar.gz
      安装
      cd haproxy-1.5.19/
      使用uname -r查看内核版本,如果是2.6的那下面的参数就用TARGET=linux26,大于2.6.28的请使用TARGET=linux2628
      make TARGET=linux2628 ARCH=x86_64
      make install
    3. HAProxy服务器配置
      复制一份模板过来使用
      mkdir /etc/haproxy
      /opt/haproxy-1.5.19是我的软件包的位置
      cp cp /opt/haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy/
      对模板配置文件进行修改
      cd /etc/haproxy
      vim haproxy.cfg
      # this config needs haproxy-1.1.28 or haproxy-1.2.1
      
      # 全局配置
      global
      # 定义日志文件的位置和级别
              log /dev/log    local0 info
              log /dev/log    local0 notice
              #log loghost    local0 info
      # 最大连接数
              maxconn 4096
      # chroot运行路径,这是haproxy自己设置的根目录,一般都是注释掉
              #chroot /usr/share/haproxy
              uid 99
              gid 99
              daemon
      # 添加设置并发进程数,建议与服务器CPU的核数相等或是2倍
              nbproc 1
              #debug
              #quiet
      
      # 配置默认参数
      defaults
              log     global       # 使用global模块定义的日志格式
              mode    http         # 7层代理http模式
              option  httplog      # 日志类别是http日志格式
              option  dontlognull  # 不记录健康检查的日志
              retries 3            # 检查节点服务器重试次数
              redispatch           # 服务器负载过高时,自动结束当前队列处理过久的连接
              maxconn 2000         # 最大连接数,不能超过global模块中maxconn的大小
              #contimeout     5000 # 连接超时时间(ms)
              #clitimeout     50000# 客户端超时时间(ms)
              #srvtimeout     50000# 服务端超时时间(ms)
              timeout http-request 10s # 默认http请求超时时间
              timeout queue 1m     # 默认队列超时时间
              timeout connect 10s  # 默认连接超时时间
              timeout client 1m    # 默认客户端超时时间
              timeout server 1m    # 默认服务端超时时间
              timeout http-keep-alive 10s # 默认持久连接超时时间
              timeout check 10s    # 设置心跳检查超时时间
      
      # 删除下面所有listen配置,自己添加监听
      # 定义一个名为webcluster的应用
      listen webcluster 0.0.0.0:80
      # 检查服务器的test.html文件
              option httpchk GET /test.html
      # 负载均衡调度算法使用轮询算法
              balance roundrobin
      # 定义节点
      # check inter 2000是健康检查时间间隔,fall 3表示失败3次代表节点失效
      # 节点后如果加backup,表示是备用服务器,只有在所有在线节点失效后才启用,不加表示是在线节点
              server inst1 192.168.188.12:80 check inter 2000 fall 3
              server inst2 192.168.188.13:80 check inter 2000 fall 3


    4. 添加HAProxy系统服务
      复制初始化脚本文件
      cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
      给与执行权限
      chmod +x /etc/init.d/haproxy
      将初始化脚本添加到系统服务中
      chkconfig --add /etc/init.d/haproxy
      软链接到命令目录底下,方便使用
      ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
      启动服务
      service haproxy start
  2. 节点服务器部署
    1. 关闭防火墙
      systemctl stop firewalld
      setenforce 0
    2. 安装nginx的过程不再赘述,还不清楚请翻阅之前的实验
    3. 在两台服务器上写入不同的内容,注意这里的页面文件不是默认的index.html,因为我们在haproxy.cfg文件中检查的就是test.html
      echo "my ip is 192.168.188.12" > /usr/local/nginx/html/test.html
      echo "my ip is 192.168.188.13" > /usr/local/nginx/html/test.html
    4. 启动服务
      systemctl start nginx
  3. 测试
    1. 在客户端浏览器上访问http://192.168.188.11/test.html,多刷新几次,负载均衡也没问题,注意这里我们访问的uri是test.html,所以得到的响应数据就是节点服务器上的test.html,如果只输入192.168.188.11会怎么样呢?可以自己猜测一下然后进行实验

  4. 补充:默认haproxy的日志是输出到系统的syslog中,不便于查看,所以我们单独保存haproxy的日志
    1. vim /etc/haproxy/haproxy.cfg
      global
      log /dev/log local0 info
      log /dev/log local0 notice

      这一步我们之前的步骤已经改过了,没改过的改完记得重启haproxy服务
    2. 一般来说需要修改rsyslog配置,但是为了便于管理,直接在/etc/rsyslog.d/下新建一个haproxy.conf文件,将haproxy的配置独立定义,rsyslog启动时会自动加载此目录下的所有配置文件
      vim /etc/rsyslog.d/haproxy.conf
      if ($programname == 'haproxy' and $syslogseverity-text == 'info')
      then -/var/log/haproxy/haproxy-info.log
      &~
      if ($programname == 'haproxy' and $syslogseverity-text == 'notice')
      then -/var/log/haproxy/haproxy-notice.log
      &~


      这样haproxy的info日志将记录到/var/log/haproxy/haproxy-info.log下,notice日志将记录到/var/log/haproxy/haproxy-notice.log下
    3. 重启rsyslog
      systemctl restart rsyslog.service
    4. 此时我们再进行几次访问,就能看到相应的日志了
      tail /var/log/haproxy/haproxy-info.log

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1270922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最新报告!11月美国市场的“遥遥领先”来了,该爆的单总会来!

今年周期最长的大促节点已接近尾声,美区市场的11月份的商品销售战绩已全面来袭: 保健类目竟弯道超车,交出了将近翻倍的成绩单;美妆个护、女装与女士内衣等“她经济”类目持续高涨且“辣眼”单品不断;家居大类目下的市…

RocketMQ两主两从部署搭建

安装部署 1.1 部署环境 1.2 安装要求 建议使用64位操作系统,建议使用Linux / Unix / Mac; 64位JDK 1.8; Maven 3.2.x;(非必要) Git;(非必要) 1.3 获取rocketmq安装包,并解压 下载官…

基于Java SSM框架+Vue实现房屋租赁网站项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架Vue实现房屋租赁网站演示 摘要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,房屋租赁系统当然也不能排除在外。房屋租赁系统是以实际运用为开发背景&…

宝宝洗衣机买几公斤?高性价比婴儿专用洗衣机推荐

宝宝的抵抗力还比较弱,如果把大人的衣服跟宝宝的混洗,衣服上一旦沾上大人衣服上的细菌可能会导致宝宝生病再者,需要的清洗剂不一样,一般选择宝宝的洗衣液时会选择宝宝专用的低敏洗衣液,这样可以有效防止宝宝的皮肤过敏…

arcgis导出某个属性的栅格

选中栅格特定属性想要导出时,无法选中“所选图形” 【方法】spatial analyst 工具——提取分析——按属性提取

fiddler抓包安卓

一、打断点 1、安卓手机和电脑在同一局域网下,手机连接的网络开启手动代理,ip填写电脑ip,端口填写fiddler中配置的端口。 ip查看: 端口配置:tools-options-connections 2、安装证书,手机浏览器输入电脑ip…

盘点68个Android系统源码安卓爱好者不容错过

盘点68个Android系统源码安卓爱好者不容错过 学习知识费力气,收集整理更不易。 知识付费甚欢喜,为咱码农谋福利。 源码下载链接:https://pan.baidu.com/s/1FcBxCe7KpJsh0zFxNZ_7wg?pwd8888 提取码:8888 项目名称 Android …

PyQuery库编写下载代码示例

python import requests from pyquery import PyQuery as pq # 设置 proxies { "http": "", "https": "" } # 使用requests.get()方法获取网页内容 response requests.get() # 使用PyQuery解析网页内容,获取视…

编码未来已然来临:无代码、低代码助力软件驱动世界

在当今时代,企业无不致力于探寻能够实现降本增效的有效路径。在众多热门技术中,AI人工智能和机器学习等概念已经被广泛采纳并应用于各行业的实际业务场景中。当企业开始树立起数字化意识,他们通常会选择以下两条路径中的一条来实现数字化转型…

element table滚动到底部加载数据(vue3)

效果图 使用插件el-table-infinite-scroll npm install --save el-table-infinite-scroll局部导入 <template><div class"projectTableClass"><el-table v-el-table-infinite-scroll"load"></el-table></div> </temp…

内存泄漏检测工具valgrind

示例&#xff1a; class Person { public:Person(int age){//将年龄数据开辟到堆区m_Age new int(age);}//重载赋值运算符 写法2 此代码在linux测试Person& operator(Person& p){*m_Age *p.m_Age; //通过linux下valgrind工具检测&#xff0c;无内存泄漏情况。//此语…

手把手教你写IP地址规划方案

中午好&#xff0c;我的网工朋友。 IP地址的合理规划是网络设计的重要环节&#xff0c;大型计算机网络必须对IP地址进行统一规划并得到有效实施。 IP地址规划的好坏&#xff0c;不仅会影响到网络路由协议算法的效率&#xff0c;还会影响到网络的性能&#xff0c;网络的扩展&a…

快手自动评论助手:开发流程与所需技术的深度解析

先来看实操成果&#xff0c;↑↑需要的同学可看我名字↖↖↖↖↖&#xff0c;或评论888无偿分享 一、引言 随着互联网的发展&#xff0c;越来越多的人开始使用快手这款短视频平台。在这个平台上&#xff0c;用户可以分享自己的生活点滴&#xff0c;观看他人的精彩瞬间。然而&am…

震坤行自有品牌 | 搬运存储全面打造快速选型的标准品

震坤行自有品牌 | 搬运存储全面打造快速选型的标准品 中国仓储与配送协会2023年仓储配送行业发展与趋势展望报告中指出&#xff0c;截至2022年底&#xff0c;我国营业性通用&#xff08;常温&#xff09;仓库面积约为12.2亿㎡&#xff0c;仓储业&#xff08;含装卸搬运&#x…

element-plus el-dialog 弹窗隐藏遮罩并且可以控制弹窗后的元素、点击、滚动、其他事件操作等

场景 el-dialog 隐藏遮罩并且可以控制弹窗后的元素、点击、滚动、其他事件操作&#xff0c;比如一个弹窗打开了&#xff0c;我要能控制弹窗后面的滚动、点击等等一系列事件。 修改方法 首先我们需要隐藏弹窗遮罩 :modal"false"&#xff0c;并且给 el-dialog 弹窗…

NB-IoT BC260Y Open CPU SDK⑤点亮一个LED

NB-IoT BC260Y Open CPU SDK⑤点亮一个LED 1、BC260Y gpio资源介绍2、相关API介绍3、调试信息串口打印3、实例分析 本章节将介绍BC260Y硬件GPIO相关操作 1、BC260Y gpio资源介绍 BC260Y-AA的sdk包中官方给出了16个可用IO 在ql_gpio.h文件中有定义如下/**********************…

Windows系统如何远程控制Realme手机?

realme使用的是realme UI系统。realme UI是realme研发的操作系统&#xff1b;realme UI 1.0基于安卓10系统&#xff0c;realme UI 2.0基于安卓11系统&#xff0c;realme UI 3.0基于安卓12系统。 对于安卓4.0及以上系统的手机&#xff0c;都可以通过软件AirDroid实现远程控制。 …

Python教程:装饰器的10个示例用法

Python装饰器是一种高级语法&#xff0c;它允许我们增强函数或方法的功能&#xff0c;而无需修改其原始代码。装饰器本质上是一个函数&#xff0c;它接收一个函数作为参数&#xff0c;并返回一个新的函数。这个新的函数可以包装原有函数&#xff0c;添加一些新的功能。 在Pyth…

Elasticsearch:对时间序列数据流进行降采样(downsampling)

降采样提供了一种通过以降低的粒度存储时间序列数据来减少时间序列数据占用的方法。 指标&#xff08;metrics&#xff09;解决方案收集大量随时间增长的时间序列数据。 随着数据老化&#xff0c;它与系统当前状态的相关性越来越小。 降采样过程将固定时间间隔内的文档汇总为单…

Java零基础——Redis篇

1.【熟悉】NoSQL的简介 1.1 什么是NoSQL NoSQL 是 Not Only SQL 的缩写&#xff0c;意即"不仅仅是SQL"的意思&#xff0c;泛指非关系型的数据库。强调Key-Value Stores和文档数据库的优点。 NoSQL产品是传统关系型数据库的功能阉割版本&#xff0c;通过减少用不到或…