Linux部署集群準備
介紹
在前面,我們所學習安裝的軟件,都是以單機模式運行的。
后續,我們將要學習大數據相關的軟件部署,所以后續我們所安裝的軟件服務,大多數都是以集群化(多臺服務器共同工作)模式運行的。
所以,在當前小節,我們需要完成集群化環境的前置準備,包括創建多臺虛擬機,配置主機名映射,SSH免密登錄等等。
部署
配置多臺Linux虛擬機
安裝集群化軟件,首要條件就是要有多臺Linux服務器可用。
我們可以使用VMware提供的克隆功能,將我們的虛擬機額外克隆出3臺來使用。
-
首先,關機當前CentOS系統虛擬機(可以使用root用戶執行
init 0
來快速關機) -
新建文件夾
文件夾起名為:
虛擬機集群
-
克隆
-
同樣的操作克隆出:node2和node3
-
開啟node1,修改主機名為node1,并修改固定IP為:
192.168.149.131
# 修改主機名 hostnamectl set-hostname node1# 修改IP地址 vim /etc/sysconfig/network-scripts/ifcfg-ens33 IPADDR="192.168.149.131"# 重啟網卡 systemctl stop network systemctl start network # 或者直接 systemctl restart network
-
同樣的操作啟動node2和node3,
修改node2主機名為node2,設置IP為
192.168.149.132
修改node2主機名為node3,設置IP為
192.168.149.133
-
配置
Xshell
,配置連接到node1、node2、node3的連接為了簡單起見,建議配置root用戶登錄
準備主機名映射
-
在Windows系統中修改hosts文件,填入如下內容:
如果使用MacOS系統,請:
sudo su -
,切換到root- 修改
/etc/hosts
文件
192.168.149.131 node1 192.168.149.132 node2 192.168.149.133 node3
-
在3臺Linux的/etc/hosts文件中,填入如下內容(3臺都要添加)
192.168.149.131 node1 192.168.149.132 node2 192.168.149.133 node3
配置SSH免密登錄
簡介
SSH服務是一種用于遠程登錄的安全認證協議。
使用Xshell
遠程連接到Linux,就是使用的SSH服務。
SSH服務支持:
- 通過賬戶+密碼的認證方式來做用戶認證
- 通過賬戶+秘鑰文件的方式做用戶認證
SSH可以讓我們通過SSH命令,遠程的登陸到其它的主機上,比如:
在node1執行:ssh root@node2
,將以root用戶登錄node2服務器,輸入密碼即可成功登陸
或者ssh node2
,將以當前用戶直接登陸到node2服務器。
SSH免密配置
后續安裝的集群化軟件,多數需要遠程登錄以及遠程執行命令,我們可以簡單起見,配置三臺Linux服務器之間的免密碼互相SSH登陸
-
在每一臺機器都執行:
ssh-keygen -t rsa -b 4096
,一路回車到底即可示例輸出
[root@node1 ~]# ssh-keygen -t rsa -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:aLNaRbRGpAagFBjBeX6K1y3ceZRnHZrvik6h20Wsuj0 root@node1 The key's randomart image is: +---[RSA 4096]----+ |==+.. .+ | |o+ . . + . . | |. o o + . + . | | . o + o.= . | | . = * S.oo. | | . o = B..+ . | | . +..o .. | | o *Eo . | | . +o=... | +----[SHA256]-----+ [root@node1 ~]#
-
在每一臺機器都執行:
ssh-copy-id node1 ssh-copy-id node2 ssh-copy-id node3
示例輸出
[root@node1 ~]# ssh-copy-id node1 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host 'node1 (192.168.149.131)' can't be established. ECDSA key fingerprint is SHA256:UJULWpe9PpdjrmEBO/1SQMmmfkvmuDBVZ2QCGz+8Il0. ECDSA key fingerprint is MD5:82:4f:8d:bd:f5:ca:8d:ba:99:dd:65:08:2a:a5:50:92. Are you sure you want to continue connecting (yes/no)? /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed The authenticity of host 'node1 (192.168.149.131)' can't be established. ECDSA key fingerprint is SHA256:UJULWpe9PpdjrmEBO/1SQMmmfkvmuDBVZ2QCGz+8Il0. ECDSA key fingerprint is MD5:82:4f:8d:bd:f5:ca:8d:ba:99:dd:65:08:2a:a5:50:92. Are you sure you want to continue connecting (yes/no)? /usr/bin/ssh-copy-id: ERROR: Host key verification failed.[root@node1 ~]# ssh-copy-id node1 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host 'node1 (192.168.149.131)' can't be established. ECDSA key fingerprint is SHA256:UJULWpe9PpdjrmEBO/1SQMmmfkvmuDBVZ2QCGz+8Il0. ECDSA key fingerprint is MD5:82:4f:8d:bd:f5:ca:8d:ba:99:dd:65:08:2a:a5:50:92. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@node1's password: Permission denied, please try again. root@node1's password: Number of key(s) added: 1Now try logging into the machine, with: "ssh 'node1'" and check to make sure that only the key(s) you wanted were added.[root@node1 ~]# ssh-copy-id node2 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@node2's password: Number of key(s) added: 1Now try logging into the machine, with: "ssh 'node2'" and check to make sure that only the key(s) you wanted were added.[root@node1 ~]# ssh-copy-id node3 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host 'node3 (192.168.149.133)' can't be established. ECDSA key fingerprint is SHA256:UJULWpe9PpdjrmEBO/1SQMmmfkvmuDBVZ2QCGz+8Il0. ECDSA key fingerprint is MD5:82:4f:8d:bd:f5:ca:8d:ba:99:dd:65:08:2a:a5:50:92. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@node3's password: Number of key(s) added: 1Now try logging into the machine, with: "ssh 'node3'" and check to make sure that only the key(s) you wanted were added.
-
執行完畢后,node1、node2、node3之間將完成root用戶之間的免密互通
[root@node1 ~]# ssh node3 Last login: Wed Feb 28 12:10:09 2024 from 192.168.149.1 [root@node3 ~]# exit 登出 Connection to node3 closed. [root@node1 ~]# ssh node2 Last login: Wed Feb 28 12:18:11 2024 from node1 [root@node2 ~]# exit 登出 Connection to node2 closed. [root@node1 ~]#
配置JDK環境
后續的大數據集群軟件,多數是需要Java運行環境的,所以我們為每一臺機器都配置JDK環境。
JDK配置參閱:Tomcat
安裝部署環節。
參考文章
06-Linux部署Tomcat:http://t.csdnimg.cn/VmRq6
關閉防火墻和SELinux
集群化軟件之間需要通過端口互相通訊,為了避免出現網絡不通的問題,我們可以簡單的在集群內部關閉防火墻。
在每一臺機器都執行
systemctl stop firewalld
systemctl disable firewalld
Linux有一個安全模塊:SELinux
,用以限制用戶和程序的相關權限,來確保系統的安全穩定。
SELinux
的配置同防火墻一樣,非常復雜,課程中不多涉及,后續視情況可以出一章SELinux
的配置課程。
在當前,我們只需要關閉SELinux
功能,避免導致后面的軟件運行出現問題即可,
在每一臺機器都執行
vim /etc/sysconfig/selinux# 將第7行,SELINUX=enforcing 改為
SELINUX=disabled
# 保存退出后,重啟虛擬機即可,千萬要注意disabled單詞不要寫錯,不然無法啟動系統
添加快照
為了避免后續出現問題,在完成上述設置后關機(只有關機后的快照才能被克隆,不關機設置的快照只能還原),為每一臺虛擬機都制作快照,留待使用。
補充命令 - scp
后續的安裝部署操作,我們將會頻繁的在多臺服務器之間相互傳輸數據。
為了更加方面的互相傳輸,我們補充一個命令:scp
scp命令是cp命令的升級版,即:ssh cp,通過SSH協議完成文件的復制。
其主要的功能就是:在不同的Linux服務器之間,通過SSH
協議互相傳輸文件。
只要知曉服務器的賬戶和密碼(或密鑰),即可通過SCP互傳文件。
語法:
scp [-r] 參數1 參數2
- -r選項用于復制文件夾使用,如果復制文件夾,必須使用-r
- 參數1:本機路徑 或 遠程目標路徑
- 參數2:遠程目標路徑 或 本機路徑
示例
- 將本機上的
jdk
文件夾, 以root的身份復制到node2的/export/server/
內,同SSH登陸一樣,賬戶名可以省略(使用本機當前的同名賬戶登陸)
scp -r /export/server/jdk root@node2:/export/server/
- 將遠程node2的
jdk
文件夾,復制到本機的/export/server/
內
scp -r node2:/export/server/jdk /export/server/
- scp命令的高級用法
cd /export/server
# 將本機當前路徑的jdk文件夾,復制到node2服務器的同名路徑下
scp -r jdk node2:`pwd`/# 將本機當前路徑的jdk文件夾,復制到node2服務器的同名路徑下
scp -r jdk node2:$PWD