一 、常见的web集群调度器
Haproxy 是目前比较流行的一种集群调度工具,同类集群调度器工具有很多,如 LVS 和 Nginx。相比较而言,LVS 性能最好,但是搭建相对复杂;Nginx 的 upstream
模块虽然支持集群功能,但是对集群节点健康检查功能不强,性能没有 Haproxy 好。
二、LVS haproxy nginx区别
(1)LVS基于Linux操作系统实现软负载均衡,而Haproxy和Nginx是基于第三方应用实现的软负载均衡
(2)LVS是可实现4层的IP负载均衡技术,无法实现基于目录、URL的转发。而Haproxy和Nginx都可以实现4层和7层技术,Haproxy可提供TCP和Http应用的负载均衡综合解决方案
(3)LVS因为工作在ISO模型的第四层,其状态监测功能单一,而Haproxy在状态监测方面功能更丰富、强大,可支持端口、URL、脚本等多种状态监测方式
(4)Haproxy功能强大,但整体性能低于4层模式的LVS负载均衡
(5)Nginx主要用于web服务器或缓存服务器
21. 常见调度模式
调度模式 | 作用 |
Round Robin(轮询) | 根据轮询分配访问请求,来实现负载均衡的效果(可以配置权重,以此增加调度概率) |
Least Connections(最小连接数) | 根据后端节点的连接数大小,来动态的分配前端请求(将请求优先分配到连接数小的节点上) |
Source Hashing(基于来源访问调度) | 用于一些有 Session 会话记录在服务器端的场景,可以基于来源 IP、Cookie 等进行集群调度。 |
三、使用 Haproxy + Nginx 实现高可用配置
准备工作:
主机名 | 操作系统 | IP地址 | 软件包 |
Nginx-1 | kylin v10 sp1 | 192.168.1.101 | nginx-1.22.1 |
Nginx-2 | kylin v10 sp1 | 192.168.1.102 | nginx-1.22.1 |
Haproxy | kylin v10 sp1 | 192.168.1.103 | haproxy-2.7.0 |
3.1 安装nginx(nginx-1,nginx-2主机上执行)
cd /tools
wget https://nginx.org/download/nginx-1.22.1.tar.gz
tar -xvf nginx-1.22.1.tar.gz
cd nginx-1.22.1/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-file-aio \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_flv_module \
--with-http_ssl_module \
--with-stream \
--with-pcre
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
echo "<h1>This is 192.168.1.101</h1>" > /usr/local/nginx/html/index.html
echo "<h1>This is 192.168.1.102</h1>" > /usr/local/nginx/html/index.html
3.2 安装配置haproxy(Haproxy主机执行)
root@Haproxy ~]# vim /usr/local/haproxy/haproxy.cfg
global
log 127.0.0.1 local0 info
log 127.0.0.1 local1 notice
maxconn 204800 # 最大连接数
chroot /usr/local/haproxy #
pidfile /usr/local/haproxy/haproxy.pid # 进程文件位置
uid 99 # 运行用户的 UID (对应的用户是 nobody)
gid 99 # 运行组的 GID
daemon # 后台启动
defaults
log global # 引用 global 定义的日志格式
mode http # 代理模式为 HTTP
option httplog # 采用 HTTP 日志格式记录日志
option httpclose # 请求完成后主动关闭 HTTP 通道
option dontlognull # 禁止记录空连接日志记录
option forwardfor # 将客户端真实IP发送至后端服务器
retries 3 # 最大失败次数
balance leastconn # 基于最小连接数进行调度
timeout connect 10s
timeout client 1m
timeout server 1m
timeout check 10s
listen admin_status
bind 0.0.0.0:8001
mode http
stats uri /haproxy # Haproxy 监控界面的 URL
stats auth admin:123456
stats hide-version # 隐藏 Haproxy 监控界面的版本号
listen nginx_upstream
bind 0.0.0.0:8080
mode http
server nginx_1 192.168.1.101:80 check inter 10s fall 3
server nginx_2 192.168.1.102:80 check inter 10s fall 3
3.3 启动haproxy
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
3.4 验证haproxy
3.5 Haproxy 监控界面