haproxy实现负载均衡集群

1.HAProxy概述

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。
HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
其支持从4层至7层的网络交换,即覆盖所有的TCP协议。就是说,Haproxy 甚至还支持 Mysql的均衡负载。
相同点:在功能上,proxy通过反向代理方式实现 WEB均衡负载。和 Nginx,ApacheProxy,lighttpd,Cheroke 等一样。
不同点:Haproxy 并不是 web 服务器。以上提到所有带反向代理均衡负载的产品,都清一色是 WEB 服务器。简单说,就是他们能处理解析页面的。而Haproxy 仅仅是一款的用于均衡负载的应用代理。其自身并不能提供web服务。但其配置简单, 拥有非常不错的服务器健康检查功能还有专门的系统状态监控页面,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入。

2.实战

1.安装依赖包

[root@longnian ~]# yum -y install make gcc pcre-devel bzip2-devel openssl-devel systemd-devel

2.安装haproxy

[root@longnian src]# tar xf haproxy-2.1.3.tar.gz
[root@longnian haproxy-2.1.3]# useradd -r -M -s /sbin/nologin haproxy
[root@longnian haproxy-2.1.3]# make -j $(nproc) TARGET=linux-glibc USE_OPENSSL=1 USE_ZLIB=1 USE_PCRE=1 USE_SYSTEMD=1
...........
[root@longnian haproxy-2.1.3]# make install

[root@longnian ~]# which haproxy
/usr/local/sbin/haproxy

[root@longnian ~]# echo 'net.ipv4.ip_nonlocal_bind = 1' >>  /etc/sysctl.conf
[root@longnian ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
[root@longnian ~]# sysctl  -p

3. 没有生成配置文件,自己手动写一个HAproxy配置文件

[root@longnian ~]# mkdir /etc/haproxy
[root@longnian haproxy-2.1.3]# cd /etc/haproxy/
cat > /etc/haproxy/haproxy.cfg <<EOFglobal
    log 127.0.0.1 local0  info
    maxconn 20480
    pidfile /var/run/haproxy.pid
    user haproxy
    group haproxy
    daemon
defaults
    mode http
    log global
    option dontlognull
    option httpclose
    option httplog
    option redispatch
    balance roundrobin
    timeout connect 10s
    timeout client 10s
    timeout server 10s
    timeout check 10s
    maxconn 60000
    retries 3
listen admin_stats
    bind 0.0.0.0:8189
    stats enable
    mode http
    log global
    stats uri /haproxy_stats
    stats realm Haproxy\ Statistics
    stats auth admin:admin
    stats admin if TRUE
    stats refresh 30s
listen webcluster
    bind 0.0.0.0:80
    mode http
    log global
    maxconn 3000
    balance roundrobin
    cookie SESSION_COOKIE insert indirect nocache
    server web01 192.168.159.132:80 weight 2 check inter 2000 fall 5
    server web02 192.168.159.136:80 check inter 2000 fall 5
EOF

关于负载均衡算法
  #source    根据请求源IP
  #static-rr   根据权重
  #leastconn 最少连接者先处理
  #uri     根据请求的uri
  #url_param 根据请求的url参数
  #rdp-cookie 据据cookie(name)来锁定并哈希每一次请求
  #hdr(name) 根据HTTP请求头来锁定每一次HTTP请求
  #roundrobin 轮询方式

4.haproxy.service文件编写

[root@longnian ~]#  cat > /usr/lib/systemd/system/haproxy.service <<EOF
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target

[Service]
ExecStartPre=/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg   -c -q
ExecStart=/usr/local/haproxy/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg  -p /var/run/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target
EOF

5.启动haproxy和日志服务

[root@longnian ~]# systemctl daemon-reload
[root@longnian ~]# systemctl restart haproxy

[root@longnian ~]# ss -anlt
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      128     127.0.0.1:9000                        *:*                  
LISTEN      0      64              *:43755                       *:*                  
LISTEN      0      128             *:59759                       *:*                  
LISTEN      0      128             *:111                         *:*                  
LISTEN      0      128             *:80                          *:*                  
LISTEN      0      128             *:20048                       *:*                  
LISTEN      0      128             *:22                          *:*                  
LISTEN      0      100     127.0.0.1:25                          *:*                  
LISTEN      0      128             *:3260                        *:*                  
LISTEN      0      128             *:8189                        *:*                  
LISTEN      0      64              *:2049                        *:*                  
LISTEN      0      80             :::3306                       :::*                  
LISTEN      0      64             :::47439                      :::*                  
LISTEN      0      128            :::111                        :::*                  
LISTEN      0      128            :::20048                      :::*                  
LISTEN      0      128            :::54996                      :::*                  
LISTEN      0      128            :::22                         :::*                  
LISTEN      0      100           ::1:25                         :::*                  
LISTEN      0      128            :::3260                       :::*                  
LISTEN      0      64             :::2049                       :::*

6.在另外两台服务器上配置http

6.1安装httpd

[root@node01 ~]# yum -y install httpd
[root@node02 ~]# yum -y install httpd

6.2修改index.html

[root@node01 ~]# echo "node01" > /var/www/html/index.html
[root@node02 ~]# echo "node02" > /var/www/html/index.html

6.3访问web

在这里插入图片描述
在这里插入图片描述

7.用haproxy访问查看效果

在这里插入图片描述
在这里插入图片描述

8.查看监控界面

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/DragonYear/article/details/107593486