zoukankan      html  css  js  c++  java
  • 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文件,因为节点在互相访问的时候,不会出现提示信息。

    四. 总结

    节点互信,是集群管理的最基本操作。密钥登陆是安全登陆的第一道工序,也是集群管理的基本操作。这边博客的基本操作,希望能够学有所得。

  • 相关阅读:
    Codeforces 845E Fire in the City 线段树
    Codeforces 542D Superhero's Job dp (看题解)
    Codeforces 797F Mice and Holes dp
    Codeforces 408D Parcels dp (看题解)
    Codeforces 464D World of Darkraft
    Codeforces 215E Periodical Numbers 容斥原理
    Codeforces 285E Positions in Permutations dp + 容斥原理
    Codeforces 875E Delivery Club dp
    Codeforces 888F Connecting Vertices 区间dp (看题解)
    Codeforces 946F Fibonacci String Subsequences dp (看题解)
  • 原文地址:https://www.cnblogs.com/liwanliangblog/p/7289272.html
Copyright © 2011-2022 走看看