Haproxy搭建web集群

Haproxy搭建web集群html

haproxy是一个使用C语言编写的自由开源代码的一个软件,它提供了一个高可用性、负载均衡,以及基于TCP和httplinux

的应用程序代理。haproxy特别适用于那些负载量特别大的web站点,这些站点一般又须要会话保持或七层处理,haproxy运行在当前的硬件上,彻底能够支持数以万的并发链接。而且它的运行模式使它能够简单安全的进您当前的架构中,同时能够保护你的web服务器不会暴露在网络上。c++

haproxy实现了一种事件驱动,单一进程模型,此模型支持很大的并发链接数,多进程或者多线程模型受内存限制web

不多能处理千并发链接,事件驱动模型由于在有更好的资源和时间管理和用户空间实现全部这些任务,因此没有这算法

问题。此模型是在多核系统上,这些程序一般扩展性比较差。这就是为何它们必须进行优化,使每一个cpu时间片作windows

更多的工做。浏览器

负载均衡经常使用的调度算法安全

1)RR算法算法是一种最简单最经常使用的一种算法,即轮询算法,例如A-B-C,第一个用户访问会被指派到A节点,第二个用户访问会被指派到B节点,第三个用户访问会指派到C节点,轮询分配的请求实现了负载均衡效果,根据每一个节点的权重分配访问请求。服务器

 2)LC算法是一种最小连接数算法,例如A4 B5 C6 第一个用户链接会被派到A上,链接数变为了A5 B5 C6,第二个用户链接分发到A上,链接数变成了A6 B5 C6 第三个链接数又会分派到B 每次将新的请求分派到链接最小的客户端,所以算法相比较RR算法有很大的改进,是目前用的比较多的一种算法cookie

 3)SH算法用于一些会话记录在服务端的场景例若有三个节点A B C 第一个用户访问被分派到A 第二个用户访问会被指派到B,当一个用户在次访问它仍是会分派到A 当第二个用户访问它仍是分派到B,此调度器算法好处实现了会话保持,但某些ip访问量特大的状况下,会引发负载不均衡的效果,影响业务的使用

 

案例环境:

Haproxy: 192.168.92.150     Web1:192.168.92.151    Web2:192.168.92.152     客户端:windows10

1、配置web1服务器

这边yum install httpd的过程我就不演示了,安装好以后以下:

 

# service httpd start
正在启动 httpd:httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
                                                           [肯定]
# echo "httpd1" > /var/www/html/index.html

2)配置web2服务器

 

 

# service httpd start
正在启动 httpd:httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
[肯定]
# echo "httpd2" > /var/www/html/index.html

客户机分别访问web1&&web2的测试页

 




 

注意:若是访问不到请添加防火墙规则或者关闭防火墙

2、配置Haproxy服务器

1.编译安装Haproxy

 

# yum install gcc gcc-c++ -y && yum install pcre-devel bzip2-devel
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
aaa                                                                                                                       | 3.9 kB     00:00 ... 
aaa/primary_db                                                                                                            | 3.1 MB     00:00 ... 
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package gcc.x86_64 0:4.4.7-4.el6 will be installed
--> Processing Dependency: cpp = 4.4.7-4.el6 for package: gcc-4.4.7-4.el6.x86_64

2.解压编译安装

 

 

CHANGELOG  doc     examples  LICENSE   Makefile.bsd  README   src      tests  VERDATE
contrib    ebtree  include   Makefile  Makefile.osx  ROADMAP  SUBVERS  TODO   VERSION
[root@localhost haproxy-1.4.24]# make TARGET=linux26# tar zxf haproxy-1.4.24.tar.gz 
[root@localhost ~]# cd haproxy-1.4.24
[root@localhost haproxy-1.4.24]# ls
CHANGELOG doc examples LICENSE Makefile.bsd README src tests VERDATE contrib ebtree include Makefile Makefile.osx ROADMAP SUBVERS TODO VERSION
[root@localhost haproxy-1.4.24]# make TARGET=linux26
#make install

3.Haproxy服务配置

 

1)建立配置文件目录,把haproxy.cfg文件复制到配置文件目录

 

# mkdir /etc/haproxy
# cp examples/haproxy.cfg /etc/haproxy/

2)配置项介绍

 

haproxy的配置文件分为三个部分,globaldefaultslisten。global为全局配置,defaults为默认配置,listen为应用组件配置

# this config needs haproxy-1.1.28 or haproxy-1.2.1

global
        log 127.0.0.1   local0             //配置日志记录,local0为日志设备,默认存放到系统日志
        log 127.0.0.1   local1 notice	   //notice为日志级别,一般有24个级别	 
        maxconn 4096			   //最大链接数        
        uid 99				   //用户uid
        gid 99				   //用户gid



defaults
        log     global			   //定义日志为global配置中的定义
        mode    http			   //模式为http
        option  httplog			   //采用http日志格式记录日志      		   
        retries 3			   //检查节点服务器失败次数,达到三次失败,则节点不可用				
        maxconn 2000			   //最大链接数
        contimeout      5000               //链接超时时间
        clitimeout      50000		   //客户端超时时间
        srvtimeout      50000		   //服务器超时时间

listen  appli2-insert 0.0.0.0:10002        //定义一个appli2-insert应用
        option  httpchk/index.html         //检查服务器index.html文件
        balance roundrobin		   //负载均衡调度器轮询算法
        server  inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 3  在线节点
        server  inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 3  备用节点

根据目前的群集环境,修改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
        uid 99
        gid 99
        daemon
        #debug
        #quiet

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

listen  appli1-rewrite 0.0.0.0:10001
        cookie  SERVERID rewrite
        balance roundrobin
        server  app1_1 192.168.34.23:8080 cookie app1inst1 check inter 2000 rise 2 fall 5
        server  app1_2 192.168.34.32:8080 cookie app1inst2 check inter 2000 rise 2 fall 5
        server  app1_3 192.168.34.27:8080 cookie app1inst3 check inter 2000 rise 2 fall 5
        server  app1_4 192.168.34.42:8080 cookie app1inst4 check inter 2000 rise 2 fall 5

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

 


建立自启动脚本

 

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

最后咱们测试web集群,验证集群是否正常,一个集群通常具有两个特征,第一个是高性能,第二个是高可用。

 

1)测试高性能

在客户端使用浏览器输入http://192.168.92.150显示信息以下:

2)测试高可用,如今把92.152停掉再次访问

 

# service httpd stop
中止 httpd:[肯定]


注意:在实际环境中两个页面是同样的!!!

 

但愿对您有所帮助,再见