图片 4

构建负载均衡集群

简介

LVS   IP 4层
Nginx  URL HTTP(7层)
Haproxy     4层 7层
apache
F5
SLB

1、HAPROXY简介

我们知晓Nginx、LVS都足以做负载均衡,它们都具备各自的风味,先天介绍另一款比较盛行的集群调治工具Haproxy,首先介绍负载均衡常用调治算法,然后介绍Haproxy搭建Web集群的案例情状,接下去着重介绍Haproxy搭建Web集群的装置配置和日志配置,最终介绍了Haproxy的参数优化

Haproxy是最近可比盛行的一种集群调整工具,同类的调整工具备为数非常多,如LVS和Nginx,绝相比来说,LVS品质最佳,可是搭建相对复杂,Nginx的upstream模块及proxy_pass反向代理工具扶助集群效应,但是对集群节点健检功用不强,品质未有Haproxy好。

     
图片 1HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,帮忙虚构主机,它是免费、火速而且可信赖的一种负载均衡消除方案。HAProxy非常适用于那三个负载特大的web站点,这几个站点经常又须要会话保持或七层管理。HAProxy运转在眼下的硬件上,完全能够帮助多元的出现连接。何况它的周转形式使得它能够很简短安全的重组进你当前的架构中,同不经常间能够维护你的web服务器不被记者爆料光到网络上。

一、案例深入分析

Haproxy官网是:

官网:

1、案例概述

知识点回看:
透过U奥迪Q7L形式访谈网址选拔的评论是HTTP协议,这一类的央求平时称为HTTP央浼
HTTP的呼吁情势:get 和 post(较安全,UKugaL中不展现提交的数码)
当浏览器采访八个UENVISIONL,U奔驰M级L会重回贰个状态码,UENVISIONL的回到状态码: (准确)2xx 3xx
(如200、301),(十分)4XX 5XX(400、500)
200 201 202 301 401 403 404 502

2、HAProxy的风味是:
1、HAProxy帮忙设想主机。
2、HAProxy的独到之处可以补充Nginx的一部分劣点,比方协理Session的维持,Cookie的指点;相同的时间支持通过获得内定的url来检验后端服务器的状态。
3、HAProxy跟LVS类似,自个儿就只是一款负载均衡软件;单纯从成效上来说HAProxy会比Nginx有更优良的负荷均衡速度,在产出管理上也是特惠Nginx的。
4、HAProxy帮忙TCP协议的负荷均衡转载,能够对MySQL读举行负荷均衡,对后端的MySQL节点实行检查实验和负载均衡,能够用LVS+Keepalived对MySQL主从做负载均衡。
5、HAProxy负载均衡计谋相当多,HAProxy的负载均衡算法以往现实有如下8种:
  ①
roundrobin,表示轻松的轮询,那几个没有多少说,那么些是负载均衡基本都持有的;
  ② static-rr,表示依据权重,提出关心;
  ③ leastconn,表示最少连接者先拍卖,建议关怀;
  ④
source,表示依照央浼源IP,这几个跟Nginx的IP_hash机制类似,大家用其用作消除session难点的一种格局,提出关怀;
  ⑤ ri,表示遵照伏乞的UCRUISERI;
  ⑥ rl_param,表示依照央浼的URl参数’balance url_param’ requires an
URL parameter name;
  ⑦ hdr(name),表示依据HTTP央求头来锁定每二遍HTTP须求;
  ⑧
rdp-cookie(name),表示依据据cookie(name)来锁定并哈希每回TCP恳求。

Haproxy是当下可比盛行的一种集群调解工具,同类集群调节工具备成都百货上千,如LVS和Nginx,绝相比较来说,LVS质量最佳,但是搭建相对复杂,Nginx的upstream模块补助集群效应,不过对集群节点健检作用不强,品质未有Haproxy好。Haproxy官方网站是

负载均衡的常用调整算法。

 

此案例介绍使用Haproxy及Nginx搭建一套Web集群

1)ENVISION锐界(Round 罗布in) 即轮询调节算法。有ABC八个节点
1 –> A
2 –> B
3 –> C
4 –> A

除此以外,加权轮询调治算法 W昂CoraEnclave。依照各样节点的权重轮询分配访谈诉求。

3、haproxy 配置中分为五局地内容详解

2、案例后置知识点

2)LC(Least Connection) 最少连接数算法。有ABC八个节点
A:4 B:5 C:6   1 –> A
A:5 B:5 C:6   2 –> A
A:6 B:5 C:6   3 –> B
A:6 B:6 C:6   4 –> A
A:7 B:6 C:6   5 –> B
A:7 B:7 C:6   6 –> C
A:7 B:7 C:7
实质上境况下, A B C 连接数会动态的放飞。

1、global:参数是进度级的,平时是和操作系统相关。那个参数一般只设置一次,固然安顿准确,就无需再度实行修改

(1)HTTP请求

3) SH(Source Hashing).来源访谈调整算法。 A B C
1 –> A
2 –> B
1 –> A
2 –> B

2、defaults:配置暗许参数,这么些参数能够被用到frontend,backend,Listen组件

由此U奥迪Q3L访谈网址采用的情商是HTTP协议,此类要求一般称为HTTP诉求。HTTP央求的章程分为GET格局和POST格局。当使用浏览器访谈某一个U本田UR-VL,会基于诉求UWranglerL重临状态码,平常正常的状态码为2
* * 、3 * *(如200、301),借使出现分外会回去4 * * 、5 *
*(如400、500)。

若果保险负载调解器不重启,第叁个用户 –> A , 2 –> B
这种调治算法的益处是会促成会话保持。

3、frontend:接收央浼的前端设想节点,Frontend能够进一步平整直接钦点具体使用后端的backend

例如,访问

WEB调整器软件:LVS Nginx Haproxy SLB(阿里云)
WEB调治器硬件:F5 梭子鱼 绿盟 A10 Array

4、backend:后端服务集群的布局,是动真格的服务器,二个Backend对应一个要么多少个实体服务器

(2)负载均衡常用调节算法

 

5、Listen Fronted和backend的组合体

LVS、Haproxy、Nginx最常用的调节算法有三种,如下所述

目的: Haproxy + Nginx搭建一套web集群

案例意况:

 

Koleos福睿斯(Round 
罗布in)。库罗德景逸SUV算法是最轻松易行最常用的一种算法,即轮询调解。比方,有多少个节点A、B、C,第一个用户访问会被选派到节点A,第一个用户访问会被派出到节点B,第多个用户访谈会被派遣到节点C,第1个用户访谈继续选派到节点A,轮询分配访谈乞求实现负载均衡效果。此算法还应该有一种加权轮询,即根据种种节点的权重轮询分配访谈乞请

长机    操作系统     IP地址     首要的软件

Haproxy    RHEL6.6 x86_64  192.168.200.211  haproxy-1.4.24.tar.gz
Nginx1   RHEL6.6 x86_64  192.168.200.213  nginx-1.6.2.tar.gz
Nginx2   RHEL6.6 x86_64  192.168.200.214  nginx-1.6.2.tar.gz

具有机器确定保证卫安全装了之类软件包:
[root@localhost ~]# yum -y install gcc gcc-c++ make

1、在Nginx十分四上编译安装nginx服务器
1.1 首先搭建Nginx1,
[root@localhost ~]# yum -y install pcre-devel zlib-devel
openssl-devel
[root@localhost ~]# useradd -M -s /sbin/nologin  nginx
[root@localhost ~]# tar xf nginx-1.6.2.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/nginx-1.6.2
[root@localhost nginx-1.6.2]# ./configure –prefix=/usr/local/nginx
–user=nginx –group=nginx && make && make install
[root@localhost nginx-1.6.2]# cd /usr/local/nginx/html/
[root@localhost html]# echo “server 192.168.200.213” >
index.html
[root@localhost html]# /usr/local/nginx/sbin/nginx
[root@localhost html]# netstat -anpt |grep nginx
tcp        0      0 0.0.0.0:80                 
0.0.0.0:*                   LISTEN      4503/nginx 

1.2 搭建nginx2, 同nginx1搭建艺术是大同小异的。
与1.1唯一分裂的是:
[root@localhost html]# echo “server 192.168.200.214” > index.html

2 编写翻译安装Haproxy
[root@localhost ~]# yum -y install pcre-devel bzip2-devel
[root@localhost ~]# tar xf haproxy-1.4.24.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/haproxy-1.4.24/
[root@localhost haproxy-1.4.24]# make TARGET=linux26 && make install

3 Haproxy服务器配置
3.1 建设构造haproxy的计划目录及文件
[root@localhost haproxy-1.4.24]# mkdir /etc/haproxy
[root@localhost haproxy-1.4.24]# cp examples/haproxy.cfg
/etc/haproxy/

3.2 haproxy配置项的牵线
haproxy的布置文件一般分为三局地: global(全局配置部分)
defaults(暗中同意配置部分) listen(应用组件部分)
[root@localhost ~]# egrep -v “^#|^$” /etc/haproxy/haproxy.cfg
global
 log 127.0.0.1
local0    #配备日志记录,local0为日志设备,暗中同意贮存到系统日志
 log 127.0.0.1 local1 notice  #notice为日志等级,常常有二十几个等级
 maxconn 4096      #最第Billy斯接数
 uid 99        #用户uid
 gid 99        #用户gid
 daemon        #守护进度情势
defaults
 log global       #概念日志为global配置中的日志定义
 mode http         #模式为http
 option httplog        #接纳http日志格式记录日志    
 retries 3
       #自己研究节点服务器退步次数,接二连三抵达壹次失利,则以为节点不可用
 maxconn 4096      #最加纳阿克拉接数
 contimeout 5000       #一连超时时间
 clitimeout 50000      #客户端超时时间
 srvtimeout 50000      #服务器超时时间
listen webcluster 0.0.0.0:80   #概念八个webcluster的使用
 option httpchk GET /index.html     #自己商量服务器的index.html文件
 balance roundrobin     #负载均衡器调整使用的算法
 server inst_1 192.168.200.213:80  check inter 2000 fall 3
  #概念在线节点
 server inst_1 192.168.200.214:80  check inter 2000 fall 3
  #概念备份节点

[root@localhost ~]# vim /etc/haproxy/haproxy.cfg
# this config needs haproxy-1.1.28 or haproxy-1.2.1

global
 log 127.0.0.1 local0
 log 127.0.0.1 local1 notice
 maxconn 4096
 uid 99
 gid 99
 daemon

defaults
 log global
 mode http
 option httplog
 option dontlognull
 retries 3
 maxconn 4096
 contimeout 5000
 clitimeout 50000
 srvtimeout 50000

listen web-cluster 0.0.0.0:80
 option httpchk GET /index.html
 balance roundrobin
 server inst1 192.168.200.213:80 check inter 2000 fall 3
 server inst2 192.168.200.214:80 check inter 2000 fall 3

3.3 成立自运维脚本
[root@localhost ~]# cp /usr/src/haproxy-1.4.24/examples/haproxy.init
/etc/init.d/haproxy
[root@localhost ~]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@localhost ~]# chmod +x /etc/init.d/haproxy
[root@localhost ~]# /etc/init.d/haproxy start
Starting haproxy:                                          [确定]

3.4 测试:
用浏览器打开
双重张开三个新的浏览器再次做客

能够证实几次访谈到的结果个别为:
server 192.168.200.213
server 192.168.200.214

/usr/local/nginx/sbin/nginx 运行服务
killall -s HUP nginx  重新加载服务
killall -s QUIT nginx    退出服务

4 Haproxy 日志
Haproxy 的日志暗中同意输出到系统的syslog中,为了更加好的保管Haproxy
的日记,在生育情形中貌似单独定义出来。
4.1 修改Haproxy配置文件中有关日志配置选项,
[root@localhost ~]# head /etc/haproxy/haproxy.cfg
# this config needs haproxy-1.1.28 or haproxy-1.2.1

global
 #log 127.0.0.1 local0
 #log 127.0.0.1 local1 notice
 
 log /dev/log    local0 info
 log /dev/log local0 notice
[root@localhost ~]# service haproxy restart
Shutting down haproxy:                                     [确定]
Starting haproxy:                                          [确定]  

这两行布置泄到global选项中,首尽管将Haproxy的info和notice日志分别记录到分歧的日志文件中

4.2 修改rsyslog配置
为了便于管理,将Haproxy相关的安顿独立定义到haproxy.conf
并置于/etc/rsyslog.d/
下,rsyslog运维时会活动加载此目录下的有所配置文件。

[root@localhost ~]# vim /etc/rsyslog.d/haproxy.conf
if ($programname == ‘haproxy’ and $syslogserverity-text == ‘info’) then
-/var/log/haproxy/haproxy-info.log
&~
if ($programname == ‘haproxy’ and $syslogserverity-text == ‘notice’)
then -/var/log/haproxy/haproxy-notice.log
&~

将haproxy的info日志记录到/var/log/haproxy/haproxy-info.log中,将notice日志记录到/var/log/haproxy/haproxy-notice.log中,将notice日志记录到/var/log/haproxy/haproxy-notice
&~ 代表当写入到日志文件后,rsyslog截至管理那个音信,(rainerscript
脚本语言)

重启rsyslog服务
[root@localhost ~]# service rsyslog restart
关闭系统日志记录器:                                       [确定]
开发银行系统日志记录器:                                       [确定]

4.3 查看日志文件是不是创设成功
[root@localhost ~]# ls -l  /var/log/haproxy/haproxy-info.log
[root@localhost ~]# ls -l /var/log/haproxy/haproxy-notice.log

Sep 20 23:39:26 localhost haproxy[2674]: 192.168.200.1:51629
[20/Sep/2015:23:38:27.256] web-cluster web-cluster/inst2 0/0/0/1/59740
200 1648 – – CD– 0/0/0/0/0 0/0 “GET / HTTP/1.1”
Sep 20 23:40:06 localhost haproxy[2674]: 192.168.200.1:51693
[20/Sep/2015:23:39:34.423] web-cluster web-cluster/inst2 0/0/0/0/32120
200 580 – – —- 1/1/1/1/0 0/0 “GET / HTTP/1.1”

5 haproxy 的参数优化

4、案例景况:

LC(Least 
Connections)。LC算法即最小连接数算法,根据后端的节点连接数大小动态分配前端央浼。比如,有多个节点A、B、C,各节点的连接数分别为A:4、B:5、C:6,此时只要有第一个用户连接央求,会被选派到A上,连接数变为A:5、B:5、C:6
;第二个用户诉求会持续分配给A上,连接数变为A:6、B:5、C:6
;再有新的呼吁会安顿给B,每一遍将新的伸手指派给连接数最小的节点服务器。由于实在境况下A、B、C的连接数会动态释放,很难出现雷同连接数的状态,由此此算法相相比较卡宴CR-V算法有比一点都不小改良,是近年来用到相当多的一种算法

参数      参数表明    优化建议

maxconn      最罗安达接数
    遵照使用的其实使用境况举办调节,建议利用10240
daemon      守护进度情势   haproxy能够使用非守护进度方式运维,生产条件建议利用守护进度格局运维
nbproc      负载均衡的出现进度数 提出与当前服务器CPU宗旨数相等或其2倍
retries      重试次数    用于对集群节点的反省,节点多并发量大提出设置2-3,节点很少提议设置5-6
option
http-server-close 主动关闭http诉求选项 提议生产条件中使用,防止timeout时间设置过长导致http连接堆叠
timeout
http-keep-alive  长连接超时时间   协助连接超时时间,具体参谋运用本身特色设置,能够设置10s
timeout
http-request  http央求超时时间  提议将此时间设置为5-10s,扩展http连接释放速度
timeout
client    客户端超时时间   访问量过大,节点响应慢,能够设置短些,建议安装为1min左右

长机            操作系统                     IP地址                

SH(Source 
Hashing)。SH即基于来源访问调解算法,此算法用于一些有Session会话记录在劳动器端的情况,能够依照来源的IP、Cookie等做集群调治。举例,使用基于源IP的集群调节算法,有多少个节点A、B、C,第一个用户率先次访谈被派出到A,第三个用户率先次访谈被派遣到了B,当第五个用户第三回访问时会被一连派出到A,第三个用户第三次访问时依然会被选派到B,只要负载调治器不重启,第三个用户访谈都会被派出到A,第叁个用户访谈都会被派遣到B,实现集群的调解。此调整算法好处是实现会话保持,但一些IP访谈量比一点都不小时会唤起负载不均衡,部分节点访问量超大,影响工作应用

 首要的软件

Haproxy    CentOS6.6 x86_64   192.168.200.101
 haproxy-1.4.24.tar.gz
Nginx1    CentOS6.6 x86_64   192.168.200.103  nginx-1.6.2.tar.gz
Nginx2    CentOS6.6 x86_64   192.168.200.104  nginx-1.6.2.tar.gz

 

5、安装配备Haproxy

5.1 安装Haproxy正视包及源码包编译安装

[root@localhost ~]# yum -y install gcc gcc-c++ make pcre-devel bzip2-devel
[root@localhost ~]# tar xf haproxy-1.4.24.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/haproxy-1.4.24/
[root@localhost haproxy-1.4.24]# make TARGET=linux26 && make install

5.2 建立haproxy的陈设目录及文件

[root@localhost haproxy-1.4.24]# mkdir /etc/haproxy
[root@localhost haproxy-1.4.24]# cp examples/haproxy.cfg /etc/haproxy/

5.3 haproxy配置项的介绍

###########全局配置#########
global
 log 127.0.0.1 local0           #日志输出配置,所有日志都记录在本机系统日志,通过local0输出
 log 127.0.0.1 local1 notice         #notice为日志级别,通常有24个级别(error warringinfo debug)
 nbproc 1                    #设置进程数量,通常是CPU核心数或者2倍
 pidfile /etc/haproxy/haproxy.pid       #haproxy 进程PID文件
 maxconn 4096               #最大连接数(需考虑ulimit-n限制 )
 #chroot /usr/share/haproxy             #chroot运行路径
 uid 99                 #用户uid
 gid 99                 #用户gid
 daemon                  #守护进程模式,以后台服务形式允许
 #debug                                 #haproxy 调试级别,建议只在开启单进程的时候调试  

########默认配置############ 
defaults
 log global                 #定义日志为global配置中的日志定义
 mode http                   #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
 option httplog              #日志类别,采用http日志格式记录日志
 #option  dontlognull             #不记录健康检查日志信息             
 retries 3              #检查节点服务器失败次数,连续达到三次失败,则认为节点不可用
 #option  forwardfor             #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端i
 #option  httpclose                     #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现
 maxconn 4096               #最大连接数
 contimeout 5000            #连接超时时间
 clitimeout 50000           #客户端超时时间
 srvtimeout 50000           #服务器超时时间
 #timeout check 2000              #心跳检测超时
 #timeout http-keep-alive10s         #默认持久连接超时时间
 #timeout http-request   10s         #默认http请求超时时间
 #timeoutqueue          1m           #默认队列超时时间
  ########统计页面配置######## 
listen admin_stats 
   bind 0.0.0.0:1080            #设置Frontend和Backend的组合体,监控组的名称,按需要自定义名称 
   mode http                 #http的7层模式 
   option httplog               #采用http日志格式 
   #log 127.0.0.1 local0 err         #错误日志记录 
  maxconn 10                  #默认的最大连接数 
  stats refresh 30s             #统计页面自动刷新时间 
  stats uri /stats                                 #统计页面url 
  stats realm Crushlinux\ Haproxy     #统计页面密码框上提示文本 
  stats auth admin:admin         #设置监控页面的用户和密码:admin,可以设置多个用户名 
  stats hide-version                #隐藏统计页面上HAProxy的版本信息 
  #stats admin if TRUE             #设置手工启动/禁用,后端服务器(haproxy-1.4.9以后版本) 

########设置haproxy 错误页面##### 
  errorfile 403 /home/haproxy/haproxy/errorfiles/403.http 
  errorfile 500 /home/haproxy/haproxy/errorfiles/500.http 
  errorfile 502 /home/haproxy/haproxy/errorfiles/502.http 
  errorfile 503 /home/haproxy/haproxy/errorfiles/503.http 
  errorfile 504 /home/haproxy/haproxy/errorfiles/504.http 

########frontend前端配置############## 
bibind *:80   #这里建议使用bind *:80的方式,要不然做集群高可用的时候有问题,vip切换到其他机器就不能访问了。 
  acl web hdr(host) -i www.abc.com   #acl后面是规则名称,-i是要访问的域名, 
  acl img hdr(host) -i img.abc.com     #如果访问www.abc.com这个域名就分发到下面的webserver 的作用域。 
                       #如果访问img.abc.com.cn就分发到imgserver这个作用域。 
  use_backend webserver if web 
  use_backend imgserver if img 

########backend后端配置############## 
backend webserver      #webserver作用域 
  mode http 
  balance roundrobin   #banlance roundrobin 轮询,balance source 保存session值,支持static-rr,leastconn,first,uri等参数 
  option httpchk /index.html HTTP/1.0    #健康检查,检测文件,如果分发到后台index.html访问不到就不再分发给它 
  server web1 192.168.200.103:80 cookie 1 weight 1 check inter 2000 rise 2 fall 3 
  server web2 192.168.200.104:80 cookie 2 weight 1 check inter 2000 rise 2 fall 3 
  #cookie 1表示serverid为1,check inter 1500 是检测心跳频率 
  #rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重

  backend imgserver 
  mode http 
  option httpchk /index.php 
  balance roundrobin 
  server img01 192.168.200.105:80 check inter 2000 fall 3 
  server img02 192.168.200.106:80 check inter 2000 fall 3 

########tcp配置################# 
listen test1 
  bind 0.0.0.0:90 
  mode tcp 
  option tcplog #日志类别,采用tcplog 
  maxconn 4086 
  #log 127.0.0.1 local0 debug 
  server s1 192.168.200.107:80 weight 1 
  server s2 192.168.200.108:80 weight 1

  

5.4 haproxy 配置文件修改

[root@localhost ~]# vim /etc/haproxy/haproxy.cfg
# this config needs haproxy-1.1.28 or haproxy-1.2.1

global
#   log 127.0.0.1   local0
#   log 127.0.0.1   local1 notice
    log /dev/log    local0 info
    log /dev/log    local0 notice
    maxconn 4096
    uid 99
    gid 99
    daemon

defaults
    log global
    mode    http
    option  httplog
    retries 3
    maxconn 4096
    contimeout  5000
    clitimeout  50000
    srvtimeout  50000

listen  webcluster 0.0.0.0:80
    option  httpchk GET /index.html
    balance roundrobin
    server  inst1 192.168.200.103:80 check inter 2000 fall 3
    server  inst1 192.168.200.104:80 check inter 2000 fall 3

listen admin_stats
    bind 0.0.0.0:8000
    mode http
    option httplog
    maxconn 100
    stats refresh 30s
    stats uri /stats
    stats realm Crushlinux\ Haproxy
        stats auth admin:admin
    stats hide-version

  

5.5 图谋服务自运行脚本

[root@localhost ~]# cp /usr/src/haproxy-1.4.24/examples/haproxy.init /etc/init.d/haproxy
[root@localhost ~]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@localhost ~]# chmod +x /etc/init.d/haproxy 
[root@localhost ~]# /etc/init.d/haproxy start
Starting haproxy:                                          [确定]

 

6、安装配置Web服务Nginx  

6.1 首先搭建Nginx1,

[root@localhost ~]# yum -y install gcc gcc-c++ make pcre-devel zlib-devel openssl-devel
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
[root@localhost ~]# tar xf nginx-1.6.2.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/nginx-1.6.2
[root@localhost nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install
[root@localhost nginx-1.6.2]# cd /usr/local/nginx/html/
[root@localhost html]# echo "server 192.168.200.103" > index.html
[root@localhost html]# /usr/local/nginx/sbin/nginx 
[root@localhost html]# netstat -anpt |grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4503/nginx

  

6.2 搭建nginx2, 同nginx1搭建情势是同样的。
与6.1唯一差异的是:

[root@localhost html]# echo "server 192.168.200.104" > index.html

 

瞩目:nginx服务调控方法

/usr/local/nginx/sbin/nginx 运转服务
killall -s HUP nginx 重新加载服务
killall -s QUIT nginx 退出服务

 

7、客户端访问测验:
用浏览器张开
张开三个新的浏览器再一次访谈

可以印证三回访谈到的结果个别为:
server 192.168.200.103
server 192.168.200.104

8、Haproxy 日志

Haproxy 的日记暗中认可输出到系统的syslog中,为了越来越好的管理Haproxy
的日记,在生产条件中貌似单独定义出来。
8.1 修改Haproxy配置文件中有关日志配置选项,

[root@localhost ~]# vim /etc/haproxy/haproxy.cfg 
# this config needs haproxy-1.1.28 or haproxy-1.2.1

global
    #log 127.0.0.1  local0 
    #log 127.0.0.1  local1 notice

    log /dev/log    local0 info
    log /dev/log    local0 notice
[root@localhost ~]# service haproxy restart
Shutting down haproxy:                                     [确定]
Starting haproxy:                                          [确定]   

这两行安插放到global选项中,首假使将Haproxy的info和notice日志分别记录到差异的日志文件中

8.2 修改rsyslog配置
为了便于管理,将Haproxy相关的布置独立定义到haproxy.conf
并内置/etc/rsyslog.d/
下,rsyslog运转时会自动加载此目录下的具有配置文件。

[root@localhost ~]# vim /etc/rsyslog.d/haproxy.conf
if ($programname == 'haproxy' and $syslogserverity-text == 'info') then -/var/log/haproxy/haproxy-info.log
&~
if ($programname == 'haproxy' and $syslogserverity-text == 'notice') then -/var/log/haproxy/haproxy-notice.log
&~  

将haproxy的info日志记录到/var/log/haproxy/haproxy-info.log中,将notice日志记录到/var/log/haproxy/haproxy-notice.log中,将notice日志记录到/var/log/haproxy/haproxy-notice
&~ 代表当写入到日志文件后,rsyslog停止处理那么些音信,(rainerscript
脚本语言)

重启rsyslog服务
[root@localhost ~]# service rsyslog restart
关闭系统日志记录器: [确定]
启航系统日志记录器: [确定]

8.3 查看日志文件是或不是创设成功

[root@localhost ~]# ls -l /var/log/haproxy/haproxy-info.log
[root@localhost ~]# ls -l /var/log/haproxy/haproxy-notice.log

Sep 20 23:39:26 localhost haproxy[2674]: 192.168.200.1:51629 [20/Sep/2015:23:38:27.256] web-cluster web-cluster/inst2 0/0/0/1/59740 200 1648 - - CD-- 0/0/0/0/0 0/0 "GET / HTTP/1.1"
Sep 20 23:40:06 localhost haproxy[2674]: 192.168.200.1:51693 [20/Sep/2015:23:39:34.423] web-cluster web-cluster/inst2 0/0/0/0/32120 200 580 - - ---- 1/1/1/1/0 0/0 "GET / HTTP/1.1"

8.4 状态总结效能测验

图片 2

 

  

  

  

  

  

 

(3)常见的Web集群调解器

眼前常见的Web集群调治器分为软件和硬件,软件通常选择开源的LVS、Haproxy、Nginx,硬件一般选用很多的F5,也可以有很多个人采纳国内的有的产品,如梭子鱼、绿盟等

3、案例景况

此案例使用三台服务器模拟一台Web集群

图片 3

Haproxy集群拓扑

主机 操作系统 IP地址 只要软件
Haproxy服务器 CentOS 6.6 x86_64 192.168.1.10 haproxy-1.4.24.tar.gz

Nginx服务器-1

Centos 6.6 x86_64 192.168.1.20 nginx-1.6.0.tar.gz
Nginx服务器-2 Centos 6.6 x86_64 192.168.1.21 nging-1.6.0.tar.gz
客户端 Wendows XP 192.16.1.30

IE浏览器

案例境况

   
注意:这里服务器是托管在IDC机房中,公网访问使用的是防火墙NAT映射的公网IP,因而服务器端只需配置三个光景IP就能够。若无防火墙映射,提出在服务器配置双网卡双IP,公网央浼访谈公网IP的网卡,Haproxy与种种节点间通讯使用前后网卡

二、案例实践

1、编写翻译安装Nginx服务器

(1)首先搭建Nginx-1,使用nginx-1.6.0.tar.gz安装包进行编写翻译安装

[root@localhost ~]# yum  -y  install  pcre-devel  zlib-devel
[root@localhost ~]# useradd  -M  -s  /sbin/nologin  nginx
[root@localhost ~]# tar  -zxvf  nginx-1.6.0.tar.gz
[root@localhost ~]# cd nginx-1.6.0
[root@localhost nginx-1.6.0]# ./configure  –prefix=/usr/local/nginx 
–user=nginx  –group=nginx
[root@localhost nginx-1.6.0]# make  &&  make  install

    安装实现后私下认可音讯如下

私下认可安装目录:/usr/local/nginx/

默许日志:/usr/local/nginx/logs/

私下认可监听:80

默认Web目录:/usr/local/nginx/html/

[root@localhost nginx-1.6.0]# cd  /usr/local/nginx/html/
[root@localhost html]# echo  “Server  192.168.1.20” >test.html   
      //建构测验页面
[root@localhost html]# /usr/local/nginx/sbin/nginx                   
  //启动Nginx
[root@localhost html]# netstat  -utpln  |  grep  nginx
tcp        0      0 0.0.0.0:80          0.0.0.0:*          LISTEN     
  4262/nginx
     
[root@localhost html]# service  iptables  stop

   
为了便于实验,网址尚未布署域名,直接动用IP地址。在客户端访谈

图片 4