Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx,相比较而言,LVS性能最好,但是搭建相对复杂,Nginx的upstream模块支持群集功能,但是对群集节点的健康检查功能不强,性能没有Hapr oxy好。Haproxy的官方网站是http://haproxy.1wt.eu/。
本案例介绍使用Haproxy及Nginx搭建一套web群集。
一、案例环境
使用三台服务器模拟搭建一套web群集,具体的拓补图如下:


二.编译安装Nginx服务器
1.搭建Nginx1
使用nginx-1.12.0.tar.gz安装包进行编译安装
[root@localhost ~]# yum install gcc gcc-c++ pcre-devel zlib-devel make-y
[root@localhost ~]# useradd -M -s /sbin/nologin nginx #创建运行用户
[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz -C /opt/
[root@localhost ~]# cd /opt/nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx #配置相关参数
[root@localhost nginx-1.12.0]# make && make install #安装
安装完后的默认信息如下
• 默认安装目录:/usr/local/nginx
• 默认日志:/usr/local/nginx/logs
• 默认监听端口:80
• 默认web目录:/usr/local/nginx
接下来设置测试页面并启动Nginx服务。
[root@localhost ~]# cd /usr/local/nginx/html
[root@localhost html]# echo "Server 172.16.10.10" > test.html
[root@localhost ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost ~]# nginx #启动
[root@localhost ~]# systemctl stop firewalld.service #关闭防火墙
[root@localhost ~]# setenforce 0
在客户端访问http://172.16.10.10/test.html,网页正常显示。
2.搭建Nginx2
编译安装的步骤与Nginx1相同,不同之处在于建立测试页面。
[root@localhost ~]# cd /usr/local/nginx/html
[root@localhost html]# echo "Server 172.16.10.20" > test.html
三、编译安装Haproxy
使用haproxy-1.5.19.tar.gz安装包进行编译安装
[root@localhost ~]# yum install gcc gcc-c++ pcre-devel bzip2-devel make -y #用yum安装一系列d的环境支持
[root@localhost ~]# tar zxvf haproxy-1.5.19.tar.gz -C /opt/ #解压haproxy软件包至/opt目录下
[root@localhost ~]# cd /opt/haproxy-1.5.19/
[root@localhost haproxy-1.5.19]# make TARGET=linux26 #64位系统
[root@localhost haproxy-1.5.19]# make install #安装
四.创建Haproxy的配置文件
Haproxy默认不创建配置文件,需要复制软件包的模板配置文件,并进行编辑
[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy #创建配置文件目录
[root@localhost haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/ #将haproxy.cfg文件复制到配置文件目录下
[root@localhost haproxy-1.5.19]# cd /etc/haproxy/
[root@localhost haproxy]# vim haproxy.cfg
#删除以下语句
chroot /usr/share/haproxy #禁锢到haproxy的根目录下
redispatch #强制将请求发送到已经down掉的机器

#添加
listen webcluster 0.0.0.0:80 #定义一个webcluster的应用
option httpchk GET /test.html #访问服务器的test.html文件
balance roundrobin
server inst1 172.16.10.10:80 check inter 2000 fall 3 #定义nginx节点服务器
server inst2 172.16.10.20:80 check inter 2000 fall 3
五.创建Haproxy自启动脚本
[root@localhost haproxy]# cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
[root@localhost haproxy]# chmod +x haproxy
[root@localhost haproxy]# chkconfig --add /etc/init.d/haproxy #添加系统服务
[root@localhost haproxy]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@localhost haproxy]# service haproxy start #启动Haproxy服务
[root@localhost haproxy]# systemctl stop firewalld.service #关闭防火墙
六、测试web群集
通过上面的步骤,已经搭建完成Haproxy的web群集,接下来验证群集是否正常工作。一个群集一般需要具备两个特性,第一个是高性能,第二个是高可用。
1.测试高性能
在客户端使用浏览器打开http://172.16.10.30/test.html, 浏览器显示信息如图所示:

刷新一下,显示信息如图所示:

可以看到群集的负载均衡调度生效,满足群集的高性能要求。
2.测试高可用
将172.16.10.10的Nginx服务器停用,在客户端使用浏览器打开http://172.16.10.30/test。html ,浏览器显示信息如图所示:

从中可以看出,当一台节点出现故障时,不会影响群集的使用,这样满足了群集的高可用性。
七、Haproxy的日志
Haproxy的日志默认输出系统的syslog中,查看不方便,在生产环境中可以单独定义出来。
1.修改haproxy配置文件中(/etc/haproxy/haproxy.cfg)关于日志配置的选项,加入下面的配置:
log /dev/log local0 info
log /dev/log local0 notice
将这两行配置放到global配置项目中,主要是将info及notice日志分别记录到不同的日志文件中。
2.然后重启Haproxy的服务
[root@localhost ~]# service haproxy restart #重新启动Haproxy服务
3.修改rsyslog配置
为了便于管理,将Haproxy的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog启动时会自动加载此目录下的所有配置文件。
[root@localhost ~]# touch /etc/rsyslog.d/haproxy.conf
[root@localhost ~]# vim /etc/rsyslog.d/haproxy.conf
加入下面的内容:
if ($programname == 'haproxy' and $syslogseverity-text == 'info')
then -/var/log/haproxy/haproxy-info.log #info日志记录到/var/log/haproxy/haproxy-info.log下

&~ #表示日志写入到日志文件后,rsyslog停止处理这个信息

if ($programname == 'haproxy' and $syslogseverity-text == 'notice')
then -/var/log/haproxy/haproxy-notice.log #notice日志记录到/var/log/haproxy/haproxy-notice.log下

&~
4.保存配置文件并重启rsyslog服务
[root@localhost ~]# systemctl restart rsyslog.service
5.测试日志信息
在客户端访问http://172.16.10.30/test.html后,可以使用 tail -f /var/log/haproxy/haproxy-info.log 即时查看haproxy的访问请求日志。
[root@localhost ~]# tail -f /var/log/haproxy/haproxy-info.log
Jun 30 21:20:48 localhost haproxy[4202]: 172.16.10.8:50352 [30/Jun/2018:21:20:48.466] webcluster webcluster/inst1 1/0/0/1/2 200 279 - - ---- 1/1/0/1/0 0/0 "GET /test.html HTTP/1.1"
Jun 30 21:21:58 localhost haproxy[4202]: 172.16.10.8:50353 [30/Jun/2018:21:21:58.114] webcluster

转载于:https://blog.51cto.com/14241151/2407163

haproxy高可用相关推荐

  1. linux7自带haprox版本,CentOS7.4—构建最新版haproxy高可用群集

    CentOS7.4-构建haproxy高可用群集 目录 第一部分 实验环境 第二部分 搭建配置web服务器 第三部分 安装配置haproxy服务器 第四部分 测试验证 第五部分 haproxy配置相关 ...

  2. 基于keepalived实现haproxy高可用的双主模型配置

      Keepalived会主动检测web服务器,把有故障的服务器从系统中剔除,在服务器修复以后会重新加入到服务器群众,不影响服务器的正常工作 VRRP:虚拟路由冗余协议   它把一个虚拟路由器的责任动 ...

  3. oracle 实现HA,使用KeepAlived实现HAProxy高可用

    使用KeepAlived实现HAProxy高可用 在以前的文章中我们实现了使用HAProxy来转发读请求到后端多台mysql从库上,但是对于HAProxy的高可用(HA)需 求没有配置,本文在以前的基 ...

  4. keepalived(haproxy高可用、haproxy高可用双主、lvs+keepalived)

    LAN客户端判定哪个路由器应该为其到达目标主机的下一跳网关的方式有动态及静态决策两种方式,其中,常见的动态路由发现方式有如下几种: 1.Proxy ARP -- 客户端使用ARP协议获取其想要到达的目 ...

  5. keepalived实现haproxy高可用详解

    一,keepalived介绍 keepalived是一个可以实现某些资源高可用的开源软件,其主要的组件包括core,check,vrrp,libipfwc,libipvs,这里说下各个组件的功能. c ...

  6. 基于linux下的 Pacemaker+Haproxy高可用负载均衡架构

    corosync + pacemaker + crmsh 高可用集群 corosync提供集群的信息层(messaging layer)的功能,传递心跳信息和集群事务信息,多台机器之间通过组播的方式监 ...

  7. HAProxy高可用负载均衡代理服务

    官网地址:https://www.haproxy.org/ 目录 最新版本 描述 主要特点 支持平台 性能 可靠性- 自2002年以来就使高流量网站保持在线 安全- 在13年内甚至没有一次入侵 下载 ...

  8. HAProxy高可用配置视频教程

    HAProxy提供高可用性.负载均衡等,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在当前的硬件上, ...

  9. Pecemaker+Corosync+Haproxy高可用Openstack集群实战

    一.DRBD简介 DRBD的全称为:Distributed Replicated Block Device (DRBD)分布式块设备复制,DRBD是由内核模块和相关脚本而构成,用以构建高可用性的集群. ...

最新文章

  1. OSChina 周日乱弹 —— 比996更先进的是365工作制
  2. 如何用指针访问opencv cv::Mat数据?ptr<uchar>()
  3. NHibernate初学者指南(2):一个完整的例子
  4. Adobe Edge Animate --点击元件内部元素使元件其他元素发生改变
  5. 前篇|信贷监控报表的设计
  6. HDU 4946 Area of Mushroom 凸包 第八次多校
  7. 5-6 AOF15-7 AOF25-8 AOF实验
  8. 我所认为的KVC和KVO
  9. ST电机库 MCSDK-FUL_5.4.4 下载
  10. 阿里HSF(服务框架)
  11. Namecheap无法登录、无法修改密码
  12. web安全day3:文件共享服务器配置、共享权限和445端口
  13. CSU 1256 天朝的单行道 最短路问题
  14. 类和对象定义以及四种初始化方式
  15. Ansheng的SRE学习之路-linux基础篇
  16. 对抗网络之PG-GAN,无条件下生成更真实的人脸图像
  17. 提前还贷怎样才划算 多还本金减少期限最划算
  18. 2017常见android面试题
  19. 一年中的某周转换成当前周星期一和星期日的日期
  20. Tiny OS+nblot,值得程序员体验吗?

热门文章

  1. Jsf + Spring + Hibernate项目中引用的包
  2. 用__postback传递JavaScript变量到c#(pass a js variable to C# by a __postback )
  3. Linux 下删除大量文件效率对比
  4. 【Hive】动态分区插入
  5. 【SQL】INTERVAL YEAR TO MONTH 和 INTERVAL DAY TO SECOND
  6. scrapy 的依赖库安装和出现def write(self, data, async=False):的解决方法
  7. object references an unsaved transient instance - save the transient instance before flushing异常问题处理
  8. POI实现大数据EXCLE导入导出,解决内存溢出问题
  9. 如何创建一个<style> tag with Javascript?
  10. 如何从我的虚拟环境中更新pip本身?