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

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

第一章、集群理论基础

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博客。
相关文章
|
19天前
|
Unix Linux Shell
linux入门!
本文档介绍了Linux系统入门的基础知识,包括操作系统概述、CentOS系统的安装与远程连接、文件操作、目录结构、用户和用户组管理、权限管理、Shell基础、输入输出、压缩打包、文件传输、软件安装、文件查找、进程管理、定时任务和服务管理等内容。重点讲解了常见的命令和操作技巧,帮助初学者快速掌握Linux系统的基本使用方法。
55 3
|
2月前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
230 73
|
1月前
|
机器学习/深度学习 Linux 编译器
Linux入门3——vim的简单使用
Linux入门3——vim的简单使用
58 1
|
1月前
|
Linux Shell Windows
Linux入门1——初识Linux指令
Linux入门1——初识Linux指令
31 0
Linux入门1——初识Linux指令
|
1月前
|
存储 数据可视化 Linux
Linux 基础入门
Linux 基础入门
|
2月前
|
监控 Linux Shell
30 个实用的 Linux 命令贴与技巧,提升你的效率(附实战案例)
本文介绍了30个实用的Linux命令及其应用场景,帮助你提升命令行操作效率。涵盖返回目录、重新执行命令、查看磁盘使用情况、查找文件、进程管理、网络状态监控、定时任务设置等功能,适合各水平的Linux用户学习和参考。
|
1月前
|
Linux Go 数据安全/隐私保护
Linux入门2——初识Linux权限
Linux入门2——初识Linux权限
26 0
|
3月前
|
Linux 文件存储 数据安全/隐私保护
Linux用户组管理实战:创建、管理与删除的全面指南
在 Linux 系统中,用户组管理是实现权限控制和资源共享的关键。本文档详细介绍如何创建用户组、管理用户组成员及查看与删除用户组。首先,通过 `groupadd` 命令创建新用户组,并在 `/etc/group` 文件中记录。接着,利用 `usermod` 和 `gpasswd` 命令来添加或删除用户组成员,其中 `gpasswd` 提供更灵活的管理方式。最后,使用 `getent` 或直接读取 `/etc/group` 查看用户组信息,并通过 `groupdel` 删除空用户组。这些操作有助于高效管理和保护系统资源。
317 4
|
3月前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
56 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
3月前
|
Linux
Linux源码阅读笔记19-插入删除模块实战
Linux源码阅读笔记19-插入删除模块实战
下一篇
无影云桌面