在上一篇博客中,已经介绍了安装虚拟集群的过程和需要注意的细节问题。

这篇主要是介绍如何批量登陆远程主机和配置,这个过程中是在没有部署并行处理工具或者集群管理工具的前进行的。

————————————首次登陆——————————————

首次登陆需要解决的问题就是:

  1,信任远程主机公钥的问题,也就是key_word:yes/no?

  2,然后就是远程主机的密码,key_word:password:

在自动化部署过程中,需要进行免交互和免密码登陆。

  1,使用expect编写免交互登陆脚本(适用于telnet,ssh,ftp等),然后使用shell调用expect脚本进行批量处理

  2,使用ssh-keygen -h创建本地公钥,然后把该公钥传到远程主机之后,就可以免密码登陆

  因此,对于要实现首次登陆,并且把本地管理主机的公钥批量传输给远程主机,可以通过编写脚本来实现

————————————首次登陆,创建/root/.ssh——————————————

1,创建登陆单台远程主机的脚本:

  ssh_login.exp,内容如下

  该脚本主要是首次免交互登陆远程主机,然后创建/root/.ssh目录

#!/usr/bin/expect

set timeout 1

set user [lindex $argv 0]

set host [lindex $argv 1]

set pawd [lindex $argv 2]

put stdout "------$host--------"

log_user 0

spawn ssh $user@$host

expect {

    "yes/no"  { send "yes\r";exp_continue }

    "password"  { send "$pawd\r" }

}

expect "#"

log_user 1

send "mkdir -p /root/.ssh\r"

send "ls -l /root/.ssh\r"

expect "#"

expect eof

send_user "\n"

2,创建批量登陆脚本
  ssh_login_all.sh,内容如下:

#!/bin/bash

user=$1

pawd=$2

for ip in {31..34}

do

  host=192.168.80.${ip}

  ./ssh_login.exp  ${user}  ${host}  ${pawd} | tee -a $0.log

done  

3,运行脚本./ssh_login_all.sh,可以在远程主机列表创建/root/.ssh

—————————拷贝本地/root/.ssh/authorizd_keys到远程主机——————————

1,创建拷贝单个文件的脚本

  scp_authorized_keys.exp,内容如下

#!/usr/bin/expect

set timeout 3

set user [lindex $argv 0]

set host [lindex $argv 1]

set pawd [lindex $argv 2]

set srcfile [lindex $argv 3]

set desfile [lindex $argv 4]

if { $argc !=5 } {

  puts stdout "100"

  #puts stdout "Error info"

  exit 1

}

spawn scp $srcfile $user@$host:$desfile

expect {

  "yes/no"  { send "yes\r";exp_continue }

  "password"  { send "$pawd\r" }

}

expect "#"

2,创建批量拷贝文件的脚本

  ./scp_all.sh,内容如下

#!/bin/bash

if [ "$#" -ne "4" ];then

  echo "usage:$0 [user] [pawd] [srcfile] [desfile]" && exit 0

fi

user=$1

pawd=$2

srcfile=$3

desfile=$4

for ip in {31..34}

do

  host=192.168.80.${ip}

  ./scp_authorized_keys.exp ${user} ${host} ${pawd} ${srcfile} ${desfile} | tee -a $.0.log

done

 

————————————————————验证登陆————————————————

拷贝完本地的authorized_keys到远程主机之后,本地主机就可以免密码登陆到远程主机了。

配置信任关系之后,同样可以在本地管理主机部署集群管理工具等,进行虚拟集群的集中管理。

例如安装pssh,c3等

————————————————远程主机的配置修改————————————————

根据这两篇博客的内容,到这里基本上可以无密码登陆远程主机了。基于此,则可以部署集群管理工具或者编写并行命令执行脚本,进行远程主机的配置统,或者统一修改

例如:

  1. 根据不同主机的IP地址,修改主机名(这里只改写了IP,设定子网掩码,默认网关,DNS服务等,也可以这么做)

#!/bin/bash

for ip in {41..50}

do

  host=192.168.80.${ip}

  ssh ${host} "sed -i 's/IPADDR=/IPADDR=${host}/g'" etc/sysconfig/network-scripts/ifcfg-eth0

done

  2. 拷贝以下文件到远程主机:

   /etc/hosts;/etc/selinux/config;/etc/ssh/sshd_config;/etc/ssh/ssh_config;/etc/pam.d/sshd;/etc/secutity/access.conf等

   yum -y install pssh

   pssh -i -h hostfile /etc/hosts

总结:

对于集群节点少于10个的点,其实可以手动配置。但是对于数量众多的集群,编写脚本能够带来很多方便。同时,正式环境的设备都有带外管理界面和管理维护网络,使用起来更加方便。

通过这两篇博客的内容,就可以把集群初期的环境部署好,配置修改好。

  

(二 )VMware workstation 部署虚拟集群实践——并行批量操作环境部署的更多相关文章

  1. Hadoop1.X集群完全分布式模式环境部署

    Hadoop1.X集群完全分布式模式环境部署 1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS,Hadoop Distri ...

  2. VMware workstation虚拟集群实践(1)—— 配置集群多节点互信

    一. 简述 节点互信,是集群管理的基本操作之一.节点互信是通过SSH协议的公钥密钥认证来代替密码认证来实现的.对于单点批量管理多个节点,多个节点之间相互通信来说,配置SSH单方向信任,或者互信十分必要 ...

  3. 实战CentOS系统部署Hadoop集群服务

    导读 Hadoop是一个由Apache基金会所开发的分布式系统基础架构,Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高 ...

  4. 基于TLS证书手动部署kubernetes集群(下)

    一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已经部署好了etcd集群.flannel网络以及每个节点的docker,接下来部署master节 ...

  5. (转)基于TLS证书手动部署kubernetes集群(下)

    转:https://www.cnblogs.com/wdliu/p/9152347.html 一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已 ...

  6. hadoop(二)搭建伪分布式集群

    前言 前面只是大概介绍了一下Hadoop,现在就开始搭建集群了.我们下尝试一下搭建一个最简单的集群.之后为什么要这样搭建会慢慢的分享,先要看一下效果吧! 一.Hadoop的三种运行模式(启动模式) 1 ...

  7. 安装部署 Kubernetes 集群

    安装部署 Kubernetes 集群 阅读目录: 准备工作 部署 Master 管理节点 部署 Minion 工作节点 部署 Hello World 应用 安装 Dashboard 插件 安装 Hea ...

  8. centos7.8 安装部署 k8s 集群

    centos7.8 安装部署 k8s 集群 目录 centos7.8 安装部署 k8s 集群 环境说明 Docker 安装 k8s 安装准备工作 Master 节点安装 k8s 版本查看 安装 kub ...

  9. Istio(二):在Kubernetes(k8s)集群上安装部署istio1.14

    目录 一.模块概览 二.系统环境 三.安装istio 3.1 使用 Istioctl 安装 3.2 使用 Istio Operator 安装 3.3 生产部署情况如何? 3.4 平台安装指南 四.Ge ...

随机推荐

  1. 【无聊放个模板系列】HDU 3068 MANACHER

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  2. 在ubuntu下关闭笔记本触摸板

    http://www.cnblogs.com/icejoywoo/archive/2011/04/14/2016318.html 原文地址:http://forum.ubuntu.org.cn/vie ...

  3. AVPicture、AVFrame和AVPacket

    http://blog.csdn.net/ym012/article/details/6540065 从定义上可知,AVPicture是AVFrame的一个子集,他们都是数据流在编解过程中用来保存数据 ...

  4. vs2012布局问题

    问题背景: 北大青鸟ASP.Net视频中,老师提到可以通过更改属性PageLayout的值,来实现页面布局由默认的FlowLayout(流式布局)而成为GridLayout(网格布局),即系统控件安排 ...

  5. RPGJS 进阶分析之 如何使用RMXP导出的数据

    首先启动RMXP 在主脚本编辑区粘贴官方提供的导出数据脚本. 之后启动并进入游戏之后按F8键就可以调出导出Map和Animation的菜单 导出后的数据保存在工程目录下的RpgJs目录下. Datab ...

  6. Ubuntu 出现apt-get: Package has no installation candidate问题

    今天在安装软件的时候出现了Package has no installation candidate的问题,如: #  apt-get install <packagename> Read ...

  7. Lua查找字符串注意

    问题: 使用Lua写Wireshark插件时,经常匹配字符串.今天使用string.find()函数查找字符串”max-age”,没有找到. 分析: local index = string.find ...

  8. C语言setjmp函数使用

    C语言中可以使用goto进行程序跳转,但是goto只能使用在一个函数内部,不能实现在不同函数之间的跳转,C语言因此提供了setjmp和longjmp函数实现此功能,一般进行异常处理. 从函数名称可以看 ...

  9. FZU2090 旅行社的烦恼 巧妙floyd 最短路

    分析:floyd看似很好理解,实际上是状态转移,具体的解释参照这里 http://www.cnblogs.com/chenying99/p/3932877.html 深入理解了floyd后,这个题就可 ...

  10. Android之parseSDKContent failed

    由于之前安装ADT之后就一直报parseSDKContent failed的错误,具体的信息为:java.lang.NullPointerException. 此问题的情况为在Eclipse下,And ...