当前位置:   article > 正文

使用 Haproxy 搭建Web群集

使用 Haproxy 搭建Web群集

Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS 和Nginx。相比较而言,LVS.牲能最好.但是搭建相对复杂:Nginx的upstream模块支持群集功能.但是对群集节点健康检查功能不强,性能没有Haproxy好。Haproxy官方网站是http; / /www ,haproxy .org/.

负载均衡常用调度算法

RR  (Round Robin)。RR算法是最简单最常用的一种算法.即轮询调度

LC (Least Connections)。LC算法即最小连接数算法,根据后端的节点连接数大小动态分配前端请求。

SH (Scurce Hashing)。SH 即基于来源访问调度算法.此算法用于一些有Session会话记录在服务器端的场景.可以基于来源的IP、Cookie等做群集调度。

常见的 Web群集调度器

目前常见的Web群集调度器分为软件和硬件.软件通常使用开源的LVS、Haproxy、Nginx,硬件般使用比较多的是F5,也有很多人使用国内的一些产品,如梭子鱼、绿盟等。

部署配置实验

实验环境

虚拟机 3台 centos7.9

网卡NAT模式 数量 1

组件包Haproxy nginx(httpd)

设备

IP

备注

Centos01

192.168.9.32

Node1

Centos02

192.168.9.33

Web1

Centos03

192.168.9.40

Web2

初始配置

关闭防火墙

Systemctl disable firewalld --now

关闭Selinux(192.168.9.32)

  1. setenforce 0
  2. sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

配置IP DNS 网关(192.168.9.32)

nmtui

挂载(192.168.9.32)

mount /dev/cdrom /mnt/  

编译安装 Haproxy

将haproxy安装包上传至node1

安装组件 node1配置(192.168.9.32)

yum -y install pcre-devel bzip2-devel gcc gcc-c++ make

解压安装包(192.168.9.32)

  1. [root@node3 ~]# tar zxf haproxy-1.5.19.tar.gz
  2. [root@node3 ~]# cd haproxy-1.5.19
  3. [root@node3 haproxy-1.5.19]# make TARGET=linux26 && make install

创建主配置文件(192.168.9.32)

  1. [root@node3 haproxy-1.5.19]# mkdir /etc/haproxy
  2. [root@node3 haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/

添加群集web配置信息(192.168.9.32)

  1. [root@node3 haproxy-1.5.19]# vim /etc/haproxy/haproxy.cfg
  2. listen web *:80
  3. option httpchk GET /index.html
  4. balance roundrobin
  5. server inst1 192.168.160.52:80 check inter 2000 fall 3
  6. server inst2 192.168.160.53:80 check inter 2000 fall 3

创建群集根目录(192.168.9.32)

[root@node3 haproxy-1.5.19]# mkdir /usr/share/haproxy

添加haproxy系统服务(192.168.9.32)

  1. [root@node3 haproxy-1.5.19]# cp examples/haproxy.init /etc/init.d/haproxy
  2. [root@node3 haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
  3. [root@node3 haproxy-1.5.19]# chmod +x /etc/init.d/haproxy
  4. [root@node3 haproxy-1.5.19]# chkconfig --add haproxy

启动服务(192.168.9.32)

[root@node3 haproxy-1.5.19]# systemctl start haproxy

Nginx 节点配置

nginx安装包上传至web1和web2

安装组件(192.168.9.32   192.168.9.40)

[root@node3 ~]# yum -y install pcre-devel zlib-devel gcc gcc-c++ make

创建nginx用户(192.168.9.32   192.168.9.40)

useradd -M -s /sbin/nologin nginx

解压文件(192.168.9.32   192.168.9.40)

[root@node2 ~]# tar zxf nginx-1.24.0.tar.gz

执行编译安装(192.168.9.32   192.168.9.40)

  1. cd nginx-1.24.0.tar.gz
  2. [root@node3 nginx-1.24.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
  3. [root@node3 nginx-1.24.0]# make && make install

创建主程序链接文件(192.168.9.32   192.168.9.40)

[root@node3 nginx-1.24.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

添加测试页面web1 和 web2 对应自身IP地址(192.168.9.32   192.168.9.40)

  1. echo "<h1>This is nginx Server 192.168.9.33</h1>" > /usr/local/nginx/html/test.html
  2. echo "<h1>This is nginx Server 192.168.9.40</h1>" > /usr/local/nginx/html/test.html

启动Nginx(192.168.9.32   192.168.9.40)

nginx

 验证测试

访问 web1 192.168.9.40/test.html

访问 web2 http://192.168.9.33/test.html 

访问调度 node1 http://192.168.160.51/test.html

配置Haproxy 独立日志

Node1 配置

  1. vim /etc/rsyslog.d/haproxy.conf
  2. if ($programname == 'haproxy' and $syslogseverity-text == 'info') then -/var/log/haproxy/haproxy-info.log
  3. & ~
  4. if ($programname == 'haproxy' and $syslogseverity-text == 'notice') then -/var/log/haproxy/haproxy-notice.log
  5. & ~

创建日志目录

mkdir /var/log/haproxy

重新启动服务

  1. systemctl restart haproxy
  2. systemctl restart rsyslog

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/204416
推荐阅读
相关标签
  

闽ICP备14008679号