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 <<EOF
global
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/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
ExecStart=/usr/local/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid
ExecReload=/bin/kill -USR2
[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.查看监控界面
本文地址:https://blog.csdn.net/DragonYear/article/details/107593486
下一篇: 主成分分析