異構平臺文件自動同步方法及puppet服務端的製作方法
2023-05-27 23:46:31
異構平臺文件自動同步方法及puppet服務端的製作方法
【專利摘要】本發明實施例公開了一種異構平臺文件自動同步方法及puppet服務端,其中方法包括puppet服務端接收來自puppet客戶端的文件同步請求,文件同步請求至少包括:puppet客戶端的作業系統和全域名fqdn;puppet服務端根據文件同步請求中的fqdn進行節點匹配;puppet服務端執行匹配到的節點程序,並在節點程序中匹配puppet客戶端的作業系統;puppet服務端根據匹配到的作業系統確定文件同步位置,以生成文件同步響應並發送至puppet客戶端,使puppet客戶端根據所述文件同步響應進行文件同步,本發明實施例可以實現高效的異構平臺文件自動同步。
【專利說明】異構平臺文件自動同步方法及puppet服務端
【技術領域】
[0001] 本發明涉及文件同步【技術領域】,尤其涉及一種異構平臺文件自動同步方法及 puppet服務端。
【背景技術】
[0002] 對於數據中心或各種機房的服務端,經常會涉及到與客戶端進行文件同步的問 題,目前主要存在以下兩種方案解決該文件同步問題:
[0003] 一種方案是採用Shell腳本+Expect腳本來實現文件的自動分發與管理,其實 現過程主要包括:服務端得到每臺需要被管理的客戶端作業系統的管理員帳號和密碼, 並保存到一個文件中;然後通過Expect腳本自動scp(SecureCopy)或rsync(remote Synchronization)來取代手動scp或rsync,達到文件同步。
[0004] 另一種方案是利用高級的腳本語言(例如Perl、Python等)並結合安裝專用的模塊 來實現文件自動同步,以Perl為例,服務端需要得到每臺需要被管理的客戶端作業系統的 管理員帳號和密碼,並保存到一個文件中;然後安裝PerlSSH(SecureShell)等依賴模塊, 並編寫Perl腳本;最後通過Perl語言的多線程特性來自動同步文件到被管理的客戶端。
[0005] 其中上述兩種方案均存在的缺限在於:必須知道每臺客戶端的管理員帳號與密 碼,一旦客戶端修改密碼就會失效。另外,第一種方案無法實現跨平臺的同步,例如windows 和linux就無法同步,並且無法利用多線程技術達到高效的文件自動同步;對於第二種方 案,如果採用一些兼容多種作業系統的程式語言,則可能實現跨平臺的同步,例如Python forAIX,但是PythonforAIX雖然支持,也僅是兼容過時版本,且實現過於複雜(要考慮多 線程並發和同步效率等問題)及不易於實時監控與統計,另外第二種方案的多線程技術實 現給維護和管理增加了複雜性,每個維護人員必須非常熟悉Perl語言,包括SSH等相關模 塊的使用。
【發明內容】
[0006] 有鑑於此,本發明提供了一種異構平臺文件自動同步方法及裝置,可以高效的實 現跨作業系統(也可稱為平臺)的文件同步,並且無需知道客戶端的管理員帳號和密碼,所 用的語言易於掌握,復用性強。
[0007] 本發明實施例提供了一種異構平臺文件自動同步方法,包括:
[0008]puppet服務端接收來自puppet客戶端的文件同步請求,所述文件同步請求至少 包括:所述puppet客戶端的作業系統和全域名fqdn;
[0009] 所述puppet服務端根據所述文件同步請求中的fqdn進行節點匹配;
[0010] 所述puppet服務端執行匹配到的節點程序,並在節點程序中匹配所述puppet客 戶端的作業系統;
[0011] 所述puppet服務端根據匹配到的作業系統確定文件同步位置,以生成文件同步 響應並發送至所述puppet客戶端,使所述puppet客戶端根據所述文件同步響應進行文件 同步。
[0012] 優選的,puppet服務端根據所述文件同步請求中的fqdn進行節點匹配,包括:
[0013] 所述puppet服務端根據所述fqdn匹配具體的一臺puppet客戶端的節點程序、某 一種規則的puppet客戶端的節點程序或者某一個指定域名的puppet客戶端的節點程序。
[0014] 優選的,所述puppet服務端接收來自puppet客戶端的文件同步請求之前,還包 括:
[0015] 所述puppet服務端接收來自puppet客戶端的籤名認證請求;
[0016] 所述puppet服務端根據所述籤名認證請求,判斷所述puppet客戶端是否合法;
[0017] 如果合法,則所述puppet服務端對所述puppet客戶端進行籤名認證。
[0018] 優選的,所述puppet服務端根據匹配到的作業系統生成文件同步響應並發送至 所述puppet客戶端之後,還包括:
[0019] 所述puppet服務端接收來自所述puppet客戶端的文件同步報告;
[0020] 所述puppet服務端將所述文件同步報告上傳至報告收集器,以使web伺服器實時 從所述報告收集器獲取文件同步報告並顯示。
[0021] 優選的,所述文件同步報告包括:puppet客戶端的IP、從puppet服務端同步的時 間、puppet客戶端設備的總運行時間、puppet客戶端設備的所有的可用資源列表、文件的 同步狀態和同步過程中的輸出日誌。
[0022] 本發明實施例還提供了一種用於異構平臺文件自動同步的puppet服務端,包括:
[0023] 第一接收模塊,用於接收來自puppet客戶端的文件同步請求,所述文件同步請求 至少包括:所述puppet客戶端的作業系統和全域名fqdn ;
[0024] 第一匹配模塊,用於根據所述文件同步請求中的fqdn進行節點匹配;
[0025] 第二匹配模塊,用於執行匹配到的節點程序,並在節點程序中匹配所述puppet客 戶端的作業系統;
[0026] 處理模塊,用於根據匹配到的作業系統確定文件同步位置,以生成文件同步響應 並發送至所述puppet客戶端,使所述puppet客戶端根據所述文件同步響應進行文件同步。
[0027] 優選的,所述第一匹配模塊,具體用於根據所述fqdn匹配具體的一臺puppet客戶 端的節點程序、某一種規則的puppet客戶端的節點程序或者某一個指定域名的puppet客 戶端的節點程序。
[0028] 優選的,puppet服務端還包括:
[0029] 第二接收模塊,用於接收來自puppet客戶端的籤名認證請求;
[0030] 判斷模塊,用於根據所述籤名認證請求,判斷所述puppet客戶端是否合法;
[0031] 認證模塊,用於如果合法,則對所述puppet客戶端進行籤名認證。
[0032] 優選的,puppet服務端還包括:
[0033] 第三接收模塊,用於接收來自所述puppet客戶端的文件同步報告;
[0034] 上報模塊,用於將所述文件同步報告上傳至報告收集器,以使web伺服器實時從 所述報告收集器獲取同步報告並顯示。
[0035] 優選的,所述Puppet客戶端的IP、從Puppet客戶端同步的時間、Puppet客戶端的 總運行時間、Puppet客戶端的所有的可用資源列表、文件的同步狀態和同步過程中的輸出 日誌。
[0036] 本發明的有益效果:
[0037] 本發明實施例,由於puppet服務端與puppet客戶端自動進行文件同步時,首先進 行節點匹配,然後在匹配到的節點程序中進行作業系統匹配,以此確定puppet客戶端將同 步文件存放的位置,從而針對不同平臺的puppet客戶端,實現準確的文件同步,從而使得 本發明實施例可以支持跨多個作業系統實現文件同步;同時,採用puppet進行文件同步, 可以利用puppet內部提供的高效的文件同步機制,實現高效的文件同步;同時puppet無須 puppet客戶端的管理員帳號和密碼就可以進行同步;同時puppet所用的語言易於閱讀和 掌握,即使是新手,通過簡單的培訓也能輕易掌握,從而降低使用者的操作複雜性和簡化工 作量;同時puppet的復用性也很高,便於移植。
【專利附圖】
【附圖說明】
[0038] 下面結合附圖和實施例對本發明作進一步描述:
[0039] 圖1是本發明的異構平臺自動同步架構的實施例的結構示意圖。
[0040] 圖2是本發明的異構平臺自動同步方法的第一實施例的流程示意圖。
[0041] 圖3是本發明的異構平臺自動同步方法的第二實施例的流程示意圖。
[0042] 圖4是本發明的異構平臺自動同步方法的第三實施例的流程示意圖。
[0043] 圖5是本發明的異構平臺自動同步方法的第四實施例的流程示意圖。
[0044] 圖6是本發明的用於異構平臺自動同步的puppet服務端的第一實施例的結構示 意圖。
[0045] 圖7是本發明的用於異構平臺自動同步的puppet服務端的第二實施例的結構示 意圖。
[0046] 圖8是本發明的用於異構平臺自動同步的puppet服務端的第三實施例的結構示 意圖。
【具體實施方式】
[0047]puppet是puppetLabs開發的自動化系統配置工具,它是一個開源的軟體自動 化配置和部署工具,其使用方式簡單且功能強大。在puppet中,採用了非常簡單的c/s (client/server,客戶端/服務端)星狀結構,所有數據的交互都通過SSL(SecureSockets Layer,安全套接層)進行,以保證安全;其主要包含puppet服務端,即"puppetmaster" 或"puppetserver",和puppet客戶端,即"puppetagent",其中puppet服務端是所有的 puppet客戶端都要與之通訊和同步的伺服器,puppet客戶端是被管理或同步的伺服器。其 中,puppet大致的工作流程為:
[0048] 1、puppet客戶端向puppet服務端發起認證請求,或使用帶籤名的證書。
[0049] 2、puppet服務端告訴puppet客戶端你是合法的。
[0050] 3、puppet客戶端調用Facter,Facter探測出主機的一些變量,例如主機名、內存 大小、IP位址等。puppet客戶端將這些信息通過SSL連接發送到伺服器端。
[0051] 4、puppet伺服器端檢測客戶端的主機名,然後找到manifest對應的node配置,並 對該部分內容進行解析。Facter送過來的信息可以作為變量處理,node牽涉到的代碼才解 析,其他沒牽涉的代碼不解析。解析分為幾個階段,首先是語法檢查,如果語法錯誤就報錯; 如果語法沒錯,就繼續解析,解析的結果生成一個中間的"偽代碼"(catelog),然後把偽代 碼發給puppet客戶端。
[0052] 5、puppet客戶端接收到"偽代碼",並且執行。
[0053] 6、puppet客戶端在執行時判斷有沒有File文件,如果有,則向fileserver發起 請求。
[0054] 7、puppet客戶端判斷有沒有配置Report,如果已配置,則把執行結果發送給 puppet服務端。
[0055] 8、puppet服務端把puppet客戶端的執行結果寫入日誌,並發送給報告系統。
[0056] 下面首先對本發明實施例的異構平臺自動同步架構進行說明。
[0057] 如圖1所示,本發明實施例的異構平臺自動同步架構包含puppet服務端和眾多的 puppet客戶端,這些puppet客戶端可以運行不同的作業系統,該puppet服務端實現對這 些跨作業系統的puppet客戶端的管理和同步。另外,本發明實施例還設置了報告收集器和 web伺服器,其中報告收集器主要用於從puppet服務端收集和記錄同步報告,web伺服器主 要用於展示同步報告,便於使用者查看同步的狀態和信息。
[0058] 下面再具體的對本發明提出的異構平臺文件自動同步方法的實施例進行說明。
[0059] 請參考圖2,是本發明提供的異構平臺文件自動同步方法的第一實施例的流程示 意圖。其主要包括:
[0060] 步驟S21、puppet服務端接收來自puppet客戶端的同步請求。
[0061] 其中,該同步請求包含客戶端的基礎信息,該基礎信息可以包括:平臺架構(即: 各種處理器架構及各種作業系統)、硬碟、用戶、網絡、內核及版本、CPU相關信息(CPU類型、 多少核)、Mac地址、內存(包括swap)、fqdn(FullyQualifiedDomainName,全域名)、主 機名(hostname)、環境變量、防火牆、正常運行時間(uptime)、安全外殼協議密鑰(SSHKey) 和時區等。
[0062] 步驟S22、puppet服務端根據同步請求中的fqdn進行節點匹配。
[0063] 具體的,puppet服務端可以根據fqdn匹配具體的一臺puppet客戶端的節點程序、 某一種規則的puppet客戶端的節點程序或者某一個指定域名的puppet客戶端的節點程 序,也就是說,步驟S22可以採用如下任一種匹配規則:1)可匹配具體的一臺客戶端,例如 匹配exampleOOl. domain, com。2)可匹配某一種規則的客戶端,例如匹配所有WEB伺服器: 廠web\d+\. domain\. com$/,這樣所有以web+數字?domain, com的fqdn都能匹配到。3)可 匹配某一個指定域名的客戶端,例如匹配所有資料庫規則:*. db. domain, com。
[0064] 步驟S23、puppet服務端執行匹配到的節點程序,並在節點程序中匹配puppet客 戶端的作業系統。
[0065]其中,進行作業系統的匹配主要是為了確定同步文件的位置,因為不同的操作系 統存儲的位置可能不同,例如:Windows與Linux的文件存放路徑各不相同,以hosts文 件為例,其在Linux中的的路徑為:/etc/hosts,而在Windows的路徑為:C: \Windows\ System32\Drivers\etc\hosts,進行作業系統的匹配是能否實現文件的準確分發的關鍵。 [0066] 步驟S24、puppet服務端根據匹配到的作業系統確定文件同步位置,以生成文件 同步響應並發送至puppet客戶端,使puppet客戶端根據文件同步響應進行文件同步。 [0067] 本實施例中,可以支持跨平臺的同步,也就是puppet客戶端的作業系統可以為 如下任一種:RHEL5、RHEL6、CentOS、Fedora、OracleLinux、Debian6、Debian7、Ubuntu、SUSE、Gentoo、ArchLinux、FreeBSD、OpenBSD、Mac0S、0racleSolaris、IBMAIX、HP-UX和 Windows。
[0068] 本發明實施例,由於puppet服務端與puppet客戶端自動進行文件同步時,首先進 行節點匹配,然後在節點程序中進行作業系統匹配,以此確定puppet客戶端將同步文件存 放的位置,從而實現針對不同平臺的puppet客戶端,進行準確的文件同步,從而使得本發 明實施例可以跨多個作業系統實現文件同步,使得本發明實施例可以跨多個作業系統實現 文件同步;同時,採用puppet進行文件同步,可以利用puppet內部提供的高效的文件同步 機制,實現高效的文件同步;同時puppet無須puppet客戶端的管理員帳號和密碼就可以進 行同步;同時puppet所用的語言易於閱讀和掌握,即使是新手,通過簡單的培訓也能輕易 掌握,從而降低使用者的操作複雜性和簡化工作量;同時puppet的復用性也很高,便於移 植。
[0069] 請參考圖3,是本發明提供的異構平臺文件自動同步方法的第二實施例的流程示 意圖,其主要包括:
[0070] 步驟S31、puppet服務端接收來自puppet客戶端的籤名認證請求。
[0071] 步驟S32、puppet服務端收到籤名認證請求後,判斷puppet客戶端是否合法,如果 合法,則對puppet客戶端進行籤名認證。
[0072] 與步驟S21 -步驟S24相同的步驟S33 -步驟S36,在此不贅述。
[0073] 請參考圖4,是本發明提供的異構平臺文件自動同步方法的第三實施例的流程示 意圖,其主要包括:
[0074] 與步驟S21 -步驟S24相同的步驟S41 -步驟S44,在此不贅述。
[0075] 步驟S45、puppet服務端收集來自puppet客戶端的文件同步報告。
[0076] 步驟S46、pUppet服務端將文件同步報告上傳至報告收集器,以使web伺服器實時 從報告收集器獲取文件同步報告並顯示。
[0077] 其中,文件同步報告包括:Puppet客戶端的IP、從Puppet客戶端同步的時間、 Puppet客戶端的總運行時間、Puppet客戶端的所有的可用資源列表、文件的同步狀態和同 步過程中的輸出日誌。
[0078] 本實施例,採用第三方的開源WebServer(即Nginx),可以方便運維人員與管理 人員及時掌握文件同步狀態及相關信息,避免採用Puppet內置的WebServer對於眾多的 客戶端管理起來效率低的問題。
[0079] 請參考圖5,是本發明提供的異構平臺文件自動同步方法的第四實施例的流程示 意圖,其主要包括:
[0080]步驟S51、在puppet服務端安裝puppetmaster,puppetmaster即puppet服務 端程序。
[0081] 其中,安裝方式可以選擇源碼安裝或二進位安裝,對於採用windows的puppet服 務端,僅能實現二進位安裝。
[0082] 步驟S52、設置puppetmaster的初始化環境。
[0083] 其中,步驟S52主要包含:
[0084] 1)安裝ntpd(時鐘同步),以保證puppet服務端的時區、日期和時間均準確,對於 採用windows的puppet服務端,可以用其自身時間同步。
[0085] 2)在puppet,conf(puppet主配置文件)中設置autosign(自動籤名,默認為 false)、modulepath(模塊入 口路徑)、reports(同步報告,默認為false),以及fileserver. conf,puppetfileserver指定了各個文件掛載(mount)點及文件絕對路徑、哪些puppet 客戶端是允許被掛載的等。
[0086]步驟S53、在puppet客戶端安裝puppetagent,puppetagent即puppet客戶端程 序。
[0087] 其中,安裝方式可以選擇源碼或二進位安裝,對於採用windows的puppet客戶端, 只能選擇二進位安裝。
[0088] 步驟S54、設置puppetagent的初始化環境。
[0089] 其中,步驟S54主要包括:
[0090] 1)安裝ntpd,以保證puppet客戶端的時區、日期和時間均準確,對於採用windows 的puppet客戶端,可以用其自身時間同步;由於puppet服務端和puppet客戶端均安裝了 ntpd,因此能夠確保兩者時間一致。
[0091] 2)修改puppetagent主配置文件的以下選項:server(由puppetmaster的 $puppetserver決定)、certname(證書名稱,石角保agentP隹一性)、runinterval(puppet agent運行的時間間隔)、reports(同步報告,默認為false)。
[0092] 在2)中,runinterval默認為30分鐘,可以對其修改進行優化實現管理更多的 puppet客戶端,例如:Puppet同步一個文件幾乎是秒級,但如果管理的客戶端達到千萬臺, 就需要將客戶端儘量避免在同一時刻來請求伺服器,此時可以採用分類設置runinterval 的方式實現,例如:將/etc/hosts文件設置成5分鐘同步一次,將HostGroupl設置每30秒 同步,HostGroup2設置40秒同步,依次類推。
[0093] 步驟S55、puppet客戶端主動請求puppet服務端的籤名認證。
[0094] 其中,第一次請求成功後,以後不再需要請求籤名認證,除非puppet服務端保存 證書有變化或已被損毀。
[0095] 步驟S56、puppet服務端收到puppet客戶端的籤名認證請求後,確定puppet客戶 端是否為合法的puppet客戶端,如果是,則對其進行籤名。
[0096]步驟S57、創建puppetmodule(即:puppet模塊)。
[0097] 其中,puppetmodule中明確以下兩方面內容:
[0098] 1)同一規則的puppet客戶端可以共享一個文件,以用於節點匹配。
【權利要求】
1. 一種異構平臺文件自動同步方法,其特徵在於:包括: puppet服務端接收來自puppet客戶端的文件同步請求,所述文件同步請求至少包括: 所述puppet客戶端的作業系統和全域名fqdn ; 所述puppet服務端根據所述文件同步請求中的fqdn進行節點匹配; 所述puppet服務端執行匹配到的節點程序,並在節點程序中匹配所述puppet客戶端 的作業系統; 所述puppet服務端根據匹配到的作業系統確定文件同步位置,以生成文件同步響應 並發送至所述puppet客戶端,使所述puppet客戶端根據所述文件同步響應進行文件同步。
2. 如權利要求1所述的異構平臺文件自動同步方法,其特徵在於:所述puppet服務端 根據所述文件同步請求中的fqdn進行節點匹配,包括: 所述puppet服務端根據所述fqdn匹配具體的一臺puppet客戶端的節點程序、某一種 規則的puppet客戶端的節點程序或者某一個指定域名的puppet客戶端的節點程序。
3. 如權利要求1或2所述的異構平臺文件自動同步方法,其特徵在於:所述puppet服 務端接收來自puppet客戶端的文件同步請求之前,還包括: 所述puppet服務端接收來自puppet客戶端的籤名認證請求; 所述puppet服務端根據所述籤名認證請求,判斷所述puppet客戶端是否合法; 如果合法,則所述puppet服務端對所述puppet客戶端進行籤名認證。
4. 如權利要求1或2所述的異構平臺文件自動同步方法,其特徵在於:所述puppet服 務端根據匹配到的作業系統生成文件同步響應並發送至所述puppet客戶端之後,還包括: 所述puppet服務端接收來自所述puppet客戶端的文件同步報告; 所述puppet服務端將所述文件同步報告上傳至報告收集器,以使web伺服器實時從所 述報告收集器獲取文件同步報告並顯示。
5. 如權利要求4所述的異構平臺文件自動同步方法,其特徵在於:所述文件同步報告 包括:puppet客戶端的IP、從puppet服務端同步的時間、puppet客戶端設備的總運行時 間、puppet客戶端設備的所有的可用資源列表、文件的同步狀態和同步過程中的輸出日誌。
6. -種用於異構平臺文件自動同步的puppet服務端,其特徵在於:包括: 第一接收模塊,用於接收來自puppet客戶端的文件同步請求,所述文件同步請求至少 包括:所述puppet客戶端的作業系統和全域名fqdn ; 第一匹配模塊,用於根據所述文件同步請求中的fqdn進行節點匹配; 第二匹配模塊,用於執行匹配到的節點程序,並在節點程序中匹配所述puppet客戶端 的作業系統; 處理模塊,用於根據匹配到的作業系統確定文件同步位置,以生成文件同步響應並發 送至所述puppet客戶端,使所述puppet客戶端根據所述文件同步響應進行文件同步。
7. 如權利要求6所述的用於異構平臺文件自動同步的puppet服務端,其特徵在於:所 述第一匹配模塊,具體用於根據所述fqdn匹配具體的一臺puppet客戶端的節點程序、某一 種規則的puppet客戶端的節點程序或者某一個指定域名的puppet客戶端的節點程序。
8. 如權利要求6或7所述的用於異構平臺文件自動同步的puppet服務端,其特徵在 於:還包括: 第二接收模塊,用於接收來自puppet客戶端的籤名認證請求; 判斷模塊,用於根據所述籤名認證請求,判斷所述puppet客戶端是否合法; 認證模塊,用於如果合法,則對所述puppet客戶端進行籤名認證。
9. 如權利要求6或7所述的用於異構平臺文件自動同步的puppet服務端,其特徵在 於:還包括: 第三接收模塊,用於接收來自所述puppet客戶端的文件同步報告; 上報模塊,用於將所述文件同步報告上傳至報告收集器,以使web伺服器實時從所述 報告收集器獲取同步報告並顯示。
10. 如權利要求9所述的用於異構平臺文件自動同步的puppet服務端,其特徵在於: 所述puppet客戶端的IP、從puppet客戶端同步的時間、puppet客戶端的總運行時間、 puppet客戶端的所有的可用資源列表、文件的同步狀態和同步過程中的輸出日誌。
【文檔編號】H04L29/08GK104519100SQ201310456772
【公開日】2015年4月15日 申請日期:2013年9月29日 優先權日:2013年9月29日
【發明者】黃庚根 申請人:重慶新媒農信科技有限公司