導航:首頁 > 程序命令 > linux集群命令

linux集群命令

發布時間:2023-07-22 15:06:13

A. 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集群可參考)

B. 如何對區域網內的多台Linux進行集群化管理

它非常適合用來快速配置一個集群中的所有運行相同服務和具備相同配置的計算機節點。現在有大量的開源管理工具,都可以實現這樣的管理,比如dsh、SUSE Manager等。下面是用ClusterSSH管理多台Linux伺服器的具體過程。
如果你是一名Linux系統管理員,那你每天一定會和許許多多的機器打交道,因為你要定期監測和維護這些機器,如一批Web伺服器,如果你要同時在多台機器上敲入相同的命令,你可能會通過SSH登錄,然後逐台敲入,如果使用ClusterSSH,可以為你節省不少類似的工作時間。
ClusterSSH是用Tk/Perl包裝XTerm和SSH後形成的新工具,就其本身而言,它可以運行在任何兼容POSIX的操作系統上,我曾經在Linux,Solaris和Mac OS X上運行過它,它需要Perl庫Tk(在Debian或Ubuntu上就是perl-tk)和X11::Protocol(在Debian或Ubuntu上就是libx11-protocol-perl),此外,xterm和OpenSSH是必不可少的。
安裝在Debian或Ubuntu上安裝ClusterSSH是相當簡單的,只需要敲入sudo apt-get install clusterssh就可以安裝好,至於依賴包你也不必擔心,一切都會為你裝好的,它也提供了適合Fedora的rpm包,在FreeBSD上可通過port系統安裝,還為Mac OS X准備了MacPort版本,因此你可以在你的蘋果電腦上安裝ClusterSSH,當然,如果你是極客,也可以下載源代碼自己編譯
配置可以通過ClusterSSH的全局配置文件/etc/clusters,或用戶home目錄下的。csshrc文件來配置它,我喜歡用戶級的配置方式,這樣同一個系統中的不同用戶可以根據自己的喜好進行配置,ClusterSSH定義了一個「cluster」機器組,你可以通過一個界面來控制這個組中的所有機器,在配置文件的頂端「clusters」部分,你可以詳盡地列出你的集群,然後用獨立的段落來描述每個集群。
例如,假設我有兩個集群,每個集群由兩台機器組成,「Cluster1」由「Test1」和「Test2」兩台機器組成,「Cluster2」由「Test3」和「Test4」兩台機器組成,~.csshrc(或/etc/clusters)配置文件的內容看起來應該是:
clusters = cluster1 cluster2
cluster1 = test1 test2
cluster2 = test3 test4你也可以創建中間集群(包含其它集群的集群),如果你想創建一個名叫「all」的集群包含所有的機器,有兩種實現手段,首先,你可以創建一個包含所有機器的集群,如:
clusters = cluster1 cluster2 all
cluster1 = test1 test2
cluster2 = test3 test4
all = test1 test2 test3 test4但我更喜歡的方法是使用一個包含其它集群的中間集群:
clusters = cluster1 cluster2 allcluster1 = test1 test2

C. linux redis 怎麼設置集群

redis.conf 配置文件說明
daemonize no --是否把redis-server啟動在後台,默認是「否」。若改成yes
pidfile /var/run/redis.pid --當Redis以守護進程方式運行時,Redis默認會把pid寫入/var/run/redis.pid文件,可以通過pidfile指定

prot 6379 --指定Redis監聽埠,默認埠為6379
bind 10.252.1.14 ---綁定的主機地址
timeout 0 ---當 客戶端閑置多長時間後關閉連接,如果指定為0,表示關閉該功能
loglevel notice ---指定日誌記錄級別,Redis總共支持四個級別:debug、verbose、notice、warning,默認為verbose
logfile /mnt/redis/log/redis.log --日誌記錄方式,默認為標准輸出,如果配置Redis為守護進程方式運行,而這里又配置為日誌記錄方式為標准輸出,則日誌將會發送給/dev/null
databases 16 設置資料庫的數量,默認資料庫為0,可以使用SELECT <dbid>命令在連接上指定資料庫id
save 900 1 指定在多長時間內,有多少次更新操作,就將數據同步到數據文件,可以多個條件配合
Redis默認配置文件中提供了三個條件:
save 900 1
save 300 10
save 60 10000
分別表示900秒(15分鍾)內有1個更改,300秒(5分鍾)內有10個更改以及60秒內有10000個更改
rdbcompression yes --指定存儲至本地資料庫時是否壓縮數據,默認為yes,Redis採用LZF壓縮,如果為了節省CPU時間,可以關閉該選項,但會導致資料庫文件變的巨大
dbfilename mp.rdb --指定本地資料庫文件名,默認值為mp.rdb
dir /mnt/redis/data/ --指定本地資料庫存放目錄
slaveof <masterip> <masterport> -- 設置當本機為slav服務時,設置master服務的IP地址及埠,在Redis啟動時,它會自動從master進行數據同步
masterauth <master-password> --當master服務設置了密碼保護時,slav服務連接master的密碼
requirepass foobared --設置Redis連接密碼,如果配置了連接密碼,客戶端在連接Redis時需要通過AUTH <password>命令提供密碼,默認關閉
maxclients 128 --- 設置同一時間最大客戶端連接數,默認無限制

maxmemory <bytes> ---指定Redis最大內存限制,Redis在啟動時會把數據載入到內存中,達到最大內存後,Redis會先嘗試清除已到期或即將到期的Key,當此方法處理 後,仍然到達最大內存設置,將無法再進行寫入操作,但仍然可以進行讀取操作。Redis新的vm機制,會把Key存放內存,Value會存放在swap區

appendonly no --指定是否在每次更新操作後進行日誌記錄,Redis在默認情況下是非同步的把數據寫入磁碟,如果不開啟,可能會在斷電時導致一段時間內的數據丟失。因為 redis本身同步數據文件是按上面save條件來同步的,所以有的數據會在一段時間內只存在於內存中。默認為no
appendfilename appendonly.aof ---指定更新日誌文件名,默認為appendonly.aof
appendfsync everysec ---指定更新日誌條件,共有3個可選值: no:表示等操作系統進行數據緩存同步到磁碟(快) . always:表示每次更新操作後手動調用fsync()將數據寫到磁碟(慢,安全). everysec:表示每秒同步一次(折衷,默認值)
vm-enabled no ---指定是否啟用虛擬內存機制,默認值為no,簡單的介紹一下,VM機制將數據分頁存放,由Redis將訪問量較少的頁即冷數據swap到磁碟上,訪問多的頁面由磁碟自動換出到內存中(在後面的文章我會仔細分析Redis的VM機制)
vm-swap-file /tmp/redis.swap ---虛擬內存文件路徑,默認值為/tmp/redis.swap,不可多個Redis實例共享
vm-max-memory 0 將所有大於vm-max-memory的數據存入虛擬內存,無論vm-max-memory設置多小,所有索引數據都是內存存儲的(Redis的索引數據 就是keys),也就是說,當vm-max-memory設置為0的時候,其實是所有value都存在於磁碟。默認值為0
vm-page-size 32 ---Redis swap文件分成了很多的page,一個對象可以保存在多個page上面,但一個page上不能被多個對象共享,vm-page-size是要根據存儲的 數據大小來設定的,作者建議如果存儲很多小對象,page大小最好設置為32或者64bytes;如果存儲很大大對象,則可以使用更大的page,如果不 確定,就使用默認值
vm-pages 134217728 ---設置swap文件中的page數量,由於頁表(一種表示頁面空閑或使用的bitmap)是在放在內存中的,,在磁碟上每8個pages將消耗1byte的內存。
vm-max-threads 4 ---設置訪問swap文件的線程數,最好不要超過機器的核數,如果設置為0,那麼所有對swap文件的操作都是串列的,可能會造成比較長時間的延遲。默認值為4
glueoutputbuf yes ---設置在向客戶端應答時,是否把較小的包合並為一個包發送,默認為開啟
hash-max-zipmap-entries 64 ---指定在超過一定的數量或者最大的元素超過某一臨界值時,採用一種特殊的哈希演算法
hash-max-zipmap-value 512 ---指定在超過一定的數量或者最大的元素超過某一臨界值時,採用一種特殊的哈希演算法
activerehashing yes ---指定是否激活重置哈希,默認為開啟(後面在介紹Redis的哈希演算法時具體介紹)
include /path/to/local.conf ---指定包含其它的配置文件,可以在同一主機上多個Redis實例之間使用同一份配置文件,而同時各個實例又擁有自己的特定配置文件

主伺服器配置
mkdir /mnt/redis/redisDB
mkdir /mnt/redis/redisLog
vi /etc/redis/redis.conf
dbfilename /mnt/redisDB/mp.rdb --修改磁碟上保存資料庫文件的位置
loglevel warning --修改日誌級別
logfile /mnt/redis/redisLog/redis.log --修改日誌文件的位置

從機配置
cp redis.conf /etc/redis_slave.conf
vim redis_slave.conf
修改其中的一行
配置master的ip地址和redis-server的埠。
slaveof <10.45.39.39> <6379> --設置主從伺服器的主伺服器的地址和埠

daemonize no --是否把redis-server啟動在後台,默認是「否」。若改成yes,會生成一個pid文件。
主從測試
主機: redis-server /etc/redis.conf
從機: redis-server /etc/redis_slave.conf
3.1 測試
在主機上啟動redis客戶端:
ssh 192.168.1.1
redis-cli
>set k1 v1
>get k1
"v1"
.登陸從機,並在從機上啟動客戶端:
ssh 192.168.1.2
redis-cli
>get k1
"v1"
可以看到redis已經把數據同步過來了。

D. 基於Linux自己初步搭建Kubernetes(k8s)集群基礎,詳細教程



k8s官方網站:https://kubernetes.io/zh/,可自行查看相關文檔說明

k8s-master:Ubuntu--192.168.152.100

k8s-node01:Ubuntu--192.168.152.101

k8s-node02:Ubuntu--192.168.152.102



全部已安裝docker,未安裝可根據官方文檔安裝:https://docs.docker.com/get-docker/

1,禁止swap分區

K8s的要求,確保禁止掉swap分區,不禁止,初始化會報錯。

在每個宿主機上執行:


2,確保時區和時間正確

時區設置


3,關閉防火牆和selinux

ubuntu 查看防火牆命令,ufw status可查看狀態,ubuntu20.04默認全部關閉,無需設置。

4,主機名和hosts設置(可選)

非必須,但是為了直觀方便管理,建議設置。

在宿主機分別設置主機名:k8s-master,k8s-node01,k8s-node02

hosts設置


1,更改docker默認驅動為systemd

為防止初始化出現一系列的錯誤,請檢查docker和kubectl驅動是否一致,否則kubectl沒法啟動造成報錯。版本不一樣,docker有些為cgroupfs,而kubectl默認驅動為systemd,所以需要更改docker驅動。

可查看自己docker驅動命令:

更改docker驅動,編輯 /etc/docker/daemon.json (沒有就新建一個),添加如下啟動項參數即可:

重啟docker

需要在每台機器上安裝以下的軟體包:

2,更新 apt 包索引並安裝使用 Kubernetes apt 倉庫所需要的包

安裝軟體包以允許apt通過HTTPS使用存儲庫,已安裝軟體的可以忽略

3,下載公開簽名秘鑰、並添加k8s庫

國外 :下載 Google Cloud 公開簽名秘鑰:

國內:可以用阿里源即可:

請注意,在命令中,使用的是Ubuntu 16.04 Xenial 版本, 是可用的最新 Kubernetes 存儲庫。所以而非20.04 的focal。


4,更新 apt 包索引,安裝 kubelet、kubeadm 和 kubectl,並鎖定其版本

鎖定版本,防止出現不兼容情況,例如,1.7.0 版本的 kubelet 可以完全兼容 1.8.0 版本的 API 伺服器,反之則不可以。


只需要在master上操作即可。


1,初始化錯誤解決(沒有報錯的可以跳過這條)

錯誤提示1:


原因:kubectl沒法啟動,journalctl -xe查看啟動錯誤信息。


解決方案:k8s建議systemd驅動,所以更改docker驅動即可,編輯 /etc/docker/daemon.json (沒有就新建一個),添加如下啟動項參數即可:

重啟docker和kubectel


錯誤提示2:


原因:初始化生產的文件,重新初始化,需要刪除即可

錯誤提示3:


解決方法:重置配置


2,初始化完成

無報錯,最後出現以下,表示初始化完成,根據提示還需要操作。


根據用戶是root或者普通用戶操作,由於大多環境不會是root用戶,我也是普通用戶,所以選擇普通用戶操作命令:

如果是root用戶,執行以下命令:

初始化完成,用最後的提示命令 kubeadm join.... 在node機器上加入集群即可。


3,主節點pod網路設置

主節點支持網路插件:https://kubernetes.io/zh/docs/concepts/cluster-administration/addons/

這里安裝Calico網路插件:https://docs.projectcalico.org/getting-started/kubernetes/self-managed-onprem/onpremises

Calico官網提供三種安裝方式,1)低於50個節點,2)高於50個節點,3)etcd datastore(官方不建議此方法)。

這里選擇第一種:

安裝完成後, kubectl get node 可查看節點狀態,由NotReady變成Ready則正常,需要等幾分鍾完成。


1,node加入master節點

在所有node節點機器操作,統一已安裝完成 kubelet、kubeadm 和 kubectl,用master初始化完成後最後提示命令加入,切記要用root用戶。

加入成功後,提示如下:


再次查看kubelet服務已正常啟動。


2,需注意的坑

1:加入主節點,需要 root 用戶執行詞條命令,才可以加入master主節點。

node在沒有加入主節點master之前,kubelet服務是沒法啟動的,是正常情況,會報錯如下:


原因是缺失文件,主節點master初始化 `kubeadm init`生成。

node節點是不需要初始化的,所以只需要用root用戶`kubeadm join`加入master即可生成。

2:如果加入提示某些文件已存在,如:

原因是加入過主節點,即使沒成功加入,文件也會創建,所以需要重置節點,重新加入即可,重置命令:

3,在master查看節點

加入完成後,在master節點 kubectl get node 可查看已加入的所有節點:


這里k8s集群創建完成,下一步使用可參考我的下一篇文章:k8s初步熟悉使用介紹,實踐搭建nginx集群

E. 如何分分鍾創建Linux虛擬集群

很多小型組織使用了KVM虛擬化,但卻無法在主機發生故障時採取相關措施保證高可用性。本文介紹如何採取簡單的方式確保虛擬機的高可用性。你可以使用任一Linux發行版的KVM,但是這些Linux發行版在集群功能方面存在差異。Pacemaker堆棧源於SUSE,紅帽在最近的版本中才確定其集群實現方式。因此在本文中我將介紹如何在OpenSuSE 13.1 下配置集群。 圖1. KVM高可用架構概覽假定集群中的節點已經連接到了SAN。如果集群中的節點還沒有連接到SAN,那麼將虛擬主機連接到Linux SAN並不復雜,當然你也可以使用SAN設備。然而我們在本文中採用的方式—使用OCFS 2共享文件系統構建集群—只有在使用SAN時才是有效的。配置KVM高可用集群的步驟如下所示:創建基礎集群在SAN共享存儲上配置OCFS2集群文件系統使用SAN磁碟作為後端存儲,安裝虛擬機為虛擬機配置Pacemaker集群資源驗證集群配置創建基礎集群在Open SUSE 13.1下使用命令zypper in pacemaker ocfs2-tools lvm2-clvm 安裝構建集群所必需的軟體包,開始創建基礎集群。集群包括兩層。較低的層稱之為corosync轉載僅供參考,版權屬於原作者。祝你愉快,滿意請採納哦

閱讀全文

與linux集群命令相關的資料

熱點內容
時間演算法與現在有什麼區別 瀏覽:160
7zip解壓後沒文件夾 瀏覽:900
為什麼安卓送玫瑰ios收不到 瀏覽:6
美篇文章加密是什麼意思 瀏覽:80
ilasm編譯dll 瀏覽:36
呼吸燈單片機程序 瀏覽:950
linux域socket 瀏覽:246
qq分身怎麼樣才能加密 瀏覽:453
windows打開linux 瀏覽:995
新建文件夾為什麼不能發送微信 瀏覽:600
交警app怎麼綁定本人幾輛車 瀏覽:985
彩虹六號如何人工伺服器 瀏覽:632
mc伺服器地址怎麼登入 瀏覽:556
蘋果app怎麼掃描二維碼下載 瀏覽:961
css文件在線解壓 瀏覽:156
36歲程序員近況 瀏覽:285
哪裡可以下載不加密的歌 瀏覽:936
隱藏文件夾是什麼梗 瀏覽:920
插件注冊命令 瀏覽:498
梁一端加密一端不加密規范 瀏覽:84