玩转Linux之Haproxy搭建群集

目标:

  1. 了解Haproxy的特点
  2. 轻松使用Haproxy搭建群集

内容:

一、 HAProxy的特点是:

  1. 支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;
  2. 能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
  3. 支持url检测后端的服务器出问题的检测会有很好的帮助。
  4. 更多的负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)
  5. 单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度。
  6. HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
  7. 支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)
  8. 适用场景:网站建设初期,可以选用Haproxy作为反向代理负载均衡(或者流量不大都可以不用负载均衡功能),因为其配置简单,性能也能满足一般的业务场景。

二、 案例

玩转Linux之Haproxy搭建群集

  1. 环境搭建
    使用脚本为各个服务器配置IP地址,设置防火墙策略(实验环境暂时关闭)
#!/bin/bash
sed -i '2c BOOTPROTO=static'   /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i '17c ONBOOT=yes'   /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i '17a IPADDR=192.168.2.1'  /etc/sysconfig/network-scripts/ifcfg-ens33
ifdown ens33;ifup ens33
systemctl stop firewalld
setenforce 0
  1. 编译安装Nginx服务器
    详见轻松搭建Nginx服务
  2. 编译安装Haproxy
挂载系统盘,安装依赖包(省略挂盘,配置yum仓库过程)
yum -y install pcre-devel  bzip2-devel
解压
tar xf /mnt/haproxy-1.5.19.tar.gz -C /usr/src/
进入解压后目录
cd /usr/src/haproxy-1.5.19/
指定系统类型64位
make TARGET=linux26
安装
make install

执行指定系统类型命令,显示如下:
玩转Linux之Haproxy搭建群集
执行安装命令,显示如下:
玩转Linux之Haproxy搭建群集

  1. haproxy服务器配置(注意:这是技术难点)
    (1)创建配置文件
在系统目录里创建目录
mkdir  -p  /etc/haproxy
复制样例配置文件
cp  examples/haproxy.cfg   /etc/haproxy/
编辑复制后的配置文件
vim   /etc/haproxy/haproxy.cfg

编辑配置文件内容
玩转Linux之Haproxy搭建群集
玩转Linux之Haproxy搭建群集

解释:

global
        log /dev/log   local0 info  //配置日志记录,1ocal0为日志设备,默认存放到系统日志。
        log /dev/log  local1 notice //notice为日志级别,通常有24个级别
        maxconn 4096    //定义每个haproxy进程的最大连接数
        
chroot /usr/share/haproxy //将其禁锢在指定目录,由于配置目录不是这个位置,故注释掉
        uid 99
        gid 99
        daemon //以守护模式运行
        nbproc 4   //设置haproxy启动时的进程数,该值的设置应该和服务器的CPU核心数一致,
        defaults配置项配置默认参数,一般会被应用组件继承,如果在应用组件中没有特别声明,将安装默认配置参数设置。

defaults
        log     global  //定义日志为g1oba1配置中的日志定义
        mode    http   http模式,也可以为tcp模式
        option  httplog  启用http日志
        option  dontlognull 不记录空链接
        retries 3  定义连接后端服务器的失败重连次数
       #redispatch   将客户的请求强制定向到另外一个后端server上,以保证服务的正常
        maxconn 2000 
        contimeout 5000 //连接超时时间
        clitimeout 50000 //客户端超时时间
        srvtimeout 50000 //服务器超时时间
        
 listen webcluster 0.0.0.0:80 //应用为web服务,监听IP地址及端口,0.0.0.0代表任意IP地址
  option httpchk GET /index.html  //检查服务器的index.html文件
  balance roundrobin      //调度算*巡
  server inst1 192.168.2.2:80 check inter 2000 fall 3 //定义在线节点
  server inst2 192.168.2.3:80 check inter 2000 fall 3
  
[check]接受健康监测
[inter 2000]监测的间隔时长,单位毫秒
[rise 3]监测正常多少次后被认为后端服务器是可用的
[fall 3]监测失败多少次后被认为后端服务器是不可用的

        
  1. 创建自启动脚本
复制样例到系统文件目录
cp /usr/src/haproxy-1.5.19/examples/haproxy.init  /etc/init.d/haproxy
创建软链接,把haproxy添加到命令的默认搜索路径
 ln -s /usr/local/sbin/haproxy  /usr/sbin/haproxy 
设置执行权限
chmod  +x /etc/init.d/haproxy
添加到开机自启配置文件中
chkconfig  --add /etc/init.d/haproxy
手工启动haproxy
/etc/init.d/haproxy   start

  1. haproxy的日志
    为便于管理,将haproxy相关配置独立定义到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog启动时会自动加载此目录下的所有配置文件。
修改rsyslog配置
vim  /etc/rsyslog.d/haproxy.conf

重启rsyslog服务
systemctl restart rsyslog

测试日志信息
tail -f /var/log/haproxy/haproxy-info.log

修改rsyslog配置内容如下:
玩转Linux之Haproxy搭建群集

  1. 测试高可用性
    未配置NFS,刷新访问群集ip,分别显示web1、web2内容
    玩转Linux之Haproxy搭建群集
    玩转Linux之Haproxy搭建群集
    配置NFS,刷新访问群集ip,显示相同内容
    玩转Linux之Haproxy搭建群集
  2. 测试haproxy日志独立定义到指定文件

玩转Linux之Haproxy搭建群集


上一篇:MySQL 负载均衡集群部署


下一篇:java-布尔值未在线程中更改