集群linux
A. linux伺服器集群只允許堡壘機SSH登錄
在區域網中的Linux伺服器集群,為了保障運維安全,只能從堡壘機登錄到各個Linux伺服器。那麼需要對Linux伺服器集群進行安全加固,限制訪問許可權。在堡壘機上可以部署腳本來記錄用戶操作的審計日誌(詳情參考筆者的文章),那麼整個區域網的Linux伺服器集群的安全性就可以大大提高。
堡壘機作用明顯,其提供運維統一入口和安全審計功能,切斷直接訪問和事後審計定責,解決「運維混亂」變得「運維有序」 。
下面是三種方法總結。分別從服務端,系統端、防火牆端來完成只允許堡壘機SSH登錄的功能。
1、/etc/ssh/sshd_config
修改添加AllowUsers到ssh配置文件/etc/ssh/sshd_config :
AllowUsers [email protected].*
然後重啟 sshd服務:systemctl restart sshd
2、hosts.allow與hosts.deny
修改/etc/hosts.deny中添加設置 sshd : ALL ,拒絕所有的訪問;
修改/etc/hosts.allow,添加設置sshd : 20.132.4.* ,單獨開啟某個IP地址 。
這兩個文件優先順序為先檢查hosts.deny,再檢查hosts.allow。
更加詳細信息參考筆者的文章-Linux中hosts.allow與hosts.deny 。
3、iptables防火牆
tcp協議中,禁止所有的ip訪問本機的22埠。
iptables -I INPUT -p tcp--dport 22 -j DROP
只允許20.132.4.* 訪問本機的22埠
iptables -I INPUT -s 20.132.4.* -ptcp --dport 22 -j ACCEPT
另外/etc/pam.d/sshd也可以提供訪問控制功能,調用的pam_access.so模塊是根據主機名、IP地址和用戶實現全面的訪問控制,pam_access.so模塊的具體工作行為根據配置文件/etc/security/access.conf來決定。但是囿於資料過少,待以後遇到再解決把。
B. 什麼是Linux集群
1.集群就是一堆集群一起提供用戶的訪問。
2.集群目的:
a.7*24隨時服務
b.三高:高並發、高數據量、高帶寬下的大量用戶訪問問題。
3.單機就類似街邊小餐館,集群就類似大酒店
C. 什麼是Linux集群
集群通信系統是一種計算機系統,
它通過一組鬆散集成的計算機軟體和/或硬體連接起來高度緊密地協作完成計算工作。簡單地說,集群(cluster)就是一組計算機,它們作為一個整體向用戶提供一組網路資源。這些單個的計算機系統就是集群的節點(node)。一個理想的集群,用戶是不會意識到集群系統底層的節點的。在他們看來,集群是一個系統,而非多個計算機系統。並且集群系統的管理員可以隨意增加和刪改集群系統的節點。
集群已不是一個全新的概念,早在七十年代計算機廠商和研究機構就對集群系統進行了研究和開發。這些系統不為大家熟知,是因為它主要用於科學工程計算。直到Linux集群的出現,集群的概念才得以廣泛傳播。集群系統主要分為高可用(High
Availability)集群,簡稱HA集群,和高性能計算(High Perfermance Computing)集群,簡稱HPC集群。
在Linux出現前,集群系統採用的操作系統主要有VMS、UNIX和WindowsNT。到九十年代末期,linux操作系統不斷走向成熟,它的健壯性不斷增強,並且提供了GNU軟體和標准化的PVM、MPI消息傳遞機制,最重要的是Linux在普通PC機上提供了對高性能網路的支持,這樣就大大推動了基於Linux的集群系統的普及和發展。
D. Linux集群系統時間同步
環境准備:
要做到伺服器集群的時間同步,集群中各台機器的時區必須相同的,我們在國內就使用中國時區,如果你的機器的時區不是"Asia/Shanghai",需要修改時區
CentOS 中時區是以文件形式存在,當前正在使用的時區文件位於
/etc/localtime ,其他時區文件則位於 /usr/share/zoneinfo 下,中國時區的文件全路徑是 /usr/share/zoneinfo/Asia/Shanghai
要更改時區,直接使用如下命令就OK
需要使用 tzselect 命令去生成時區文件,生成好的時區文件就在/usr/share/zoneinfo 目錄下,具體步驟去下:
使用 date -s 命令來修改系統時間
讓集群所有的伺服器的時間同步,就用遠程連接工具連接所有伺服器,然後在所有的伺服器中同時執行 date -s 命令設置時間,然後在所有的伺服器中執行 hwclock -w 命令即可
美國標准技術院時間伺服器:time.nist.gov(192.43.244.18)
上海交通大學網路中心NTP伺服器地址:ntp.sjtu.e.cn(202.120.2.101)
中國國家授時中心伺服器地址:cn.pool.ntp.org(210.72.145.44)
若以上提供的網路時間伺服器不可用,請自行上網尋找可用的網路時間伺服器
<1> 使用命令: crontab -e
<2> 然後往裡加入一行內容
上面的配置表示,每隔十分鍾從 202.120.2.101 該時間伺服器同步一次時間。
<3> 保存退出
以上兩步操作可以讓node01這個伺服器每隔10分鍾去指定的伺服器同步時間,如果需要讓集群中的所有伺服器(hadoop01-hadoop04)時間同步,那麼每台伺服器都要做以上兩步操作。
node01的IP為192.168.21.101,讓它作為時間伺服器,192.168.21.0區域網內的所有伺服器都向它同步時間,而node01這台時間伺服器本身,向外網時間伺服器同步時間(比如中國國家授時中心伺服器)
我用node01
我去掉了所有的默認注釋,對其中的修改寫了自己的注釋,沒有寫注釋的是默認配置
因為ntpd服務開啟之後,就不能手動同步時間了,那麼為什麼要先手動同步時間呢?
當server(中國國家授時中心伺服器)與client(node01)之間的時間誤差過大時(可能是1000秒),node01去同步時間可能對系統和應用帶來不可預知的問題,node01將停止時間同步!所以如果發現node01啟動之後時間並不進行同步時,應該考慮到可能是時間差過大引起的,此時需要先手動進行時間同步!
看到紅色框中的內容,表示連接和監聽已正確
這里的前4行就是我們配置的4個中國國家授時中心的伺服器的信息
最後一行就是本地時間服務的信息
下面對每個列的意義進行說明:
同樣,服務啟動後需要等待5-10分鍾才能看到這個正常的信息
到這里,我們區域網內的時間伺服器node01就已經配置完畢了
文件內容如下:
同樣,沒有寫注釋的都是默認的配置
原因同(5)
到這里,利用區域網內一台時間伺服器來同步整個集群時間的全部配置就已經完成
說明:若以上提供的網路時間伺服器不可用,請自行上網尋找可用的網路時間伺服器,另外需要關閉各伺服器的防火牆,才能進行時間同步
參考文章:
內網環境NTP服務及時間同步(CentOS6.x)配置和部署
配置NTP服務ntpd/ntp.conf(搭建Hadoop集群可參考)
E. Linux集群主要有哪幾類
集群類型
最常見的三種群集類型包括高性能科學群集、負載均衡群集和高可用性群集。
科學群集
通常,第一種涉及為群集開發並行編程應用程序,以解決復雜的科學問題。這是並行計算的基礎,盡管它不使用專門的並行超級計算機,這種超級計算機內部由十至上萬個獨立處理器組成。但它卻使用商業系統,如通過高速連接來鏈接的一組單處理器或雙處理器 PC,並且在公共消息傳遞層上進行通信以運行並行應用程序。因此,您會常常聽說又有一種便宜的 Linux 超級計算機問世了。但它實際是一個計算機群集,其處理能力與真的超級計算機相等,通常一套象樣的群集配置開銷要超過 $100,000。這對一般人來說似乎是太貴了,但與價值上百萬美元的專用超級計算機相比還算是便宜的。
負載均衡群集
負載均衡群集為企業需求提供了更實用的系統。如名稱所暗示的,該系統使負載可以在計算機群集中盡可能平均地分攤處理。該負載可能是需要均衡的應用程序處理 負載或網路流量負載。這樣的系統非常適合於運行同一組應用程序的大量用戶。每個節點都可以處理一部分負載,並且可以在節點之間動態分配負載,以實現平衡。 對於網路流量也是如此。通常,網路伺服器應用程序接受了太多入網流量,以致無法迅速處理,這就需要將流量發送給在其它節點上運行的網路伺服器應用。還可以 根據每個節點上不同的可用資源或網路的特殊環境來進行優化。
高可用性群集
高可用性群集的出現是為了使群集的整體服務盡可能可用,以便考慮計算硬體和軟體的易錯性。如果高可用性群集中的主節點發生了故障,那麼這段時間內將由次節 點代替它。次節點通常是主節點的鏡像,所以當它代替主節點時,它可以完全接管其身份,並且因此使系統環境對於用戶是一致的。
在群集的這三種基本類型之間,經常會發生混合與交雜。於是,可以發現高可用性群集也可以在其節點之間均衡用戶負載,同時仍試圖維持高可用性程度。同樣,可 以從要編入應用程序的群集中找到一個並行群集,它可以在節點之間執行負載均衡。盡管集群系統本身獨立於它在使用的軟體或硬體,但要有效運行系統時,硬體連 接將起關鍵作用。
更多知識請網路《Linux就該這么學》
F. [ray入門] 在Linux上安裝部署Ray集群
Ray 是一個高性能分布式計算框架,藉助它可以非常容易的構建分布式運算任務。本文將介紹如何在Linux上部署Ray集群:
Ray集群由一個 Head 節點和多個 Worker 節點組成:
為了方便,我們最好利用 Anaconda 構建來一個獨立的python運行環境。(當然你也可以直接使用系統內python運行環境,那麼你可以跳過此步驟)
為ray准備一個python環境,以python3.8.8示例:
安裝完之後,最好重新登錄一下,或者執行一下 source ~/.bashrc 使得環境變數生效
安裝ray(版本為1.7.0),這里為了加快速度指定了阿里的鏡像源:
在 192.168.100.1 上啟動Head節點:
正常會看到如下輸出:
輸出信息包含了2個關鍵信息,需要別注意:
在 192.168.100.2 上,按照上面的步驟將python和ray安裝好,注意它們的版本必須保持一致。
(另外,Worker不是必須的,因為Head節點本身就具有worker角色)
訪問dashboard: http://192.168.100.1:8265
無法訪問Ray Dashboard的幾個原因
G. Linux HA 集群原理和配置-02
本文介紹在Linux HA集群中的仲裁和分區概念。
集群正常工作時,所有節點都在一個分區內(partition),分區內的所有節點將選舉出一個仲裁節點,這個仲裁節點負責向其他節點發送集群控制命令。當網路發生故障時,集群中的節點發現無法和仲裁節點通信,則會在可通信的范圍內重新選舉一個新的仲裁節點。此時集群內可能出現多個仲裁節點,每個仲裁節點的管理范圍為一個分區。
下文中將通過防火牆策略的設置模擬集群網路中通信出現異常的各種情況,如:
通過防火牆策略可以精準控制兩兩節點之間的連通性,使我們能更准確的了解在網路連通性發生變化對集群的影響。
在所有節點上啟動防火牆,並添加策略對整個管理網路192.168.56.0/24放通。
保存上述策略,之後在實驗過程會使用iptables命名加入新策略模擬網路通信異常效果,如果需要恢復網路通信正常狀態,直接不保存策略重啟firewalld服務即可。
通過pcs status查看集群狀態:
上述結果顯示當前集群只有一個分區,分區內的節點包括全部3台主機,仲裁節點是ha-host3,這表示集群間的通信是完好的。下圖顯示當前集群狀態:
在ha-host1上添加以下策略:
該策略將使得ha-host1和ha-host3之間的通信中斷,在所有節點上查看集群狀態:
上面的結果顯示,ha-host1失去和當前仲裁節點ha-host3的聯系之後,和ha-host2一起組成新的分區並選舉出ha-host2作為新的仲裁節點。有趣的是ha-host2和ha-host3的通信並未中斷,但是他被「優先順序較高的ha-host1搶走並推舉為老大」,剩下ha-host3獨自留在其自身所在的分區。此時ha-host3所在的分區提示了「partition WITHOUT quorum」,表示該分區中的節點數目不超過一半。
下圖顯示當前集群狀態:
在ha-host1上再添加策略:
使其和當前的仲裁節點ha-host2的通信中斷,集群狀態變為:
發現ha-host2和ha-host3一起組成了新的分區,由於ha-host1所在分區節點數不足一半,無法啟動資源,虛擬ip資源vip被切換到了ha-host2上。下圖顯示當前集群狀態:
如果再把ha-host2和ha-host3直接的通信中斷,此時3個節點間兩兩均無法通信。每個節點都是一個分區,每個分區的主機數均不過半,因此無法啟動任何資源,原先運行在ha-host2上的vip也停止了。
當前集群狀態如下圖:
H. Linux集群命令分發執行腳本
如果沒有運維人員或運維軟體,但是又面臨在一個集群中每台機器都執行一個命令時,總不能真的登錄每一台吧。那這里就起一個簡單的命令分發執行腳本。
0、確保腳本所在的機器能夠免密登錄到集群其他機器
SSH免密登錄配置
1、將集群的IP都寫入一個文件中
2、編寫命令分發腳本
如果機器數量少,可以替換第三行語句為
如果機器IP配置的映射名有規律,也可以替換第三行語句為
同時後面的 $i 替換為 hadoop$i
3、測試
I. Linux集群使用命令
存儲NAS 文件操作
df -h查看空間使用情況
警惕超大 nohup.out
任務提交
任務提交前
qhost--查看集群負載狀態
qsub / qsub-sge.pl--提交任務
qstat--查看任務狀態
qdel / qmod--任務控制
任務查看
qhost -j---列出所有用戶在每個節點上的任務
qhost -q---列出每個節點上每個隊列的任務數
qhost -u username---列出某個用戶在每個節點上的任務
提交命令
qsub -cwd -q queue.q test.sh
qsub-sge.pl --maxproc 50 --resource vf=5G --queue queue.q test.sh
任務查看2
qstat -u username---查看某個用戶的任務
qstat -u *,---查看所有用戶的任務
qstat –j jobs_ID---查看某個任務的詳細信息
查看.e和.o文件
.e:錯誤信息
.o:標准輸出
任務控制
qdel jobID---刪除某個任務
qdel -u username---刪除某個用戶的所有任務
qmod -s jobID--掛起某個任務
qmod -us jobID---繼續運行某個掛起的任務
按任務佔用內存大小選擇相應的隊列
查看隊列 qstat -g c
QUEUE
PE.q--並行
cloud.q--雲平台
general.q--96G節點
middle.q--96G節點
great.q--大內存節點
plus.q--大內存節點
single.q--Trinity組裝
single._p.q---Trinity組裝(佔用內存較大)
TOP監視
編輯於 2017-04-21
J. Linux集群常用指令
姓名:張昊楠 學號:21021210691
存儲NAS 文件操作
df -h查看空間使用情況
警惕超大 nohup.out
ls 當前路徑下的文件列表
pwd 查看當前路徑
cd 進入某個文件夾
任務提交
任務提交前
qhost--查看集群負載狀態
qsub / qsub-sge.pl--提交任務
qstat--查看任務狀態
qdel / qmod--任務控制
任務查看
qhost -j---列出所有用戶在每個節點上的任務
qhost -q---列出每個節點上每個隊列的任務數
qhost -u username---列出某個用戶在每個節點上的任務
提交命令
qsub -cwd -q queue.q test.sh
qsub-sge.pl --maxproc 50 --resource vf=5G --queue queue.q test.sh
任務查看2
qstat -u username---查看某個用戶的任務
qstat -u *,---查看所有用戶的任務
qstat –j jobs_ID---查看某個任務的詳細信息
查看.e和.o文件
.e:錯誤信息
.o:標准輸出
任務控制
qdel jobID---刪除某個任務
qdel -u username---刪除某個用戶的所有任務
qmod -s jobID--掛起某個任務
qmod -us jobID---繼續運行某個掛起的任務
按任務佔用內存大小選擇相應的隊列
查看隊列 qstat -g c
QUEUE
PE.q--並行
cloud.q--雲平台
general.q--96G節點
middle.q--96G節點
great.q--大內存節點
plus.q--大內存節點
single.q--Trinity組裝
single._p.q---Trinity組裝(佔用內存較大)