haproxy+keepalived搭建WEB群集

haproxy+keepalived搭建WEB群集

前面已经学习了两款web群集软件Nginx和lvs,他们都有各自的特点,本章将介绍另外一款群集软件haproxy,我们将对其的调度算法、群集环境、以及群集的配置展开讲解。

haporxy是目前比较流行的调度工具,之前学习的lvs配置相对来说比较复杂,nginx不能实现健康检查性能也没有haproxy好。官方站点位于htp://haproxy.1wt.eu/.

今天我们将介绍使用haproxy搭建一套web群集

一、案例概述

1、案例前知识点

1)http请求

通过URL访问网站使用的是http协议,此类请求一般被称为http请求,http请求的方式分式,分别GET和POST方式。会根据请求返回状态码,正常请求成功的时候一般会返回2xx,3xx错误饭后的时候4xx,5xx

2)负载均衡的调度算法

lvs、nginx最常用的算法就是一下三种分别是:

RR(round robin)。RR算法是最简单的一种算法,即轮询调度,根据顺序分配请求

LC(Lease Connections)。lc即最少连接数,调度器会根据当前服务器节点的负载动态分配,那个节点负载小,则调度器就会分配请求给该节点。

SH(Source Hsahing)。SH即基于原地址调度算法,此算法常用于需要身份验证的网站,第一个用户的第一个请求给了第一个节点服务器,第二个用户的第一个请求给了第二个节点服务器,当第一个用户的第二个请求发来的时候还是第一个节点进行处理。这种调度算法应用的场景如需要用户名密码登录的网站,如果客户一次是第一个节点服务器响应,第二个请求有分配给了第二个节点服务器,那么客户必须在输入一次验证信息才可以到达访问的目的,这种方式是不可取的。除了SH之外我们还可以使用一种缓存机制去实现memchack。

3、案例环境

今天我们需要四台主机来

图1

二、案例实施

1、编译安装Haproxy

第一台haproxy为192.168.1.1 centos1.lzg.com

部署Haproxy需要pcre-devel bzip2-devel的软件包支持,所以先进性安装相关包

[[email protected] ~]# yum -y install pcre-devel bzip2-devel

[[email protected] ~]# tar zxf haproxy-1.4.24.tar.gz

[[email protected] ~]# cd haproxy-1.4.24

[[email protected] haproxy-1.4.24]# make TARGET=linux26 //64位系统

[[email protected] haproxy-1.4.24]# make install

2、添加服务脚本

[[email protected] haproxy-1.4.24]# cp examples/haproxy.init /etc/init.d/haproxy

[[email protected] haproxy-1.4.24]# chkconfig --add haproxy

[[email protected] haproxy-1.4.24]# chkconfig haproxy on

[[email protected] haproxy-1.4.24]# ln -s /usr/local/sbin/* /usr/sbin/

[[email protected] haproxy-1.4.24]# chmod +x /etc/init.d/haproxy

3、Haproxy配置

1)建立haproxy配置文件

[[email protected] haproxy-1.4.24]# mkdir /etc/haproxy

[[email protected] haproxy-1.4.24]# cp examples/haproxy.cfg /etc/haproxy/

2)Haproxy配置文件介绍

Haproxy配置文件分为三个部分。即global、default、listen。global为全局配置,defaults为默认配置、listen为应用组件配置

global配置通常由一下配置参数

global

log /dev/log local0 info

log /dev/log local0 notice //日志存储的设备及记录级别

maxconn 4096 //最大连接数

uid 99 //程序用户的UID

gid 99 //程序用户组的GID

daemon //后台运行

retriee 3 //重试次数

option http-server-close //主动关闭http请求选项

timeout http-keep-alive //最长连接超时时间

timeout http-requota //http请求超时时间

timeout client //客户端超时时间

pidfile /var/run/haproxy.pid //pid文件的路径以及文件名

#debug

#quiet

#chroot /usr/share/haproxy

以上配置红色部分为添加、绿色部分为修改、蓝色部分为注释部分,黑色部分为默认部分。

defaults配置项,一般会被应用组件所继承,如果在应用组件中没有特殊的声明,则默认使用配置参数。

defaults

log global //应用全局配置的日志格式

mode http //模式为http

option httplog //采用http的日志格式

retries 3 //检查节点次数

maxconn 2000 //最大连接数

contimeout 5000 //连接超时时间(秒)

clitimeout 50000 //客户端超时时间

srvtimeout 50000 //服务器超时时间

option httpclose //关闭客户端请求

除了新添加一行之外其余的全部都是默认的配置就可以了,可以根据实际情况进行修改

listen配置项目一般为配置应用模块参数

listen webcluster 0.0.0.0:80 //监听地址及端口

option httpchk GET /index.html //健康检查的网页文件

balance roundrobin //轮询算法

server web1 192.168.1.3:80 check inter 2000 fall 3

server web2 192.168.1.4:80 check inter 2000 fall 3

以上两条定义服务器池 以及健康检查3次

以下是配置好的完成配置

global

log /dev/log local0 info

log /dev/log local0 notice

maxconn 4096

uid 99

gid 99

daemon

nbproc 2

pidfile /var/run/haproxy.pid

option http-server-close

#debug

#quiet

# chroot /usr/share/haproxy

defaults

log global

mode http

option httplog

option dontlognull

retries 3

redispatch

maxconn 2000

contimeout 5000

clitimeout 50000

srvtimeout 50000

option httpclose

listen webcluster 0.0.0.0:80

option httpchk GET /index.html

balance roundrobin

server web1 192.168.1.3:80 check inter 2000 fall 3

server web 2 192.168.1.4:80 check inter 2000 fall 3

4、修改rsyslog配置

[[email protected] haproxy-1.4.24]# vim /etc/rsyslog.d/haproxyconf

if ($programname == ‘haproxy‘ and $syslogseverity-text ==

‘info‘) then -/var/log/haproxy/haproxy.info

& ~

if ($programname == ‘haproxy‘ and $syslogseverity-text ==

‘notice‘ ) then -/var/log/haproxy/haproxy.notice

& ~

5、启动服务

[[email protected] haproxy-1.4.24]# service haproxy start

[[email protected] haproxy-1.4.24]# service rsyslog restart

rsyslog启动之后会在/var/log/haproxy下建立相关文件

启动haproxy时会出现一些提示信息,这是因为没有检测到存活的节点,所以我们接下来部署节点

6、建立防火墙规则,允许80端口入站

[[email protected] haproxy-1.4.24]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT

7、nginx安装 192.168.1.3

[[email protected] ~]# yum -y install pcre-devel zlib-devel

[[email protected] ~]# tar zxf nginx-1.6.2.tar.gz

[[email protected] ~]# cd nginx-1.6.2

[[email protected] nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install

[[email protected] nginx-1.6.2]# useradd -M -s /sbin/nologin nginx

[[email protected] nginx-1.6.2]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

[[email protected] nginx-1.6.2]# echo "node_1" > /usr/local/nginx/html/index.html

启动ngnx服务

[[email protected] nginx-1.6.2]# nginx

建立防火墙规则

[[email protected] nginx-1.6.2]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT

剩下的节点配置一样,为了测试时看出效果,建议将测试页的内容不要保持一致

重新启动haproxy的服务

8、配置keepalived

[[email protected] ~]# yum -y install openssl-devel kernel-devel popt-devel

[[email protected] ~]# tar zxf keepalived-1.2.13.tar.gz

[[email protected] ~]# cd keepalived-1.2.13

[[email protected] keepalived-1.2.13]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/ && make && make install

[[email protected] keepalived-1.2.13]#

[[email protected] keepalived-1.2.13]# chmod +x /etc/init.d/keepalived

[[email protected] keepalived-1.2.13]# chkconfig --add keepalived

[[email protected] keepalived-1.2.13]# chkconfig keepalived on

[[email protected] keepalived-1.2.13]# vim/etc/keepalived/keepalived.conf

lobal_defs {

notification_email {

[email protected]

}

notification_email_from [email protected]

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id R1

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 1

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 123.ABC

}

virtual_ipaddress {

192.168.1.254

[[email protected] keepalived-1.2.13]# service keepalived start

[[email protected] keepalived-1.2.13]#

vim /etc/sysconfig/network-scripts/ifcfg-eth0

NM_CONTROLLED=no

[[email protected] keepalived-1.2.13]# service network restart

[[email protected] keepalived-1.2.13]# iptables -I INPUT -p ip -d 224.0.0.18 -j ACCEPT

[[email protected] keepalived-1.2.13]# service iptables save

以上就是 192.168.1.1 keepalived的配置

从调度器其他的部分都一样,主配置文件内有三个地方不能一样

router_id R2

state BACKUP

priority 99

注意:启动服务,防火墙规则、网卡的配置

验证:

OK了,今天的目标就完成了。

时间: 2024-10-24 13:12:38

haproxy+keepalived搭建WEB群集的相关文章

Haproxy+Nginx搭建Web群集

Haproxy 是一种群集调度工具 ,是一款提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费.快速并且可靠的一种解决方案. Haproxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.Haproxy运行在时下的硬件上,完全可以支持数以万计的 并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上. 本案例中介绍使用Haproxy+Ngin一套Web群集

使用 HAProxy + Nginx 搭建 Web 群集

HAProxy 是目前比较流行的一种群集调度工具,同类群集调度工具中,同 LVS 对比,LVS 性能最好,但是搭建相对比较复杂,Nginx 的 upstream 模块支持群集功能,但是对群集节点的健康检查功能不强,性能没有 HAProxy 好. 系统环境 主机 IP地址 主要软件 HAProxy 服务器 192.168.100.200 haproxy-1.5.19.tar.gz Nginx 服务器1 192.168.100.201 nginx-1.12.0.tar.gz Nginx 服务器2 1

Linux之使用haproxy搭建web群集(2)

Linux之使用haproxy搭建web群集(2)   案例二: 一. 实验拓扑图 二. 实验目标:使用keepalived+haproxy实现双机热备和负载均衡. 三. 实验环境: 各虚拟机防火墙Iptables 与 NetworkManager 关闭 四. 实验要求: 继续接着案例一的实验进行.Keepalived配置,漂移地址为192.168.1.100. 1.10: keepalived配置为主 192.168.1.40服务器 haproxy配置与1.10一样.配置后启动ha服务. ke

haproxy群集搭建web群集

 haproxy群集调度器搭建web群集 1:haproxy调度器是目前市场上比较流行的群集调度器,当然调度器有好多种类:lvs.nginx.和haproxy,接下来对它们进行比较看看它们的优缺点: lvs:工作在七层模型的4层传输层:根据ip+端口进行访问:不考虑访问的内容,可以任意访问,基于ip地址,能实现所有应用构建的群集,性能好,可以和keepalived完美结合.稳定性能好.健康检查节点服务器性能较好:搭建时结构相对复杂 nginx:工作在7层应用层,根据内容.ip网页进行给用户分配内

【中级篇】使用Haproxy搭建WEB群集

使用Haproxy搭建WEB群集 1.          实验需求: 1)     2台服务器部署NgINX服务 2)  1台做Haproxy调度器 3)  搭建负载均衡,测试其效果. 2.          实验环境: 主机 操作系统 IP地址 主要软件 Haproxy RedHat6.5  32位 192.168.10.10 haproxy-1.4.24.tar.gz Nginx服务器1 CentOS--6.5 32位 192.168.10.15 nginx-1.5.10.tar.gz Ng

Linux之使用haproxy搭建web群集(1)

Linux之使用haproxy搭建web群集(1) Haproxy是目前比较流行的一种集群调度工具,同类的调度工具有很多,如LVS和Nginx.相比较而言,LVS性能最好,但是搭建相对复杂,Nginx和upstream模块支持集群功能,但是对集群节点的健康检查功能不强,性能没有Haproxy好. 案例一: 一.案例拓扑图 二.实验目标:使用haproxy搭建web群集,实现负载均衡和高可用. 三.实验环境: 系统Centos6.5 注意:使用Vmware虚拟机要将各虚拟机防火墙Iptables

使用Haproxy及Nginx搭建Web群集

什么是HAProxy? HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理,可以运行于大部分主流的Linux操作系统上.本次实验使用三台服务器搭建Web群集,Haproxy作为调度服务器,两台Nginx服务器作为节点服务器. 实验环境 主机 系统 IP地址 主要软件 Haproxy服务器 CentOS-7-x86_64 192.168.100.100 haproxy Nginx服务器1 CentOS-7-x86_64 192

CentOS7 上部署Haproxy及Nginx 搭建Web群集

HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理,可以运行于大部分主流的Linux操作系统上.本次实验使用三台服务器搭建Web群集,Haproxy作为调度服务器,两台Nginx服务器作为节点服务器. 实验环境 主机 | 系统 | IP地址 | 只要软件 主机 系统 IP地址 主要软件 haproxy服务器 CentOS-7-x86_64 192.168.100.101 haproxy Nginx 服务器 CentOS-7-

使用Haproxy搭建Web群集的方法

常见的 Web集群调度器 目前常见的 Web 集群调度器分为软件和硬件,软件通常使用开源的LVS.Haproxy.Nginx,硬件一般使用比较多的是 F5,也有很多人使用国内的一些产品,如梭子鱼.绿盟等 Haproxy应用分析 ■LVS在企业应用中抗负载能力很强,但存在不足 LVS不支持正则处理,不能实现动静分离 对于大型网站,LVS的实施配置复杂,维护成本相对较高 ■Haproxy是一款可提供高可用性.负载均衡.及基于TCP和HTTP应用的代理的软件 特别适用于负载特别大的Web站点 运行在当