叢集環境準備
一、機器準備
首先需要準備3臺機器或者虛擬機器,安裝好centos7.5版本和JDK1.8。
我們這次準備安裝的是Cloudera的CDH 5.14.3 。
TIPS:快速建立機器的技巧是規範好要裝的軟體,迅速利用映象功能建立好三臺機器出來。
ip地址這裡我們設定為192.168.168.81,192.168.168.82,192.168.168.83。
如果是本地的虛擬機器,需要自己配置IP地址。
我們以192.168.168.81為例子。
進入網路配置目錄
cd /etc/sysconfig/network-scripts
編輯網路卡配置檔案,這裡的ens33根據您實際的網路卡名稱來。
vi ifcfg-ens33
這裡注意幾個引數
BOOTPROTO=static # 這裡需要設定為靜態的ip地址
ONBOOT=yes # 啟動的時候開啟網路,不然不能聯網
IPADDR=192.168.168.81 # 你要設定的IP地址,這裡最好不要在DHCP範圍內,避免IP衝突
GATEWAY=192.168.168.2 # 閘道器
NETMASK=255.255.255.0 # 網路掩碼
DNS1=8.8.8.8 # google的 DNS伺服器
DNS2=192.168.168.2 # 閘道器做DNS伺服器
最後重啟網路服務。
service network restart
網路模型參考:
https://www.linuxidc.com/Linux/2016-09/135521.htm
二、修改hostname和hosts檔案
1.檢視hostname
在每臺機器上我們可以通過命令
hostname
2. 修改hostname
在192.168.168.81上執行命令,修改主機名稱為dev-hd001。
hostnamectl set-hostname dev-hd001
在192.168.168.82上執行命令,修改主機名稱為dev-hd002。
hostnamectl set-hostname dev-hd002
在192.168.168.82上執行命令,修改主機名稱為dev-hd002。
hostnamectl set-hostname dev-hd003
3.修改hosts檔案
在每一臺機器的hosts檔案中加入如下內容。
vim /etc/hosts
192.168.168.81 dev-hd001 hd1
192.168.168.82 dev-hd002 hd2
192.168.168.83 dev-hd003 hd3
三、關閉防火牆和selinux
1.關閉防火牆
檢視預設防火牆狀態。
(關閉後顯示notrunning,開啟後顯示running)
firewall-cmd --state
停止firewall
systemctl stop firewalld.service
禁止firewall開機啟動
systemctl disable firewalld.service
如果安裝了iptables, 我們還需要關閉iptables
檢視iptables狀態
service iptables status
停止iptables
service iptables stop
啟動的時候關閉iptables
chkconfig iptables off
2.關閉selinux
永久關閉selinux,需要通過修改配置檔案/etc/selinux/config。
vim /etc/selinux/config
修改SELINUX。引數可選(enforcing、permissive、disabled)
SELINUX=disabled
需要reboot重啟生效。
四、安裝ssh免密碼登入
- 免密登入原理
現在我們有A和B兩臺機器。
1.我們在A上生成一對金鑰。
2.將在A上生成的公鑰拷貝給B機器,新增到~/.ssh/authorized_keys這個檔案中。
3.A向B傳送一個連線請求,資訊包括使用者名稱,IP等
4.B的到A的資訊後,回到authorized_keys中查詢,如果有對應的使用者名稱和ip, B會隨機生成一個字串,比如"DMAC"。
5.B使用公鑰對字串"DMAC"進行加密,然後傳送給A。
6.A得到B發來的訊息後,使用私鑰進行解密,然後將解密後的字串傳送給B.
7.B接收到A發過來的字串後,會跟先前生成的字串進行對比,如果一致,就允許免密碼登入。
2.操作步驟
1.確認有沒有~/.ssh目錄,沒有的話
mkdir ~/.ssh
2.在dev-hd001機下生成公鑰和私鑰對。
ssh-keygen
這裡直接三次回車,會看到在~/.ssh有id_rsa檔案和id_rsa.pub檔案。
id_rsa.pub檔案是公鑰檔案。
可以通過cat命令檢視。
cat id_rsa.pub
3.從dev-hd001機器拷貝公鑰到dev-hd002機器。
ssh-copy-id -i root@dev-hd002
ssh-copy-id命令可以把本地主機的公鑰複製到遠端主機的authorized_keys檔案上。
ssh-copy-id命令也會給遠端主機的使用者主目錄(home)和~/.ssh, 和~/.ssh/authorized_keys設定合適的許可權。
4.在dev-hd001上登入到dev-hd002
ssh root@dev-hd002
logout 登出