一 、常见的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

麒麟v10 安装 mysql 麒麟v10 安装haproxy_服务器

麒麟v10 安装 mysql 麒麟v10 安装haproxy_linux_02

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

麒麟v10 安装 mysql 麒麟v10 安装haproxy_服务器_03

3.5  Haproxy 监控界面

麒麟v10 安装 mysql 麒麟v10 安装haproxy_服务器_04

麒麟v10 安装 mysql 麒麟v10 安装haproxy_nginx_05