欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Linux重要的服务讲述(1)

程序员文章站 2022-04-27 16:23:09
NFS 概述 NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。最早由sun公司开发,是类unix系统间实现磁盘共享的一种方法 ......

nfs

  • 概述
  • nfs(network file system)即网络文件系统,它允许网络中的计算机之间通过tcp/ip网络共享资源。在nfs的应用中,本地nfs的客户端应用可以透明地读写位于远端nfs服务器上的文件,就像访问本地文件一样。
    最早由sun公司开发,是类unix系统间实现磁盘共享的一种方法

  • 工作原理

Linux重要的服务讲述(1)

如上图,当我们在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地址的映射对应关系,形成一个分布式的数据库系统,上级仅知道其直接下级,下级只知道根的位置。结构模型:

Linux重要的服务讲述(1)

  • 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(网络文件系统)共享服务的专用服务器。