linux集群之LVS入门和企业级实战

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介:

第一章、集群理论基础

1、集群产生的原因

随着互联网的飞速发展,WEB网页也早已经从单一的静态网页变成了可以实现更多功能的复杂网页了,这后面软件的支持也是相当的庞大,lnmp是最常见的一种动态网页实现方式。随着业务的扩大,承载程序的服务器必然随着业务量的增加而捉襟见肘,必然需要提升业务效率。要达到这样的目的,方法有这几种,第一、通过提升单个服务器的性能,比如增加CPU/内存、存储的读写速度。第二种方法就是讲分层化或者叫功能分离,将实现不同功能的应用放在不同的服务器上来分担负载和风险。第三种,其实也是在第二种的基础上,搭建多个实现相同功能的服务器,并进行负载分担。那如何选择用户在访问资源的时候访问那个具有相同功能的服务器呢,这里就需要使用“负载均衡器”,就是专门负责检查并配发用户请求到一组相同功能服务器的一个软件或者硬件设备。

这里单独说一下mysql数据库的负责均衡,这个需要实现mysql的主从功能,就是只有主服务器可以有读写功能,而从服务器只能有读的功能。所以当有多台从服务器的时候,在应用程序和数据库之间除了负责读写分离的调度器外,还需要一个负载多个读功能的调度器。

2、负责均衡器

按照工作在那个层次分类:

TCP/UDP负载均衡器:工作在内核空间,性能好。功能较少

应用层负责均衡器:工作在用户空间,相对差。功能丰富,可以直接处理应用层协议请求,比如http协议的请求。

3、常见应用在WEB功能上的负责均衡器

TCP/UDP负载均衡器:LVS、haproxy

应用层负载均衡器:haproxy、nginx、apache、lighttped,varnish、squid。

4、常见应用在应用程序功能上的负责均衡器

TCP/UDP负载均衡器:LVS

5、常见应用在MYSQL功能上的负责均衡器

TCP/UDP负载均衡器:LVS

实现MYSQL功能的读写分离,需要更专门的调度器,比如mysql-proxy、amoeba,haproxy。

CDN和智能DNS服务器

CDN全称内容分发网络,工作目的就是缩短客户访问资源的时间,实现最优资源的内容分发和调度。这种技术其实就是通过在不同区域,不同网络,设置多个缓存服务器,不同地区或使用不同网络的用户优先被CDN选择使用离自己最近的缓存服务器中去查询资源。这一技术依赖于智能DNS技术,也就是可以自动识别辨别用户所使用的网络属于哪里。

共享存储(数据)实现高可用的方法:

两台都有lnmap平台的服务器共享一台NFS或者iSCSI的存储设备,并将信息存储在里面,要实现高可用需要一台“电源交换机”,实现不同主机间的切换,简称fencing技术。

集群的类型:

负载均衡集群

高可用集群

高性能集群(实际应用不多,常见的是并行处理系统,hadoop)

监控工具:

cacti、nagios、opsview、icinga、zabbix、ganglia、opennms、zennos

系统部署工具:

pxe、cobbler

自动化运维工具(推送配置):

puppet、saltstack

批量运行命令:

func、fabric、ansible

第二章 负载均衡集群-LOAD BALANCE CLUSTER:LB

常见硬件类型的包括BIGip(F5公司),netscaler(citrix),A10。

HA(高可用集群)常见软件:

hearbeat

corosync

HRCS(red hat cluster suite):cman

keepalived

ultramokey

基本原则:

1、至少3个节点(奇数),用于仲裁。

2、使用协调集群的算法zookeeper。它可以推送配置文件

共享存储通常应用在mysql数据的数据存储上,常用的有NAS和SAN。

NAS文件级别的存储,常见文件系统类型有nfs、samba。

SAN块级别的存储,常见的通信包括以太网通信和光纤通信。如果有多个写同时进行,需要使用特殊的文件系统。

集群文件系统:GFS2,OCFS2

分布式文件锁

HPC(高性能集群):

hadoop:本身搭建比较困难,然后很多公司也依照hadoop研发了自己的软件。比如cloudera、hortomworkers、EMC、INTER。

一、LVS:linux virtual server


LVS功能的实现方法非常类似于linux防火墙netfilter的DNAT功能。lvs在负载均衡选择后端服务器的时候会有一套调度方法,共有10种,而服务器在接收到请求的时候也有不同的响应方式,这种方式成为lvs的工作类型。ipvsadm工作在用户空间,而ipvs工作在内核空间。由于转发依赖于ip:port的形式,所以也称为四层交换或者四层路由。

注意:使用ipvs应该关闭netfilter功能。

572399.tmp

LVS常见调度方法:

静态算法:

RR:轮询调度,依次调度所有可用realserver。

WRR:加权轮询调度,依照每台服务器的不同,设置不同的加权值

SH:源地址hash,相同用户的请求(ip)都使用相同的realserver进行响应,避免了选择不同realserver造成的访问内容的不同(用户cache信息),缺点是当访问的realserver宕机,会造成信息丢失。

DH:目标地址HASH,适用于有多个vip的情况。

870868.tmp

动态算法:

lc:最少连接数算法,依据活动连接数和非活动连接数来计算,公式=活动连接数*256+非活动连接数

wlc:加权lc,公式=(活动连接数*256+非活动连接数)/权重

sed:最短期望延迟算法,是对wlc的改进,公式=(活动连接数+1)*256/权重

nq:永不排队算法,就是开始先每人分一个任务,然后在按照sed算法执行。

lblc::基于本地的最少链接动态的dh算法,dh算法+lc

lblcr:基于本地的带复制的最少链接,

LVS的工作类型(工作架构):

NAT:由调度器处理服务器对客户端的响应,就是数据的来去都经过director调度器。缺点是调度器称为中心,大量访问存在瓶颈问题,优点是只需要一个公网ip地址用在VIP上即可。

1、realserver使用私有ip地址

2、DIP和RIP之间不能有路由器,也就是不能跨网,realserver的网关应该指向DIP。

3、进出报文都经过directory,在高负荷下成为性能瓶颈。

4、支持端口映射。

5、realserver可以使用任意系统。

6、实际应用并不多。

DR:

242344.tmp

客户机将发送请求报文送到路由器,路由器将报文转发到交换机,这时的源ip地址是客户端、目的地址是VIP。由于director和realsever都设置了vip,交换机这个时候就发送广播,由于通过linux内核特性设置了只有director可以接受广播,确认身份,所以当director收到mac地址广播后,它会依据协调算法选取realserver。并按照以下方式响应mac广播,源ip地址目的ip地址不变,修改源mac地址为路由器的mac地址,目的mac地址为指定realserver的mac地址,这样就实现了选择功能。然后通过在realserver设置指定路由来强制将 源ip设置为vip。

特点:

1、realserver可以使用私有地址,建议使用公网ip地址

2、realserver的网关不能指向DIP。

3、realserver和director要在同一个物理网络中,DIP和RIP要在同一个网段。

4、入站报文经过director,出站则由realserver直接响应client。

5、不能做端口映射

6、realserver的os没有限制

TUN :就是在DR基础上采用了隧道协议进行转发。

特点:

1、RIP不能是私有地址

2、realserver的网关不能指向DIP。

3、director和realserver不在同一个网段。

4、入站报文经过director,出站则由realserver直接响应client

5、不能做端口映射

6、realserver的os支持隧道协议。




本文转自 blackstome 51CTO博客,原文链接:http://blog.51cto.com/137783/1968765,如需转载请自行联系原作者

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
22天前
|
存储 网络协议 Ubuntu
【Linux开发实战指南】基于UDP协议的即时聊天室:快速构建登陆、聊天与退出功能
UDP 是一种无连接的、不可靠的传输层协议,位于IP协议之上。它提供了最基本的数据传输服务,不保证数据包的顺序、可靠到达或无重复。与TCP(传输控制协议)相比,UDP具有较低的传输延迟,因为省去了建立连接和确认接收等过程,适用于对实时性要求较高、但能容忍一定数据丢失的场景,如在线视频、语音通话、DNS查询等。 链表 链表是一种动态数据结构,用于存储一系列元素(节点),每个节点包含数据字段和指向下一个节点的引用(指针)。链表分为单向链表、双向链表和循环链表等类型。与数组相比,链表在插入和删除操作上更为高效,因为它不需要移动元素,只需修改节点间的指针即可。但访问链表中的元素不如数组直接,通常需要从
|
1月前
|
消息中间件 运维 监控
Linux命令lsipc:深入解析与实战应用
`lsipc` (通常指 `ipcs`) 是Linux命令,用于查看系统中的IPC资源,包括消息队列、信号量和共享内存。它显示详细信息,支持过滤,并且需要相应权限。示例用法:显示共享内存(`-m`)、查询消息队列(`-q -i ID`)、查看关联进程(`-m -p`)。注意权限、操作影响及定期监控。结合`ipcrm`等工具可进行更深入管理。
|
1月前
|
Linux 数据安全/隐私保护
HTCondor下多台Linux计算集群的搭建
HTCondor下多台Linux计算集群的搭建
15 1
HTCondor下多台Linux计算集群的搭建
|
22天前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
147 1
|
1月前
|
NoSQL Linux 程序员
Linux objdump命令:深入解析与实战应用
`objdump`是Linux下的反汇编工具,用于将二进制文件转换为汇编代码,便于理解程序底层。它可以反汇编目标文件、可执行文件和库,支持多种参数,如显示符号表(-t)、反汇编代码(-d)、源代码与汇编混合视图(-S)。在实践中,结合-g编译选项和特定段(-j)反汇编,能辅助调试和分析。使用时注意包含调试信息,选择适当参数,并与其他工具(如gdb)配合使用。
|
1月前
|
存储 Linux 数据库
【Linux】Linux基础文件与目录管理:成为Linux大师的入门必修课
【Linux】Linux基础文件与目录管理:成为Linux大师的入门必修课
29 3
|
1月前
|
Linux 网络安全
|
1月前
|
Linux 开发工具
【Linux文本编辑艺术】:从入门到熟练,Vim大师之路揭秘
【Linux文本编辑艺术】:从入门到熟练,Vim大师之路揭秘
|
1月前
|
Linux Unix Windows
【Linux终端探险】:从入门到熟练,玩转基础命令的秘密(二)
【Linux终端探险】:从入门到熟练,玩转基础命令的秘密(二)
|
21天前
|
关系型数据库 MySQL Linux
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思