在上一篇博客中,已经介绍了安装虚拟集群的过程和需要注意的细节问题。
这篇主要是介绍如何批量登陆远程主机和配置,这个过程中是在没有部署并行处理工具或者集群管理工具的前进行的。
————————————首次登陆——————————————
首次登陆需要解决的问题就是:
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 部署虚拟集群实践——并行批量操作环境部署的更多相关文章
-
Hadoop1.X集群完全分布式模式环境部署
Hadoop1.X集群完全分布式模式环境部署 1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS,Hadoop Distri ...
-
VMware workstation虚拟集群实践(1)—— 配置集群多节点互信
一. 简述 节点互信,是集群管理的基本操作之一.节点互信是通过SSH协议的公钥密钥认证来代替密码认证来实现的.对于单点批量管理多个节点,多个节点之间相互通信来说,配置SSH单方向信任,或者互信十分必要 ...
-
实战CentOS系统部署Hadoop集群服务
导读 Hadoop是一个由Apache基金会所开发的分布式系统基础架构,Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高 ...
-
基于TLS证书手动部署kubernetes集群(下)
一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已经部署好了etcd集群.flannel网络以及每个节点的docker,接下来部署master节 ...
-
(转)基于TLS证书手动部署kubernetes集群(下)
转:https://www.cnblogs.com/wdliu/p/9152347.html 一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已 ...
-
hadoop(二)搭建伪分布式集群
前言 前面只是大概介绍了一下Hadoop,现在就开始搭建集群了.我们下尝试一下搭建一个最简单的集群.之后为什么要这样搭建会慢慢的分享,先要看一下效果吧! 一.Hadoop的三种运行模式(启动模式) 1 ...
-
安装部署 Kubernetes 集群
安装部署 Kubernetes 集群 阅读目录: 准备工作 部署 Master 管理节点 部署 Minion 工作节点 部署 Hello World 应用 安装 Dashboard 插件 安装 Hea ...
-
centos7.8 安装部署 k8s 集群
centos7.8 安装部署 k8s 集群 目录 centos7.8 安装部署 k8s 集群 环境说明 Docker 安装 k8s 安装准备工作 Master 节点安装 k8s 版本查看 安装 kub ...
-
(二)Kubernetes kubeadm部署k8s集群
kubeadm介绍 kubeadm是Kubernetes项目自带的及集群构建工具,负责执行构建一个最小化的可用集群以及将其启动等的必要基本步骤,kubeadm是Kubernetes集群全生命周期的管理 ...
随机推荐
-
javascript 框架、根基技巧、布局、CSS、控件 JavaScript 类库
预筹备之 JavaScript 今朝支流的 JavaScript 框架排名中,jQuery 和 Ext 可算是佼佼者,得到了用户的普遍好评.海内的一些框架许多也是模仿 jQuery 对 JavaScr ...
-
spring注解 @Transactional
一.@Transactional所需要的jar包 1.aopalliance.jar 这个包是AOP联盟的API包,里面包含了针对面向切面的接口.(通常Spring等其它具备动态织入功能的框架依赖此 ...
-
ERROR 1010 (HY000): Error dropping database (can't rmdir '.\qpweb', errno: 41) 删库失败问题的解决
Win8 下,MySQL5.5,root 用户登录 MySQL 5.5 Command Line Client,删除 qpweb 数据,执行命令 drop database qpweb;报错信息:ER ...
-
盯盯拍Android App 3.0指导
http://www.ddpai.com/bbs/thread-233-1-1.html 视频介绍:http://v.17173.com/v_102_604/MzA0OTAwMDg.html
-
C# 按指定数量从前面或者后面删除字符串
为了方便处理一些数据,自己写一个小程序来辅助工作,提高点效率. 不够删除怎么办呢!?一般程序员都会马上想到的是,用if判断…….这里其实不用if语句也可以轻松实现的! 有些程序员还可能用 try c ...
-
【HeadFirst设计模式】10.状态模式
定义: 允许对象在内部状态改变时改变它 行为,对象看起来好像修改了它的类. OO原则: 封装变化 多用组合,少用继承 针对接口编程,不针对实现编程 为交互对象之间的松耦合设计而努力 类应该对扩展开放, ...
-
php模板引擎技术简单实现
用了smarty,tp过后,也想了解了解其模板技术是怎么实现,于是写一个简单的模板类,大致就是读取模板文件->替换模板文件的内容->保存或者静态化 tpl.class.php主要解析 as ...
-
F5(调试)和服务器控件
一.调试 背景: 今天调试的时候发现我进入的网址是http://×××.com:7813/webaspx/System/Login.aspx(由于代码在公司,我就没有截图,等了半天显示无法加载该页面) ...
-
Keil C减小代码编译量大小的方法(gai)
keil-C减小代码编译大小的方法整理 方法一:(通过优化代码减小) 1.1少做乘除运算,使用左/右移位来实现乘除 Eg ,普通:a = 0x80*4: 优化:a = 0x80<<2: 1 ...
-
git 利用分支概念实现一个仓库管理两个项目
需求描述:开发了一个网站,上线之际,突然另一个客户说也想要个一样的网站,但网站的logo和内部展示图片需要替换一下,也就是说大部分的后台业务逻辑代码都是一致的,以后升级时功能也要保持一致:刚开始想反正 ...