使用Haproxy搭建Web群集

匿名 (未验证) 提交于 2019-12-03 00:09:02

1.案例概述
Haproxy是目前比较流行的一种群集调度工具,同类的调度工具有很多,如LVS和Nginx。相较而言,LVS性能最好,但搭建相对复杂;Nginx的upstream模块支持群集功能,但对群集节点健康检查功能不强,性能没有Haproxy好。

2.案例前置知识
1)HTTP请求
通过URL访问网站使用的协议是HTTP协议,此类请求一般称为HTTP请求。HTTP请求的方式分为GET方式和POST方式。当使用浏览器访问某一个URL,会根据请求URL返回状态码,通常正常状态码为2x x,3x x(如200,301),如果出现异常会返回状态码为4x x,5x x(如400,500)。

2)负载均衡常用调度算法

  • LVS,Haproxy,Nginx最常用的调度算法有三种,如下所述。
  • RR:算法是最简单最常用的一种算法,即轮询调度。
  • LC:算法即最小连接数算法,根据后端的节点连接数大小动态分配前段请求。
  • SH:即基于来源访问调度算法,此算法用于一些有Session会话记录在服务器的场景,可以基于来源的IP,Cookie等做群集调度。

3.案例环境

1)编译安装nginx服务器

(1)搭建nginx1,使用nginx-1.12.0.tar.gz安装包进行编译安装。 [root@localhost ~]# yum -y install pcre-devel zlib-devel [root@localhost ~]# useradd -M -s /sbin/nologin nginx [root@localhost media]# tar xf nginx-1.12.0.tar.gz -C /usr/src/ [root@localhost media]# cd /usr/src/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
[root@localhost nginx-1.12.0]# cd /usr/local/nginx/html [root@localhost html]# echo 111 > test.html    //建立测试页面 [root@localhost html]# /usr/local/nginx/sbin/nginx   //启动nginx

2)编译安装Haproxy

使用haproxy-1.5.19.tar.gz安装包进行编译安装。 [root@localhost ~]# yum -y install pcre-devel bzip2-devel [root@localhost media]# tar xf haproxy-1.5.19.tar.gz -C /usr/src/ [root@localhost media]# cd /usr/src/haproxy-1.5.19/ [root@localhost haproxy-1.5.19]# make TARGET=linux26    //64位系统 [root@localhost haproxy-1.5.19]# make install

3)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文件复制到配置文件目录

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 loghost    local0 info         maxconn 4096         #chroot /usr/share/haproxy   //此处需要注释“#”         uid 99         gid 99         daemon         #debug         #quiet  defaults         log     global         mode    http         option  httplog         option  dontlognull         retries 3         #redispatch   //此处需要注释““#”         maxconn 2000         contimeout      5000         clitimeout      50000         srvtimeout      50000 listen  appli4-backup 0.0.0.0:80    //默认所有端口为80         option  httpchk GET /index.html    //HTTP的请求方式为GET         balance roundrobin         server  inst1 192.168.1.20:80 check inter 2000 fall 3   //端口更改为80         server  inst2 192.168.1.30:80 check inter 2000 fall 3  //BACKUP 表示为备用服务器 

5)创建自启动脚本

[root@localhost haproxy-1.5.19]# cp /usr/src/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy [root@localhost haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy [root@localhost haproxy-1.5.19]# chmod +x /etc/init.d/haproxy [root@localhost haproxy-1.5.19]# chkconfig --add /etc/init.d/haproxy  [root@localhost haproxy-1.5.19]# /etc/init.d/haproxy start Starting haproxy (via systemctl):                          [  确定  ]
     最后测试web群集只需在两台nginx服务器上echo两条测试文件就可以啦!


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!