Linux下群集服务简介&lvs集群详解

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介:

 Linux下集群服务简介&LVS详解

 Linux下集群服务简介:

Cluster

LB:Load Balancing,负载均衡

HA :High Availability ,高可用
HP :High Performance,高性能

负载均衡集群目的是提供和节点个数成正比的负载能力,这种集群很适合提供大访问 量的Web服务。负载均衡集群往往也具有一定的高可用性特点。

高可用性集群运行于两个或多个节点上,目的是在系统出现某些故障的情况下,仍能继续对外提供服务。高可用性集群的设计思想就是要最大限度地减少服务中断时间。这类集群中比较著名的有Turbolinux TurboHA、Heartbeat、Kimberlite等。

       高性能集群 对一种服务而言不具有负载均衡功能,它可以提高整个系统的可靠性,但不能增加负载的能力。当然,高可用性集群可以运行多种服务,并适当分配在不同节点上,比如节点A提供Oracle服务,同时节点B提供Sybase服务,这也可以看成是某种意义上的负载均衡,不过这是对多种服务的分配而言。 简单的说,高性能计算(High-Performance Computing)是计算机科的一个分支,它致力于开发超级计算机,研究并行算法和开发相关软件。
Director:

4层:TCP/IP port(类似DNAT)

应用层:5/7  代理服务器

LVS: Linux Virtual Server(章文嵩)

LVS:ipvsadm/ipvs

1.     定义虚拟服务器

ip1:80  s  rr

2.    ip1:80  -r  server1

ip2:80   -r   server2

HA  高可用性

HA :High Availability ,高可用

一般性:99.9%

关键性:99.999%

节点:

2 个节点     active - à standby      active- à active
RHCS         redhat aluster suite   100 个节点     n/m模式
arp  缓存 控制信息     心跳线 (双绞线 光纤 串行线)

群集分裂 (split-brain)      

解决方法: stonith(电源交换机,ssh,meatware)fence机器模块设备

共享存储:

Ø das : 直接附加存储  scsi 磁盘柜

Ø nas : 网络附加存储   samba nfs 文件级的共享 效率低

Ø san : 存储区域网络   fc-san(光纤) ip-san(iscsi:ip)效率高

群集文件系统   redhat:gfs2  oracle:ocfs2
故障转移:

故障转移域

多个节点:群集工作票数:quorum   dc

2 个节点:仲裁磁盘(100M)心跳线

实现方式:

heartbeat    v1  v2  v3

群集资源:

群集ip,服务进程(服务脚本) 存储

压力测试工具:ab –c 100 –n 1000 http://172.16.100.1/index.html

 

Linux下集群服务之LVS详解:

1.LVS简介:

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。

目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);

十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。

2.LVS的三种实现技术:

1、        通过NAT实现虚拟服务器(VS/NAT)

特点:

Ø IP DIP必须在同一网段,而且必须为私有地址

Ø  IP 为RIP的default gateway
Ø  irector 很容易会成为整个网络的瓶颈点
Ø  IP 可支持端口映射

2、        通过直接路由实现虚拟服务器(VS/DR)

特点:

Ø RIP DIP必须在同一网段,都不必是私有地址,

Ø  IP 直接给CIP回复,directory只需要处理请求数据,这样的工作效率将成倍的提高,解决了LVM-NAT的瓶颈问题。不能进行端口映射
Ø  IP 不支持端口映射。服务必须使用默认的端口
Ø  理员可以直接通过Internet连接到RIP对服务器进行配置。但这里同时也存在着来自Internet的网络安全隐患

3、        通过IP隧道实现虚拟服务器(VS/TUN)

特点:

Ø IP DIP 都必须为公网地址,DIP RIP之间数据通过网络Internet传送。

Ø  directory 和server可以不再同一个网段,可以跨越地区,其他的都和LVM-DR形式的一样。
Ø  其耗资源,投资较大。

3.LVS的调度算法:

在内核中的连接调度算法上,IPVS已实现了以下十种调度算法:

LVS 的算法分为两大类:

静态算法:只是根据算法进行调度并不考虑后端REALSERVER的实际连接情况

轮叫调度(Round-Robin Scheduling)(rr)

调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

加权轮叫调度(Weighted Round-Robin Scheduling)(wrr)

调度器通过"加权轮叫"调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值

目标地址散列调度(Destination Hashing Scheduling)(dh)

"目标地址散列"调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

源地址散列调度(Source Hashing Scheduling)(sh)

"源地址散列"调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

动态算法:前端的调度器会根据后端REALSERVER的实际连接情况来分配请求

最小连接调度(Least-Connection Scheduling)(LC)

调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。

加权最小连接调度(Weighted Least-Connection Scheduling)(WLC) (Default)

在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

最短预期延时调度(Shortest Expected Delay Scheduling)(SED)
对wlc的改进,在wlc算法的基础上给权重值加一,主要用来针对某个服务器活动链接数值为0情况
不排队调度(Never Queue Scheduling)(NQ)

基于SED算法的改进,不排队。Never Queue从不排队,若第二个要给没有连接数的服务器,不至于让另一个服务器特别闲,在权重差别比较大的时候特别有用。

基于局部性的最少链接(Locality-Based Least Connections Scheduling)(LBLC)

基于本地的最少连接,DH算法的动态算法,会计算缓存上现在处于活动连接的。

带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)(LBLCR)

带复制的基于本地的最少连接,基于icp协议缓存复制来完成的。

4.IPVS命令用法:

ipvsadm 

-A|E –t|u   vip:port  -s SCHEDULING(方法)

-d -D| -t|u       vip:port

-a | e -t|u  vip:port  -g|i|m  (模式 dr,tun,nat)

ipvsadm -A|E -t|u|f service-address [-s scheduler]

[-p [timeout]] [-M netmask]

ipvsadm -D -t|u|f service-address

ipvsadm -C

ipvsadm -R

ipvsadm -S [-n]

ipvsadm -a|e -t|u|f service-address -r server-address

[-g|i|m] [-w weight] [-x upper] [-y lower]

ipvsadm -d -t|u|f service-address -r server-address

ipvsadm -L|l [options]

ipvsadm -Z [-t|u|f service-address]

ipvsadm --set tcp tcpfin udp

ipvsadm --start-daemon state [--mcast-interface interface]

[--syncid syncid]

ipvsadm --stop-daemon state

ipvsadm -h

-A——add-service在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。 
-E ——edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。 
-D ——delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。 
-C ——clear清除内核虚拟服务器表中的所有记录。 
-R 
——restore恢复虚拟服务器规则

-S  ——save  保存虚拟服务器规则,输出为-R 选项可读的格式
-a  ——add-server  在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器
-e  ——edit-server  编辑一条虚拟服务器记录中的某条真实服务器记录
-d  ——delete-server 删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l  ——list  显示内核虚拟服务器表

-Z ——zero虚拟服务表计数器清零(清空当前的连接数量等) 
——set tcp tcpfin udp 设置连接超时值

——start-daemon启动同步守护进程。他后面可以是master 或backup,用来说明LVS Router 是master 或是backup.在这个功能上也可以采用keepalived 的VRRP 功能。 
——stop-daemon 停止同步守护进程

-h ——help显示帮助信息其他的选项:-t ——tcp-service service-address 说明虚拟服务器提供的是tcp 的服务[vip:port] or [real-server-ip:port] -u ——udp-service service-address 说明虚拟服务器提供的是udp 的服务[vip:port] or [real-server-ip:port] -f ——fwmark-service fwmark 说明是经过iptables 标记过的服务类型。 
-s ——scheduler scheduler 使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是: wlc. -p ——persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。 
-M ——netmask netmask persistent granularity mask

-r ——real-server server-address真实的服务器[Real-Server:port]

-g ——gatewaying指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式) 
-i ——ipip 指定LVS 的工作模式为隧道模式-m ——masquerading 指定LVS 的工作模式为NAT 模式-w ——weight weight 真实服务器的权值——mcast-interface interface 指定组播的同步接口-c ——connection 显示LVS 目前的连接 如:ipvsadm -L -c——timeout 显示tcp tcpfin udp 的timeout 值 如:ipvsadm -L ——timeout——daemon 显示同步守护进程状态——stats 显示统计信息——rate 显示速率信息——sort 对虚拟服务器和真实服务器排序输出——numeric -n 输出IP 地址和端口的数字形式

压力测试工具:ab –c 100 –n 1000 http://172.16.100.1/index.html 

LVS-DR模型

 



本文转自xjzhujunjie 51CTO博客,原文链接:http://blog.51cto.com/xjzhujunjie/850650

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
Linux
在Linux中,怎么把脚本添加到系统服务里,即用 service 来调用?
在Linux中,怎么把脚本添加到系统服务里,即用 service 来调用?
|
1月前
|
NoSQL Linux Redis
Linux Redis 服务设置开机自启动
【9月更文挑战第2天】在 Linux 系统中,可使用两种方法设置 Redis 开机自启动:一是通过创建 `redis.service` 文件并利用 systemd 进行管理,包括定义服务参数和启动脚本;二是编辑 `/etc/rc.local` 文件,在其中添加启动命令。推荐使用 systemd 方法,因为它更符合现代 Linux 系统的设计理念。设置完成后,可通过 `sudo systemctl status redis.service` 检查服务状态。
|
13天前
|
编解码 Linux 开发工具
Linux平台x86_64|aarch64架构RTMP推送|轻量级RTSP服务模块集成说明
支持x64_64架构、aarch64架构(需要glibc-2.21及以上版本的Linux系统, 需要libX11.so.6, 需要GLib–2.0, 需安装 libstdc++.so.6.0.21、GLIBCXX_3.4.21、 CXXABI_1.3.9)。
|
2月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
2月前
|
负载均衡 监控 应用服务中间件
在Linux中,lvs/nginx/haproxy 优缺点?
在Linux中,lvs/nginx/haproxy 优缺点?
|
2月前
|
负载均衡 网络协议 Linux
在Linux中, LVS三种模式的工作过程是什么?
在Linux中, LVS三种模式的工作过程是什么?
|
2月前
|
机器学习/深度学习 Ubuntu Linux
在Linux中,如何按照该要求抓包:只过滤出访问http服务的,目标ip为192.168.0.111,一共抓1000个包,并且保存到1.cap文件中?
在Linux中,如何按照该要求抓包:只过滤出访问http服务的,目标ip为192.168.0.111,一共抓1000个包,并且保存到1.cap文件中?
|
2月前
|
开发框架 .NET Linux
【Azure 应用服务】 部署到App Service for Linux 服务的Docker 镜像,如何配置监听端口呢?
【Azure 应用服务】 部署到App Service for Linux 服务的Docker 镜像,如何配置监听端口呢?
|
2月前
|
缓存 负载均衡 应用服务中间件
在Linux中,LVS与nginx有何区别?
在Linux中,LVS与nginx有何区别?
|
2月前
|
负载均衡 算法 Linux
在Linux中,LVS的负载调度算法是什么?
在Linux中,LVS的负载调度算法是什么?