Linux重要的服务讲述(1)
nfs
- 概述
-
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(网络文件系统)共享服务的专用服务器。