
xiaojizhi2023
2023/03/10阅读:12主题:默认主题
中间件介绍

中间件
一、定义
1)中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。目前,它并没有很严格的定义,普遍接受IDC的定义:中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。从这个意义上可以用一个等式来表示中间件:中间件=平台+通信,这也就限定了只有用于分布式系统中才能叫中间件,同时也把它与支撑软件和实用软件区分开来。
2)进程是资源分配的最小单位,线程是CPU调度的最小单位;
3)Cloudera(CDH)提供一个可伸缩,稳定的,综合的企业级大数据管理平台,它拥有最多的部署案例,提供强大的部署,管理和监控工具;
二、集群(Cluster)
2.1. 简介
一组协同工作的服务器,对外表现为一个整体,更好的利用现有资源实现服务的高度可用。
2.2. 分类
-
1)LBC(Load Balancing Cluster):
负载均衡集群
-
减轻单台服务器的压力,将用户请求分担给多台主机一起处理 -
硬件实现:F5: 4层 硬件负载均衡设备 -
软件实现: -
LVS: 纯 4层 负载均衡,运行在内核态,性能是软件负载均衡中最高的; -
Nginx: 支持 4层 / 7层 负载均衡,支持 HTTP、E-mail 协议; -
HAProxy: 是 4层 / 7层 负载均衡软件,支持 7 层规则的设置,性能也不错; HAProxy安装与配置 - 我爱吃芹菜~ - 博客园 (cnblogs.com)
-
-
-
-
2)HAC(High Availability Cluster):
高可用集群
-
心跳检测 -
最大限度的保证用户的应用持久,不间断的提供服务 -
硬件实现:F5 -
软件实现: -
HeartBeat -
Keepalived
-
-
3)HPC(High-performance computing Cluster):
高性能运算集群
-
2.3. LB软件简介及使用
2.3.1 LVS介绍
LVS 运行在系统内核空间
netfilter
的INPUT
钩子上的框架,用户空间无法直接管理,用IPVSADM命令行工具管理集群服务;根据用户请求的套接字判断,将请求分流至真实服务器的工作模块;
三种工作模式:DR(Direct Routing)、NAT(多目标DNAT)、TUN,实施中用得最多的还是LVS/DR+Keepalived;
1)DR(Direct Routing): LB收到请求包后, 将请求包中 目标MAC地址
转换为某个选定RS的MAC地址
后将包转发出去,RS收到请求包后, 可直接将应答内容传给用户
,此时要求LB和所有RS都必须在一个物理网段内, 且LB与RS群共享一个虚拟IP.2)NAT(Network Address Translation): LB收到用户请求包后, LB将 请求包中虚拟服务器的IP地址
转换为某个选定RS的IP地址
, 转发给RS; RS将应答包发给 LB, LB将应答包中RS的IP转为虚拟服务器的IP地址, 回送给用户,无论是进来的流量,还是出去的流量,都必须经过负载均衡器;3)TUN(IP Tunneling): LB收到用户请求包后, 根据IP隧道协议封装该包, 然后传给某个选定的RS; RS解出请求信息, 直接将应答内容传给用户。此时要求RS和LB都要支持IP隧道协议. 调度算法:
静态算法(RR-轮询、WRR-加权、SH-源地址散列、DH-目标地址散列) 动态算法(LC、WLC、SED、NQ、LBLC、LBLCR)
2.3.2. HAProxy简介
HAProxy是一个免费的负载均衡软件:
负载均衡:L4(传输层)和L7(应用层)两种模式; 4层负载均衡:用的是TCP协议加端口号做的负载均衡; 7层负载均衡:用的7层HTTP协议; 支持RR/静态RR/LC/IP Hash/URI Hash/URL_PARAM Hash/HTTP_HEADER Hash等丰富的负载均衡算法; 健康检查:支持HTTP和TCP两种健康检查模式;
# 二层负载均衡(mac)
用于虚拟mac地址方式,外部对虚拟mac地址请求,负载均衡接收后分配给后端实际的mac地址响应。
# 三层负载均衡(ip)
一般用于虚拟ip地址的方式,外部对虚拟ip地址请求,负载均衡接收后分配给后端实际的ip地址响应。
# 四层负载均衡(tcp)
在三层负载均衡的基础上,用ip+port接收请求,在转发到对应的机器上;F5,lvs,nginx,haproxy
# 七层负载均衡(http)
根据虚拟的url或者ip,主机名接收请求,在转发到相应的处理服务器上;haproxy,nginx,apache,mysql proxy
cat > README.md <<EOF
# haproxy的配置文件由两部分组成:全局设定和对代理的设定,共分为五段:**global defaults frontend backend listen**
1. global: 全局配置,主要用于定义全局参数,属于进程级的配置,通常和操作系统配置有关。
2. default: 配置默认参数,这些参数可以被用到frontend,backend,Listen组件。
3. frontend:**接收请求的前端虚拟节点**,frontend可以指定具体使用后端的backend。
4. backend : **后端服务集群的配置,真实服务器**,一个backend对应一个或者多个实体服务器。
5. listen: fronted和backend的组合体,比如haproxy实例状态监控部分配置,Haproxy1.3之前的唯一配置方式。
EOF
2.4. HA软件简介及使用
2.4.1. Heartbeat简介
Heartbeat
Heartbeat是一个开源的高可用性软件,它的主要功能是通过监控服务器的心跳信号来判断服务器的可用性。在一个集群中,当某个服务器宕机时,heartbeat会检测到这个问题,并启动备用服务器来接管宕机服务器的工作,以保证服务的高可用性。在heartbeat中,有一个主机是活动的,而其他的主机则是备用状态,等待活动主机宕机后接管其工作。由于heartbeat只是通过简单的心跳信号来检测服务器的可用性,因此它对被监控的服务器的负载非常小,同时也非常稳定可靠。
# heartbeat配置文件(主要有3个)
1. 密钥文件authkeys,权限600:实现主机和备机之间的认证
dd if=/dev/random bs=512 count=1 | openssl md5
2. heartbeat服务配置ha.cf
ucast ens33 192.168.1.103 #采用网卡ens33的UDP多播来组织心跳,后面跟的IP地址应该为双机中对方的IP地址
3. 资源管理配置文件haresources:可以实现VIP创建以及调用脚本管控服务。
cat /usr/local/heartbeat/etc/ha.d/haresources | tail -n
haproxy-master IPaddr::192.168.1.200/24/ens33:0 haproxy # 192.168.1.200 为VIP, 相当于创建VIP 网卡, 启动时还会启动haproxy脚本,haproxy脚本位置在/usr/local/heartbeat/etc/ha.d/resource.d/
2.4.2. Keepalived简介
Keepalived
keepalived是集群管理中保证集群高可用(HA)的一个服务软件,用来防止单点故障; keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议;
# /etc/keepalived/keepalived.conf
cat > README.md <<EOF
1. vrrp_instance
2. vrrp_script
script "/path/to/somewhere" //指定要执行的脚本的路径。
interval <INTEGER> //指定脚本执行的间隔。单位是秒。默认为1s。
timeout <INTEGER> //指定在多少秒后,脚本被认为执行失败。
weight <-254 --- 254> //调整优先级。默认为2.
rise <INTEGER> //执行成功多少次才认为是成功。
fall <INTEGER> //执行失败多少次才认为失败。
user <USERNAME> [GROUPNAME] //运行脚本的用户和组。
init_fail //假设脚本初始状态是失败状态。
3. real_server
4. tcp_check
EOF

作者介绍
