伺服器與伺服器之間如何連線和傳輸資料?

伺服器與伺服器之間如何連線和傳輸資料?科技大咖的Vitamin2018-03-16 17:16:42

常用的服務和服務之間,伺服器和伺服器之間的資料傳輸主要是透過TCP或UDP進行傳輸。而http、socket、https、ssl、ssh等是建立在TCP的基礎上進行傳輸,即是那些協議的底層實現。

和你舉一個連線的流程:

比如你進行一個正常的網路請求,請求連結是http://www。163。com ,那麼你的

連結會先經過域名伺服器進行解釋將IP地址返回來,然後客戶端透過IP去連線伺服器

,伺服器響應後回傳資料。

tcp

伺服器與伺服器之間如何連線和傳輸資料?

TCP(Transmission Control Protocol 傳輸控制協議)是一種

面向連線的、可靠的、基於位元組流的傳輸層通訊協議。

TCP是因特網中的傳輸層協議,

使用三次握手協議建立連線。

udp

伺服器與伺服器之間如何連線和傳輸資料?

UDP 是User Datagram Protocol的簡稱, 中文名是使用者資料報協議,是OSI(Open System Interconnection,開放式系統互聯) 參考模型中一種

無連線的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務。

udp在網路質量令人十分不滿意的環境下,協議資料包丟失會比較嚴重。但是由於UDP的特性:它

不屬於連線型協議,因而具有資源消耗小,處理速度快的優點,所以通常音訊、影片和普通資料在傳送時使用UDP較多,因為它們即使偶爾丟失一兩個資料包,也不會對接收結果產生太大影響。

結論

即伺服器之間透過上面說的傳輸協議進行最底層的資料連線及傳輸,在兩臺伺服器之間進行傳輸的資料,必須要先序列化之後才能傳輸。而一些建立在底層連線協議上的上層應用就會進行使用者鑑權等行為,如果透過則進行資料回覆,如果不透過則切斷連線。

——————————————————-

本人現處廣州從事網際網路工作多年,

資深技術人員、管理人員。

願結識有網際網路業務的技術人員或企業人員。

伺服器與伺服器之間如何連線和傳輸資料?taroballs2018-01-23 17:02:23

總結下:

對於linux系列伺服器:

1。先用ssh-keygen生成authorized_keys使主機互信

2。使用sftp命令或vsftp軟體進行伺服器間資料傳輸

3。有潛力的人用ansible批次處理

伺服器與伺服器之間如何連線和傳輸資料?

伺服器與伺服器之間如何連線和傳輸資料?Deathef2017-12-18 22:44:24

這個問題很模糊,連線的話應該指的是傳輸層的TCP/UDP,傳輸資料的話應該是FTP、SFTP、SCP等協議,RPC勉強也算是一種資料傳輸吧。具體的實現呢,舉個例子,A伺服器上有個1。txt,想把這個文字檔案傳給B伺服器,最簡單的做法就是在B上開啟一個FTP伺服器,A以使用者名稱密碼登入就可以直接發過去了。SCP也可以直接傳資料。其實伺服器間做了SSH免密之後,就可以省略使用者名稱密碼直接訪問對端同許可權檔案系統了。

伺服器與伺服器之間如何連線和傳輸資料?體育的視眼2017-12-18 18:34:20

我們知道如果要向遠端伺服器傳輸資料和操作必須輸入使用者名稱和密碼遠端登入伺服器 ,或用FTP等協議,都需要許可權控制。

然而如果是兩臺伺服器間的軟體需要通訊和資料傳輸,如hadoop叢集中機器互訪,是不是每次也要輸入使用者名稱和密碼?那是不是很麻煩?下面介紹SSH來解決這個問題(不是JAVA中的SSH概念)

SSH是一種網路協議,用於計算機之間的加密登入。

如果一個使用者從本地計算機,使用SSH協議登入另一臺遠端計算機,我們就可以認為,這種登入是安全的,即使被中途截獲,密碼也不會洩露。

最早的時候,網際網路通訊都是明文通訊,一旦被截獲,內容就暴露無疑。1995年,芬蘭學者Tatu Ylonen設計了SSH協議,將登入資訊全部加密,成為網際網路安全的一個基本解決方案,迅速在全世界獲得推廣,目前已經成為Linux系統的標準配置。

需要指出的是,SSH只是一種協議,存在多種實現,既有商業實現,也有開源實現。本文針對的實現是OpenSSH,它是自由軟體,應用非常廣泛。

此外,本文只討論SSH在Linux Shell中的用法。如果要在Windows系統中使用SSH,會用到另一種軟體PuTTY

Hadoop執行過程中需要管理遠端Hadoop守護程序,在Hadoop啟動以後,NameNode是透過SSH(Secure Shell)來啟動和停止各個DataNode上的各種守護程序的。

這就必須在節點之間執行指令的時候是不需要輸入密碼的形式,故我們需要配置SSH運用無密碼公鑰認證的形式,這樣NameNode使用SSH無密碼登入並啟動DataName程序,同樣原理,DataNode上也能使用SSH無密碼登入到NameNode。

下面就安裝總結一下網友和自己的經驗。

環境

CentOS7。0

安裝 

1

2

3

檢視安裝

1

2

伺服器與伺服器之間如何連線和傳輸資料?

為避免麻煩,每個伺服器上都要裝。

配置Master無密碼登入所有Salve

  1)SSH無密碼原理

Master(NameNode | JobTracker)作為客戶端,要實現無密碼公鑰認證,連線到伺服器Salve(DataNode | Tasktracker)上時,需要在Master上生成一個金鑰對,包括一個公鑰和一個私鑰,而後將公鑰複製到所有的Slave上。當Master透過SSH連線Salve時,Salve就會生成一個隨機數並用Master的公鑰對隨機數進行加密,併發送給Master。Master收到加密數之後再用私鑰解密,並將解密數回傳給Slave,Slave確認解密數無誤之後就允許Master進行連線了。這就是一個公鑰認證過程,其間不需要使用者手工輸入密碼。重要過程是將客戶端Master複製到Slave上。

  2)Master機器上生成密碼對

在Master節點上執行以下命令:

1

這條命是生成其無密碼金鑰對,詢問其儲存路徑時直接回車採用預設路徑。生成的金鑰對:id_rsa和id_rsa。pub,預設儲存在“/home/hadoop/。ssh”目錄下(每臺伺服器看各自的生成路徑資訊 因為hadoop為使用者名稱,所以生成在當前使用者名稱下)。

伺服器與伺服器之間如何連線和傳輸資料?

檢視“/home/hadoop/”下是否有“。ssh”資料夾,且“。ssh”檔案下是否有兩個剛生產的無密碼金鑰對。

伺服器與伺服器之間如何連線和傳輸資料?

接著在Master節點上做如下配置,把id_rsa。pub追加到授權的key裡面去。

1

伺服器與伺服器之間如何連線和傳輸資料?

在驗證前,需要做兩件事兒。第一件事兒是修改檔案“authorized_keys”許可權(許可權的設定非常重要,因為不安全的設定安全設定,會讓你不能使用RSA功能),另一件事兒是用root使用者設定“/etc/ssh/sshd_config”的內容。使其無密碼登入有效。

1)修改檔案“authorized_keys”

1

伺服器與伺服器之間如何連線和傳輸資料?

備註:如果不進行設定,在驗證時,扔提示你輸入密碼,在這裡花費了將近半天時間來查詢原因。

2)設定SSH配置

用root使用者登入伺服器修改SSH配置檔案“/etc/ssh/sshd_config”的下列內容。

伺服器與伺服器之間如何連線和傳輸資料?

1

2

3

設定完之後記得重啟SSH服務,才能使剛才設定有效。

1

退出root登入,使用hadoop普通使用者驗證是否成功。

1

伺服器與伺服器之間如何連線和傳輸資料?

從上圖中得知無密碼登入本級已經設定完畢,接下來的事兒是把公鑰複製所有的Slave機器上。使用下面的命令格式進行復制公鑰:

1

例如:

1

上面的命令是複製檔案“id_rsa。pub”到伺服器IP為“192。168。1。3”的使用者為“hadoop”的“/home/hadoop/”下面。

下面就針對IP為“192。168。1。3”的Slave1。Hadoop的節點進行配置。

1)把Master。Hadoop上的公鑰複製到Slave1。Hadoop上

伺服器與伺服器之間如何連線和傳輸資料?

從上圖中我們得知,已經把檔案“id_rsa。pub”傳過去了,因為並沒有建立起無密碼連線,所以在連線時,仍然要提示輸入輸入Slave1。Hadoop伺服器使用者hadoop的密碼。為了確保確實已經把檔案傳過去了,用SecureCRT登入Slave1。Hadoop:192。168。1。3伺服器,檢視“/home/hadoop/”下是否存在這個檔案。

伺服器與伺服器之間如何連線和傳輸資料?

從上面得知我們已經成功把公鑰複製過去了。

2)在“/home/hadoop/”下建立“。ssh”資料夾

這一步並不是必須的,如果在Slave1。Hadoop的“/home/hadoop”已經存在就不需要建立了,因為我們之前並沒有對Slave機器做過無密碼登入配置,所以該檔案是不存在的。用下面命令進行建立。(備註:用hadoop登入系統,如果不涉及系統檔案修改,一般情況下都是用我們之前建立的普通使用者hadoop進行執行命令。)

1

然後是修改資料夾“。ssh”的使用者許可權,把他的許可權修改為“700”,用下面命令執行:

1

備註:如果不進行,即使你按照前面的操作設定了“authorized_keys”許可權,並配置了“/etc/ssh/sshd_config”,還重啟了sshd服務,在Master能用“ssh localhost”進行無密碼登入,但是對Slave1。Hadoop進行登入仍然需要輸入密碼,就是因為“。ssh”資料夾的許可權設定不對。這個資料夾“。ssh”在配置SSH無密碼登入時系統自動生成時,許可權自動為“700”,如果是自己手動建立,它的組許可權和其他許可權都有,這樣就會導致RSA無密碼遠端登入失敗。

伺服器與伺服器之間如何連線和傳輸資料?

伺服器與伺服器之間如何連線和傳輸資料?

對比上面兩張圖,發現資料夾“。ssh”許可權已經變了。

3)追加到授權檔案“authorized_keys”

到目前為止Master。Hadoop的公鑰也有了,資料夾“。ssh”也有了,且許可權也修改了。這一步就是把Master。Hadoop的公鑰追加到Slave1。Hadoop的授權檔案“authorized_keys”中去。使用下面命令進行追加並修改“authorized_keys”檔案許可權:

1

2

伺服器與伺服器之間如何連線和傳輸資料?

4)用root使用者修改“/etc/ssh/sshd_config”

具體步驟參考前面Master。Hadoop的“設定SSH配置”,具體分為兩步:第1是修改配置檔案;第2是重啟SSH服務。

5)用Master。Hadoop使用SSH無密碼登入Slave1。Hadoop

當前面的步驟設定完畢,就可以使用下面命令格式進行SSH無密碼登入了。

ssh 遠端伺服器IP

伺服器與伺服器之間如何連線和傳輸資料?

從上圖我們主要3個地方,第1個就是SSH無密碼登入命令,第2、3個就是登入前後“@”後面的機器名變了,由“Master”變為了“Slave1”,這就說明我們已經成功實現了SSH無密碼登入了。

最後記得把“/home/hadoop/”目錄下的“id_rsa。pub”檔案刪除掉。

1

伺服器與伺服器之間如何連線和傳輸資料?

到此為止,我們經過前5步已經實現了從“Master。Hadoop”到“Slave1。Hadoop”SSH無密碼登入,下面就是重複上面的步驟把剩餘的Slave伺服器進行配置。這樣,我們就完成了“配置Master無密碼登入所有的Slave伺服器”。