Linux重要的服务讲述(1)
- 概述
NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
最早由sun公司开发,是类unix系统间实现磁盘共享的一种方法- 工作原理
如上图,当我们在NFS服务器设置好一个共享目录/data/share后,其他的有权限访问NFS服务器的NFS客户端就可以讲这个目录挂载到自己的本地,并且能看到服务端/data/share下的所有数据,NFS是通过网络来进行Server端和Client端之间的数据传输,既然走网络,双方肯定都要有端口,哪NFS Server怎么知道使用哪个端口来进行数据传输,NFS其实会随机选择端口来进行数据传输,NFS服务器是通过远程过程调用RPC(Remote Procedure Call)协议来实现的,所以,RPC管理服务端的NFS端口分配,客户端要传数据,那么客户端的RPC会先跟服务端的RPC去要服务器的端口,要到端口后,再建立连接,然后传输数据
RPC(Remote Procedure Call)——远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。NFS 服务器在启动的时候就得要向 RPC 注册,所以 NFS 服务器也是一种 RPC server 。
- NFS服务所需用到的软件
nfs-utils:NFS服务的全程序,包括rpc.nfsd、rpc.mountd这两个daemons和相关文档说明,以及执行命令文件等。
rpcbind:Centos.x下面RPC的主程序。NFS可视为一个rpc程序,在互动任何一个RPC程序之前,需要做好端口和功能的对应映射工作,这个映射工作就是由RPCBIND服务来完成的。因此,在提供NFS服务之前必须先启动RPCBIND服务。
named
- 概述
named服务,也就是dns,一般来讲域名比IP地址更加的有含义、也更容易记住,所以通常用户更习惯输入域名来访问网络中的资源,但是计算机主机在互联网中只能通过IP识别对方主机,那么就需要DNS域名解析服务了。
通常 Internet 主机域名的一般结构为:主机名.三级域名.二级域名.顶级域名。
TLD(top level domain)
组织域:.com, .org, .net, .cc
国家域: .cn, .tw, .hk, .iq, .ir, .jp
反向域: IP-->FQDN 将IP地址转换成主机名,早期只能正向解析,后来引入了一个机制。指针;但是从IP转换成FQDN是另外一套数据库。
DNS服务协议采用类似目录树的层次结构记录域名与IP地址的映射对应关系,形成一个分布式的数据库系统,上级仅知道其直接下级,下级只知道根的位置。结构模型:
DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析与反向解析:
正向解析:根据主机名(域名)查找对应的IP地址。
反向解析:根据IP地址查找对应的主机名(域名)。
DNS使用的端口号
UDP TCP:53 优先使用UDP这种查询比较快的协议;当主从DNS同步数据时使用TCP这种可靠的传输协议- 主配置文件
options { ? ? ? ? 全局配置 ? ? ? ? listen-on port 53 { any;}; ? 监听端口 ? ? ? ? listen-on-v6 port 53 { ::1; }; ? ? ? ? directory ? ? ? "/var/named"; ? ?指定区域文件存储目录 ? ? ? ? dump-file ? ? ? "/var/named/data/cache_dump.db"; ?dump cache目录 ? ? ? ? allow-query ? ? { any; }; ?指定允许进行查询的主机 ? ? ? ? recursion yes; ? ?是否允许递归查询 ?? ?pid-file ? ? "/var/run/named" ?指定pid的位置 ?? ?allow-transfer ?{ none; };指定允许接受区域传送请求的主机(定义为辅助DNS) ?? ?forwarders ? ? { 114.114.114.114; }; 设置转发 ?? ?forward ? ? ? only|first; 仅转发|优先转发 ? ? ? ? };
logging { 指定服务器日志记录的内容和日志信息来源 ? ? ? ? channel default_debug { ? ? ? ? ? ? ? ? file "data/named.run"; ? ? ? ? ? ? ? ? severity dynamic; ? ? ? ? }; }; zone "." IN {指定区域 ?? ? ? ? ? type hint; ? ? ? ? ? ?指定区域类型 hint根 ?master主服务 ?slave 从 ? ? ? ? file "named.ca"; ? ? ? zone文件名 };
LVS负载均衡群集
- LVS(Liunx Virtual Server)
LVS作用就是实现负载均衡,而负载均衡简单来所就是将用户请求合理的分流到后端节点之上,以实现资源的高效利用。
LVS特点是可以跨平台,也就是在windows、Linux系统之上都可以用。
LVS的核心组件:
ip_vs:linux的内核功能模块,工作在内核,依赖该内核模块实现负载均衡功能
ipvsadm:应用层程序,该程序可以和内核中的ip_vs模块通信,实现对负载均衡的管理和控制
keepalived也可以对ip_vs进行管理
- LVS的工作模式:DR模式、NAT模式、TUN模式、。
地址转换:简称NAT模式,类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是个节点回应客户机的访问出口,服务器节点使用私有IP地址,与负载均衡调度器位于同一个物理网络,安全性要优于其他两种方式。
IP隧道:简称TUN模式,采用开放式的网络结构,负载调度器仅作为客户机的入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负调度器。服务器节点分散在互联网的不同位置,具有独立的公网IP地址,通常专用IP隧道与负载调度器相互通信。
直接路由:简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但个节点并不是分散在各地,而是与调度器位于同一个物理网络。负载调度器与个节点服务器通过本地网络连接,不需要建立专用的IP隧道。
LVS的调度算法,所谓算法简单来说就是按照什么规则来送后端的多个RS中挑选一个给用户提供服务。算法有静态算法和动态算法。
静态算法:无论后端的RS当前的服务器负载情况怎么样,都安装固定的方式来给RS分配用户请求
rr:Round Bobin,轮询,将客户端的请求交替分配给RS
wrr:Weighted Round Bobin,加权轮询,根据RS的性能不同,让他们来承担不同比例的用户请求
dh:Destination Hashing,目标地址哈希调度,基于用户所请求的地址做哈希表
作用:实现将对于相同的地址的请求调度到同一个RS之上
使用场景:适应于前端是一个DR,后端是多个cache的时候
sh:Source Hashing,源地址的哈希调度,基于用户的ip地址做哈希表
作用:实现将同一个客户端调度到相同的RS之上
- 群集的类型
负载均衡群集:以提高应用系统的响应能力,尽可能处理更多的访问请求,减少延迟,获得高并发,高负载的整天性能,例如:“DNS轮询”,“应用层交换”,“反向代理”等都可以做负载均衡群集。
高可用群集:以提高应用系统的可靠性,尽可能地减少中断时间,确保服务的连续性,达到高可用的容错效果,例如:“故障切换”,“双机热备”,“多机热备”等都属于高可用群集。
高性能运算群集:以提高应用系统的CPU运算速度,扩展硬件资源和分析能力,获得相当于大型,超级计算机的高性能运算能力,例如:“云计算”等就属于高性能运算群集的一种。
- 载均衡的分层结构
在典型的负载均衡群集中,包括以下三个层次的组件。
第一层:负载调度器,这是访问整个群集系统的唯一入口,多外使用所有服务器共有的VIP(虚拟IP)地址,也称群集IP地址。通常会配置主,备两台调度器实现热备,当主调度器失效以后平滑替换至备用调度器,确保高可用性。
第二层:服务器池:群集所提供的应用服务由服务器池承担,其中的每个节点具有独立的RIP(真实IP)地址,只处理调度器分发过来的客户机请求。
第三层:共享存储,为服务器池中的所有节点提供稳定,一致的文件存取服务,确保整个群集的统一性。在Linux环境中,共享存储可以使用NAS设备或者提供NFS(网络文件系统)共享服务的专用服务器。