VMware workstation虛擬集群實踐(1)—— 配置集群多節點互信


一. 簡述

節點互信,是集群管理的基本操作之一。節點互信是通過SSH協議的公鑰密鑰認證來代替密碼認證來實現的。對於單點批量管理多個節點,多個節點之間相互通信來說,配置SSH單方向信任,或者互信十分必要。

本篇博客基於《VMware workstation批量創建虛擬機和自動化安裝操作系統》的基礎上,創建了10台虛擬機node11-node20。實現控制台console01,單向信任,能夠使用console01進行批量管理和操作;實現node11-node20之間相互信息,為后期集群服務的部署打下基礎。

二. 涉及知識點

  • SSH協議配置及公鑰密鑰管理

  • 輕量級並行工具pssh,pdsh,mussh安裝使用

  • 基本shell腳本編寫和for循環使用

三. 實踐過程

(1) console01環境部署

console01作為集群管理的控制台,是集中發布文件,集群管理的平台。

1.創建/etc/hosts信息,如下

for i in $(seq 11 20);do echo "192.168.80.$i node$i" >> /etc/hosts;done

2.安裝第三方擴展源eple-release

# yum -y install epel-release

# yum makecache

3.安裝並行處理工具pssh,pdhs,mussh

# yum -y install pssh pdsh mussh

4.安裝sshpass工具

# yum -y install sshpass

(2) 配置console01到其他節點無密碼登陸

配置console01到其他節點的信任,需要console01生成公鑰和密鑰,並把公鑰的authorized_keys文件分發到其他節點上

1.console01生成公鑰密鑰

# cd /root/.ssh/ && ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa.pub

這里采用的無交互式,無密碼加密的密鑰生成方式。
-t指加密算法,-P指密鑰密碼,-f是指定生成的文件

2.console02發布公鑰

for ip in $(seq 11 20)
do
sshpass -P liwanliang ssh-copy-id -i /root/.ssh/id_rsa.pub
done

注:這里-P 指定的是node11-node20的root密碼,在無人值守安裝中默認設置的。

上述命令執行成功后,console01便可以通過#ssh node11的方式登陸其他節點,或者遠程管理這些節點了。

(3) 發布文件並批量修改主機名

通過上面的操作,實現了console01到node11-node20的無密碼驗證登陸,據此便可以使用基於SSH協議的輕量級並行管理工具,如pssh,pdsd,mussh等

注:實際上,遠程管理由登陸發展為非登陸,由單台發展為多台,由交互發展為非交互,由telnet發展為ssh等,由shell發展為python等,由簡易的腳本變成復雜的集群管理系統,由簡單的批處理命令,變成配置管理,批量部署等,其基本原理是不變的。

a.安裝pssh,pdsh,mussh

# yum -y install pssh,pdsh,mussh

b.創建批處理的對象主機文件

注:可以是IP地址,也可以是主機名

# for i in $(seq 11 20);do echo "node${i}" >> nodes_host;done

測試:

# pssh -i -h nodes_host hostname

c.發布必要文件

集群管理中,/etc/hosts文件十分重要,基本上集群服務部署中,寫主機名的比較多,一方面便於分清楚和記憶節點角色,一方面便於靈活管理。
因此通過console01發布一些重要的文件,或者配置文件,對集群管理十分必要。
如,發布主機名文件

# pscp.pssh -h nodes_host /etc/hosts /etc/hosts

可將已經編輯好的主機名文件發布至集群所有節點

如,發布ssh_config文件

注:現在/etc/ssh/ssh_config中配置ssh客戶端配置,如默認接受公鑰,公鑰放置位置為/dev/null等,這是為了第一次登陸不顯示冗余信息,需要配置如下

Host *
    GSSAPIAuthentication no
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null

d.批量修改主機名

通過《VMware Workstation批量創建虛擬機和自動化安裝操作系統》教程,部署完成后的虛擬機,只具有固定IP,其主機名都是初始主機名,需要根據需要修改主機名。
這里根據IP來修改主機名,操作如下:

#!/bin/bash
HOSTNAME_FILE=/etc/sysconfig/network
for num in $(seq 11 20)
do
    echo "修改node{num}..."
    ssh node${num} "sed -i 's/HOSTNAME=localhost\.localdomain/HOSTNAME=node${num}/g' ${HOSTNAME_FILE}"
    ssh node${num} "hostname node${num}"
    echo "修改node{num}ok"
done

(4) 配置node11-node20節點互信##

上述過程基本上完成了控制台console01到node11-node20之間的管理配置需求。以后的工作,便可以通過輕量級pssh,pdsh,mussh來完成,或部署ansible,puppet來管理。
但是集群節點之間的互信也需要部署,才能夠使得節點之間的管理能夠更加快捷方便。

a.集群節點生成公鑰密鑰

for ip in $(seq 11 20)
do 
ssh node${ip} ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa
done

注:有時候安裝系統之后,/root/目錄下沒有.ssh目錄,需要通過pssh批量創建,並修改目錄權限為700

b.收集集群節點全部公鑰

for ip in $(seq 11 20)
do 
ssh node${ip} "cat /root/.ssh/id_rsa.pub">> /root/.ssh/authorized_keys
done

c.分發公鑰至集群節點

# pscp.pssh -i -h nodes_host /root/.ssh/authorized_keys /root/.ssh/authorized_keys

至此,node11-node20之間,便實現了節點之間的互信。當擴大集群范圍時,同樣采用這種方式可以很方便實現節點互信。因為上面已經分發了/etc/ssh/ssh_config文件,因為節點在互相訪問的時候,不會出現提示信息。

四. 總結

節點互信,是集群管理的最基本操作。密鑰登陸是安全登陸的第一道工序,也是集群管理的基本操作。這邊博客的基本操作,希望能夠學有所得。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM