设为首页 收藏本站
查看: 1318|回复: 0

[经验分享] 使用Haproxy搭建负载均衡高可用群集

[复制链接]

尚未签到

发表于 2019-1-2 07:28:04 | 显示全部楼层 |阅读模式
  Haproxy是目前比较流行的一种集群调度工具,同类的集群工具有很多,前面已经介绍了LVS、Nginx。相比较而言,LVS性能最好,但是搭建相对复杂,Nginx的upstream模块支持集群功能,但是对集群节点健康检查功能不强,性能没有Haproxy好。本篇博客将介绍haproxy搭建Web群集的安装配置和日志配置


  常见的Web集群调度器
  Nginx:nginx是一款轻量级,能实现缓存、webserver、邮件、负载均衡等功能,但nginx的许多功能都需要第三方的模块,但对集群节点健康检查功能不强
  Haproxy:转发能力比nginx有更强更灵活的定制性,可以运用splice实现0复制的转发,并且有更直观的图形化管理界面,不过通用性不如nginx,并无缓存功能
  lvs:lvs是工作在内核空间上直接转发的,无缓存功能,性能好,配置较复杂
  

  负载均衡常用调度算法
  RR(Round Robin):轮询调度,轮询分配访问请求实现负载均衡效果
  LC(Least Connections):最小连接数,根据后端的节点连接数大小动态分配前端请求
  SH(Source Hashing):基于来源的IP、Cookie等做集群调度,好处是实现会话保持,但某些IP访问量很大时可能影响负载不均衡


案例环境
  本案例使用三台服务器模拟搭建一套Web集群,如下所示:

主机
角色
IP
web1
real server-1
192.168.1.1/24
web2
real server-2
192.168.1.2/24
haproxy
代理服务器
192.168.1.10/24
win7
客户端
192.168.1.100/24
  实验步骤如下:
  1. 编辑安装nginx服务器
  (1)搭建nginx1
[root@localhost ~]# yum -y install pcre-devel zlib-devel
[root@localhost ~]# tar zxf nginx-1.6.2.tar.gz
[root@localhost nginx-1.6.2]# ./configure  --prefix=/usr/local/nginx  
[root@localhost nginx-1.6.2]# make && make install
[root@localhost nginx-1.6.2]# cd /usr/local/nginx/html
[root@localhost html]# echo "this is 192.168.1.1" > index.html         //建立测试页面
[root@localhost html]# /usr/local/nginx/sbin/nginx                     //启动nginx
[root@localhost html]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT      //建立防火墙规则  (2)搭建nginx2,步骤与nginx1相同,建立不同的测试页面
  安装完成后,在客户端访问nginx进行测试,如下图所示:



  
2. 安装配置haproxy
[root@localhost ~]# yum -y install pcre-devel bzip2-devel
[root@localhost ~]# tar zxf haproxy-1.4.24.tar.gz
[root@localhost ~]# cd haproxy-1.4.24
[root@localhost haproxy-1.4.24]# make TARGET=linux26
[root@localhost haproxy-1.4.24]# make install
[root@localhost haproxy-1.4.24]# mkdir /etc/haproxy      //创建配置文件目录
[root@localhost haproxy-1.4.24]# cp examples/haproxy.cfg /etc/haproxy/  //将样本复制到配置文件目录  
  3. 根据目前集群设计,将haproxy.cfg配置文件修改如下:
[root@localhost haproxy-1.4.24]# vim /etc/haproxy/haproxy.cfg
global                    //全局配置
        log 127.0.0.1   local0          //配置日志记录,默认存放到系统日志
        log 127.0.0.1   local1 notice   //notice为日志级别,通常有24个级别
        maxconn 4096          //最大连接数
        uid 99                //用户uid
        gid 99                //用户gid
        daemon                //后台运行
        #debug
        #quiet
defaults                   //默认配置
        log     global              //定义全局配置日志格式
        mode    http                //模式为http
        option  httplog             //采用http日志格式记录日志
        option  dontlognull         //不记录健康检查的日志信息
        retries 3           //检查节点的失败次数,连续失败三次则认为节点不可用
        maxconn 2000                 //最大连接数
        contimeout      5000         //连接超时时间
        clitimeout      50000        //客户端超时时间
        srvtimeout      50000        //服务器超时时间
listen  webcluster 0.0.0.0:80        //定义一个webcluster应用模块
    option httpchk GET /index.html      //检查服务器的index.html文件
    balance     roundrobin              //负载均衡的调度算法采用轮询算法
    server inst1 192.168.1.1:80 check inter 2000 fall 3    //定义在线节点,每间隔2秒检查3次
    server inst2 192.168.1.2:80 check inter 2000 fall 3    //定义备份节点  4. 创建自启动脚本
[root@localhost haproxy-1.4.24]# cp examples/haproxy.init /etc/init.d/haproxy
[root@localhost haproxy-1.4.24]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@localhost haproxy-1.4.24]# chmod +x /etc/init.d/haproxy
[root@localhost haproxy-1.4.24]# /etc/init.d/haproxy start
Starting haproxy:                                          [确定]
[root@localhost haproxy-1.4.24]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT  5. 测试Web集群
  通过上面的步骤,已经搭建完成Haproxy的Web集群,下面验证一下集群是否正常工作,一个集群一般具备两个特性:高性能与高可用
  (1)测试高性能
  在客户端使用浏览器打开http://192.168.1.10,如下图所示:

  (2)测试高可用
    现在将nginx1服务停用,在客户端访问代理服务器,浏览器会显示nginx2网页内容,不会影响集群的使用,满足了集群的高可用性


  6. 配置haproxy日志
    Haproxy的日志默认是保存到系统的syslog中,查看起来不方便,所以我们在生产环境中可以将日志单独存储到不同的文件中,配置如下:
(1)修改配置文件
[root@localhost ~]# vim /etc/haproxy/haproxy.cfg
log /dev/log    local0 info       //将info、notice日志记录分别记录到不同的日志文件中
log /dev/log    local0 notice
[root@localhost ~]# service haproxy restart
Shutting down haproxy:                                     [确定]
Starting haproxy:                                          [确定]  (2)修改rsyslog配置
  将haproxy相关的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d下,rsyslog启动时会自动加载此目录下所有的配置文件

[root@localhost ~]# touch /etc/rsyslog.d/haproxy.conf
[root@localhost ~]# vim /etc/rsyslog.d/haproxy.conf
if ($programname == 'haproxy' and $syslogseverity-text == 'info') then -/var/log/haproxy/haproxy-info.log
& ~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice') then -/var/log/haproxy/haproxy-notice.log
& ~
[root@localhost ~]# service rsyslog restart
关闭系统日志记录器:                                       [确定]
启动系统日志记录器:                                       [确定]  7. 测试日志信息
[root@localhost ~]# tail -f /var/log/haproxy/haproxy-info.log   //查看haproxy的访问请求日志信息
Feb 28 19:37:38 localhost haproxy[8432]: 192.168.1.111:61757 [28/Feb/2018:19:37:38.000]
webcluster webcluster/inst1 0/0/0/1/3 304 150 - - ---- 2/2/0/0/0 0/0 "GET / HTTP/1.1"  如果haproxy服务器出现故障,依然会影响集群的使用,可以增加一台haproxy安装keepalived保证haproxy服务器本身的高可用,注意防火墙开启224.0.0.18端口,这是keepalived的组播地址。
  iptables -I INPUT -p ip -d 224.0.0.18 -j ACCEPT
  参考文档:http://blog.运维网.com/yangshufan/2067083




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-658440-1-1.html 上篇帖子: 负载均衡之Haproxy安装配置篇 下篇帖子: haproxy配置文件说明
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表