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

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

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

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

  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. Hadoop集群(第10期)_MySQL关系数据库

    1.MySQL安装 MySQL下载地址:http://www.mysql.com/downloads/ 1.1 Windows平台 1)准备软件 MySQL版本:mysql-5.5.21-win32. ...

  2. 递归解析XML

    package com.app.test; import java.io.InputStream; import java.util.List; import org.dom4j.Attribute; ...

  3. Layer 1: Single Objects

    Layer 1: 单一对象 粗略的说, 在javascript中所有对象都是maps的键值对. 键值对的实体在对象中称为属性( property).属性的key经常为 string类型,而他的valu ...

  4. python re.sub

    python re.sub   python re.sub属于python正则的标准库,主要是的功能是用正则匹配要替换的字符串然后把它替换成自己想要的字符串的方法下面给个例子:import relin ...

  5. easyui源码翻译1.32--ValidateBox(验证框)

    前言 使用$.fn.validatebox.defaults重写默认值对象.下载该插件翻译源码 validatebox(验证框)的设计目的是为了验证输入的表单字段是否有效.如果用户输入了无效的值,它将 ...

  6. Altium Designer中默认取消重复画线的选项

  7. android usb host 读写USB设备

    自android3.1以后android增加了操作USB设备的API. 官网地址:http://developer.android.com/guide/topics/connectivity/usb/ ...

  8. JNI编程(二) —— 让C++和Java相互调用(1)

    自己在外面偷偷的算了下,又有将近两个月没更新过blog了.趁着今天有兴致,来更新JNI编程的第二篇文章.在第一篇里,大概介绍了JNI的特点.用途和优劣.并且做一个最简单的JNI的例子,不过说实话那个例 ...

  9. C#实现多国语言的界面切换

    在PictureStudio中,我需要实现多国语言的界面切换,而且切换各种语言版本的时候希望程序是动态的加载语言,不希望切换语言后重新启动程序. 实现这样的功能可以有很愚蠢的方法,比如说你可以在程序中 ...

  10. Android开发UI之常用控件的使用

    1.日期选择控件 DatePickerDialog 代码: btnChooseDate=(Button) findViewById(R.id.btnChooseDate); btnChooseDate ...