Linux重要的服務講述(1)

来源:https://www.cnblogs.com/aiaitie/archive/2019/12/09/12010038.html

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(網路文件系統)共用服務的專用伺服器。


您的分享是我們最大的動力!

更多相關文章
  • 關鍵詞:top、perf、sar、ksar、mpstat、uptime、vmstat、pidstat、time、cpustat、munin、htop、glances、atop、nmon、pcp-gui、collectl。 1. top top是最常用的查看系統資源使用情況的工具,包括CPU、記憶體等等 ...
  • * * * * * (下麵的字體對應) 分 時 日 月 周 星號(*):代表所有可能的值,例如month欄位如果是星號,則表示在滿足其它欄位的制約條件後每月都執行該命令操作。 逗號(,):可以用逗號隔開的值指定一個列表範圍,例如,“1,2,5,7,8,9” 中杠(-):可以用整數之間的中杠表示一個整 ...
  • 準備環境 軟體安裝 服務端基本配置文件 創建一個新的 PKI 和 CA 生成服務端證書 簽約服務端證書 創建 Diffie Hellman 客戶端基本配置 生成客戶端證書 最後簽約客戶端證書 證書整理 服務端 客戶端 server.conf 密碼驗證腳本 !/bin/sh PASSFILE="/et ...
  • 準備環境 環境測試 軟體安裝 xl2tpd.conf options.xl2tpd ipsec.conf l2tp ipsec.conf chap secrets 也就是我們一會在windows上登陸時用到的帳號和密碼 default secrets sysctl.conf 檢查配置 防火牆 開啟服 ...
  • 準備環境 軟體安裝 pptpd.conf options.pptpd chap secrets 也就是我們一會在windows上登陸時用到的帳號和密碼 sysctl.conf 啟動服務並查看埠 防火牆 主機連接 ...
  • 變數基礎知識 程式由指令加數據所組成,而變數可以理解為數據來源的一種。 變數名可以理解為指向了某個記憶體空間的地址,對於變數的賦值可理解為向記憶體空間寫入數據,對於變數的引用可理解為從記憶體空間讀取數據。 變數有類型的概念(例如字元串、數字等),不同的類型決定了數據的存儲格式、可表示的數據範圍以及可參與的 ...
  • bat代碼如下: 1 @echo off 2 @set /p fromFile=from: 3 @set /p toFile=to: 4 rem 找到所有文件 5 dir /b /s %fromFile%\ *.gz >tmp 6 rem 一個文件一個文件的處理 7 for /f "delims=" ...
  • 一、首先用vi命令打卡要編輯的文件: 註意:vi命令的使用如下:打開或新建文件,並將游標至於第一行首:[[email protected] /]# vi /etc/my.cnf打開文件,並將游標移至最後一行行首:[[email protected] /]# vi + /etc/my.cnf打開文件,並將游標置於第n行首 ...
一周排行
  • " 返回《C 併發編程》" "1. 概念介紹" "2. 非同步編程" "2.1. async運行過程" "2.2. async運行中同步上下文簡介" "2.3. 創建Task實例" "2.4. 捕獲非同步異常類型" "3. 並行編程" "3.1. Parallel" "3.2. 異常處理" "3.3. ...
  • 我們先看看兩個特效,感受一下,有沒有學習的動力? 核心API:Texture2D.SetPixel(int x, int y, Color color),Texture2D.Apply() 實現原理:對象池 思路: 第一幀繪製前:遍歷瓦片上所有活著的粒子對象並且進行數據操作(或運動,死亡),發生運動 ...
  • 原來的導出方式比較適用於比較簡單的導出,每一條數據在一行,數據列雖然自定義程度比較高,如果要一條數據對應多行就做不到了,於是就想支持根據模板導出,在 1.8.0 版本中引入了根據模板導出的功能 ...
  • 創建一個bat腳本, 裡面寫上: reg delete HKEY_CURRENT_USER\Software\JetBrains\dotMemory /freg delete HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Ex ...
  • Linux下有vsyscall來優化一些例如time(NULL), gettimeofday這種調用的消耗; 但是Windows下, 沒有類似的東西, 但是思路還是有的 1. 程式啟動的時候, 獲取一下準確的時間戳 2. 然後每次需要獲取時間的時候, 獲取一下流逝的時間, 可以通過獲取CPU的tic ...
  • 當用戶按下鍵盤上的一個鍵時,就會發生一系列事件。下表根據他們的發生順序列出了這些事件: 表 所有元素的鍵盤事件(按順序) 鍵盤處理永遠不會像上面看到的這麼簡單。一些控制項可能會掛起這些事件中的某些事件,從而可執行自己更特殊的鍵盤處理。最明顯的例子是TextBox控制項,它掛起了TextInput事件。對 ...
  • static void LocalMethod() { Cube(100); void Cube(int x) => Console.WriteLine($"The cube of {x} is {x * x * x}"); } static void GoToDemo() { int i = 1; ...
  • 滑鼠事件執行幾個關聯的任務。當滑鼠移到某個元素上時,可通過最基本的滑鼠事件進行響應。這些事件是MouseEnter(當滑鼠指針移到元素上時引發該事件)和MouseLeave(當滑鼠指針離開元素時引發該事件)。這兩個事件都是直接事件,這意味著他們不使用冒泡和隧道過程,而是源自一個元素並且只被該元素引發 ...
  • 反射這個詞聽起來就很牛逼是吧? 嗯的確,反射是比較高級的特性,只有語言基礎很扎實的Dev們才應該使用它。 搞點反射,可以提高程式的靈活性、可擴展性、耦合度。 反射這東西,是為了動態地運行時載入,相比於靜態代碼。編譯的時候就是板上釘釘了。 就是說,如果你的程式需要在運行時搞一些晚綁定,動態載入或檢查對 ...
  • 眾所周知,微服務架構是由一眾微服務組成,項目中調用其他微服務介面更是常見的操作。為了便於調用外部介面,我們的常用思路一般都是封裝一個外部介面的客戶端,使用時候直接調用相應的方法。webservice或WCF的做法就是引用服務,自動生成客戶端。在webapi2.0里,我們都會手動封裝一個靜態類。那麼在 ...
x