一. 简述

节点互信,是集群管理的基本操作之一。节点互信是通过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文件,因为节点在互相访问的时候,不会出现提示信息。

四. 总结

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

VMware workstation虚拟集群实践(1)—— 配置集群多节点互信的更多相关文章

  1. Oracle 12cR1 RAC 在VMware Workstation上安装(上)—OS环境配置

    Oracle 12cR1 RAC 在VMware Workstation上安装(上)-OS环境配置 1.1  整体规划部分 1.1.1  所需软件介绍 Oracle RAC不支持异构平台.在同一个集群 ...

  2. VMware Workstation 虚拟机使用无线wifi上网配置

    VMware Workstation 虚拟机使用无线wifi上网配置 参考文档: 转载/VMware Workstation环境下的Linux网络设置/适用于无线网络 VMware Workstati ...

  3. VMware Workstation+Linux+Xshell+Xftp+MySQL+SQLyog 配置

    这些天在搞这些个东西做项目,配置较繁,这里记下安装过程中的要点. 1.VMware Workstation 主要是 NAT 方式联网的问题,详述如下,来自网络. NAT 配置那里注意网关,虚拟机中网关 ...

  4. VMWare Workstation虚拟机网卡工作模式及配置方法

    打开VMware→虚拟机→设置.如下图 一. 桥接模式(Bridge) 可将虚拟系统IP与本地系统设在同一网段,此时虚拟机相当于一台网络中与本机公用一个HUB的独立设备,网络中其他机器与虚拟机器.本地 ...

  5. VMware workstation 虚拟网络 三种上网区别

    以VMware workstation为例,其虚拟网络设备有3种: 第一种:vmnet0(桥接模式),无实体虚拟网卡,其实就是一个协议而已,会在对应网卡上加入VMware bridge protoco ...

  6. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第五集之补充-转载“深入理解VMware虚拟网络”】

    郑重声明,此文太好,按耐不住要保存起来好好研究研究,如果侵权,联系我. 转载自王春海的http://blog.51cto.com/wangchunhai/381225,有所更改. 同时可以参考:htt ...

  7. hadoop-2.6.0-cdh5.4.5.tar.gz(CDH)的3节点集群搭建(含zookeeper集群安装)

    前言 本人呕心沥血所写,经过好一段时间反复锤炼和整理修改.感谢所参考的博友们!同时,欢迎前来查阅赏脸的博友们收藏和转载,附上本人的链接 http://www.cnblogs.com/zlslch/p/ ...

  8. [转]VMware Workstation网络连接的三种模式

    经常要使用VMWare Workstation来在本地测试不同的操作系统,以前也搞不清楚网络连接三种模式,最近看了几篇文章才算明白.现总结如下: 1. VMware Workstation的虚拟网络组 ...

  9. VMware Workstation与VM ware Esxi使用OVF文件交互

    实验环境: VMware Workstation  12 Pro 版本 VMware Esxi  6.0.0  版本 VMware Workstation安装一个Linux系统,把VMware Wor ...

随机推荐

  1. ASP.NET MVC5(五):身份验证、授权

    使用Authorize特性进行身份验证 通常情况下,应用程序都是要求用户登录系统之后才能访问某些特定的部分.在ASP.NET MVC中,可以通过使用Authorize特性来实现,甚至可以对整个应用程序 ...

  2. 阿里巴巴的datasource

    阿里巴巴的datasource:<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSourc ...

  3. Kafka 源代码分析之FileMessageSet

    这里主要分析FileMessageSet类 这个类主要是管理log消息的内存对象和文件对象的类.源代码文件在log目录下.这个类被LogSegment类代理调用用来管理分片. 下面是完整代码.代码比较 ...

  4. 框架基础:ajax设计方案(五)--- 集成promise规范,更优雅的书写代码

    距离上一篇博客书写,又过去了大概几个月了,这段时间暂时离开了这个行业,让大脑休息一下.一个人旅行,一个人休息,正好也去完成一个目标 --- 拥有自己的驾照.当然,也把自己晒的黑漆马虎的.不过这一段时间 ...

  5. Bootsrtap表单

    前面的话 表单是用来与用户做交流的一个网页控件,良好的表单设计能够让网页与用户更好的沟通.表单中常见的元素主要包括:文本输入框.下拉选择框.单选按钮.复选按钮.文本域和按钮等.其中每个控件所起的作用都 ...

  6. CUDA零内存拷贝 疑问考证

    今天思考了一下CUDA零内存拷贝的问题,感觉在即将设计的程序中会派上用场,于是就查了一下相关信息. 以下是一些有帮助的链接: cuda中的零拷贝用法--针对二维指针 cuda中的零拷贝用法--针对一维 ...

  7. git的使用[转]

    本节内容 github介绍 安装 仓库创建& 提交代码 代码回滚 工作区和暂存区 撤销修改 删除操作 远程仓库 分支管理 多人协作 github使用 忽略特殊文件.gitignore 为什么要 ...

  8. 【原创】 Docker 中 运行 ASP.NET Core 站点

    一. 建立 .NetCore 项目  a.新建项目 b.选择项目类型 c.添加控制器 d.添加视图 e.修改默认请求 f.发布 二. 准备 CentOS 环境 a.准备虚拟机 b.安装 docker ...

  9. jquery.jqprint-0.3.js打印table表格遇到的坑

    在谷歌控制台输入window.print();可以调起当前整个页面的打印预览,那么要想打印页面某块区域内容怎么办呢? 我找到了jqprint插件,其原理是运用iframe 元素创建另外一个文档的内联框 ...

  10. [UWP]浅谈按钮设计

    一时兴起想谈谈UWP按钮的设计. 按钮是UI中最重要的元素之一,可能也是用得最多的交互元素.好的按钮设计可以有效提高用户体验,构造让人眼前一亮的UI.而且按钮通常不会影响布局,小小的按钮无论怎么改也不 ...