shell 脚本实战笔记(6)--集群环境配置检测
1). 背景:
集群部署的时候, 需要一致的配置和环境设置. 对于虚拟机集群, 可以借助镜像拷贝, 复制和还原集群机器. 对与物理机集群而言, 则不一样, 如果机器一多, 多人去操作和配置, 对于成熟精干的团队还好, 对于不熟悉环境的小团队, 由于水平的参差不齐, 往往会导致不一致的环境. 因此无论如何, 写脚本进行自动化的配置和环境校验总是最佳实践.
2). 假设应用场景:
*) 系统环境:
安装CDH5, 集群规模为16台机器, 每台机器16CPU, 内存16G, 2块SATA盘共500G, 操作系统为Centos 6.4.
集群机器, ip范围为192.168.1.101~192.168.1.116.
*) 基本要求
安装CDH5时, 需要满足以下基本要求
#) 需要配置每台机器的/etc/hosts文件, 使得每台机器拥有集群所有机器的域名
#) 需要关闭防火墙, 并禁止开启启动
#) 需要配置本地yum源
#) 磁盘分区尽量满足/mnt/disk{N}的形式
#) 机器时间基本同步
3). 具体实施
*) 配置集群的ssh无登录登录
选择一台中控机(跳板机), 或者集群的某台机器, 作为自动化脚本的发起端, 作为系统管理员, 采用root用户.
#) 本地创建RSA密钥, 产生RSA公钥/私钥对
mkdir -p ~/.ssh
cd ~/.ssh
ssh-keygen -t rsa -P ''
默认生成id_rsa(私钥), id_rsa.pub(公钥)文件
#) 编辑脚本
ssh-copy-id -i id_rsa root@<target_ip>
#! /bin/bash
username="root"
server_ips=(
"192.168.1.101" "192.168.1.102" "192.168.1.103" "192.168.1.104" "192.168.1.105"
"192.168.1.106" "192.168.1.107" "192.168.1.108" "192.168.1.109" "192.168.1.110"
"192.168.1.111" "192.168.1.112" "192.168.1.113" "192.168.1.114" "192.168.1.115"
"192.168.1.116"
) for (( i = 0; i < ${#server_ips[*]}; i++ )); do
ssh-copy-id -i ~/.ssh/id_rsa $username@${server_ips[i]}
done
执行, 当然这步还是痛苦的, 需要手动输入16次密码(16台机器).
#) 开启RSA验证
编辑/etc/ssh/sshd_conf
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys GSSAPIAuthentication no
UseDNS no
前三项, 用于开启RSA服务, 后两项用于解决初始连接SSH响应慢的问题
#) 重启ssh服务
service sshd restart
*) 编写自动化脚本
#! /bin/bash username="root" server_ips=(
"192.168.1.101" "192.168.1.102" "192.168.1.103" "192.168.1.104" "192.168.1.105"
"192.168.1.106" "192.168.1.107" "192.168.1.108" "192.168.1.109" "192.168.1.110"
"192.168.1.111" "192.168.1.112" "192.168.1.113" "192.168.1.114" "192.168.1.115"
"192.168.1.116"
) # description:
# 在各个节点上, 执行命令, 并把执行结果汇总到一个文件中, 便于对比
# params:
# $1 => command, 要执行的命令
# $2 => filename, 要保存输出结果的文件, 用于结果对比
execute_all_servers() {
ssh_command=$1
result_file=$2
echo "start execute..." > $result_file
for (( i = 0; i < ${#server_ips[*]}; i++ )); do
echo "server_ip: ${server_ips[i]}, execute command: '$ssh_command'" >> $result_file
ssh $username@${server_ips[i]} "$ssh_command" >> $result_file
echo "=================================" >> $result_file
done
}
#) 检测/etc/hosts文件
execute_all_servers "cat /etc/hosts" "check_hosts_result.log"
#) 磁盘分区和挂载检测
execute_all_servers "df -h ; fdisk -l" "check_fdisk_result.log"
#) 防火墙关闭检测
execute_all_servers "service iptables status" "check_iptable_result.log"
#) 防火墙关闭命令
execute_all_servers "service iptables stop ; chkconfig --levels 235 iptables off" "stop_iptables_result.log"
其他需要加的环境检测和环境配置, 皆可采用类似的方式去实现, 这并非完美, 只是提供了一种解决思路
shell 脚本实战笔记(6)--集群环境配置检测的更多相关文章
- shell 脚本实战笔记(3)--集群机器的时间同步设置
背景: 有些分布式服务(比如HBase服务), 依赖于系统时间戳, 如果集群各个节点, 系统时间不一致, 导致服务出现诡异的情况. 解决方案: 那如何同步集群各个节点之间的时间? 采用NTP(Netw ...
- EHCache分布式缓存集群环境配置
EHCache分布式缓存集群环境配置 ehcache提供三种网络连接策略来实现集群,rmi,jgroup还有jms.同时ehcache可以可以实现多播的方式实现集群,也可以手动指定集群主机序列实现集群 ...
- Hive在集群环境配置
本文转载自:https://blog.csdn.net/hanjin7278/article/details/53035739 一.简介 hive是基于Hadoop的一个数据仓库工具,可以将结构化的数 ...
- Kafka集群环境配置
Kafka集群环境配置 1 环境准备 1.1 集群规划 Node02 Node03 Node04 zk zk zk kafka kafka kafka 1.2 jar包下载 安装包:kafka_2.1 ...
- RocketMQ的安装配置:配置jdk环境,配置RocketMQ环境,配置集群环境,配置rocketmq-console
RocketMQ的安装配置 演示虚拟机环境:Centos64-1 (D:\linuxMore\centos6_64) root / itcast : 固定IP 192.168.52.128 一,配置J ...
- redis集群环境配置
为什么需要集群 redis是一个开源的 key->value 高速存储系统,但是由于redis单线程运行,在系统中,只能利用单核的性能 当redis的调用越来越频繁时,可能会出现redis过于繁 ...
- 第2章 CentOS7集群环境配置
目录 2.1 关闭防火墙 2.2 设置固定IP 2.3 修改主机名 2.4 添加用户 2.5 修改用户权限 2.6 新建目录 2.7 安装JDK 1.卸载系统自带的JDK 2.安装JDK 2.8 克隆 ...
- HBase 学习之路(四)—— HBase集群环境配置
一.集群规划 这里搭建一个3节点的HBase集群,其中三台主机上均为Regin Server.同时为了保证高可用,除了在hadoop001上部署主Master服务外,还在hadoop002上部署备用的 ...
- HBase 系列(四)—— HBase 集群环境配置
一.集群规划 这里搭建一个 3 节点的 HBase 集群,其中三台主机上均为 Regin Server.同时为了保证高可用,除了在 hadoop001 上部署主 Master 服务外,还在 hadoo ...
随机推荐
- 创建缓存文件(。php)
public function user_dengji(){ $this->sdb->select('groupid,grouptitle'); $query ...
- mapreduce job提交流程源码级分析(三)
mapreduce job提交流程源码级分析(二)(原创)这篇文章说到了jobSubmitClient.submitJob(jobId, submitJobDir.toString(), jobCop ...
- MM 不哭 (tyvj 1097)
题目大意: 一条数轴上有 n 个 MM 在哭,需要tcboy去安慰,tcboy 一开始站在第k个MM身边,每个MM 哭都会减掉tcboy的RP. 确定安慰MM的顺序使得RP扣得最少.求 min(Rp_ ...
- 长理ACM 7-密码破译(闫博钊)
/* //题目标题: *密码破译(闫博钊) //题目描述: *某组织欲破获一个外星人的密码,密码由一定长度的字串组成.此组织拥有一些破译此密码的长度不同的钥匙,若两个钥匙的长度之和恰好为此密码的长度, ...
- .net 小技巧
简单提示效果: <input runat="server" type="text" id="SelPerson" value=&quo ...
- Android安全之WebViewUXSS漏洞
Android安全 WebView UXSS app开发 漏洞分析 移动安全 0X01 前言 XSS是我们比较熟悉的一种攻击方式,包括存储型XSS.反射型XSS.DOM XSS等,但UXSS(通用型X ...
- iOS 使用两个tableview的瀑布流
代码 悦德财富:https://www.yuedecaifu.com 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...
- SharePoint开发 - 自定义页面(错误页、登出页)
博客地址 http://blog.csdn.net/foxdave 本文叙述如何自定义SharePoint的固有页面,比较简单,用一句话说就是"做个页面,写一句代码." 创建Sha ...
- 中文Ubuntu系统根目录文件夹名称变为英文
Ubuntu中文安装后,家目录均为中文,如“下载” “文档”等等,在使用Shell时很不方便,可用如下方法将这些文件夹名称改回英文 1.使用命令 export LANG=en_US xdg-user- ...
- 使用Qemu调试内核
利用Qemu进行内核源码级调试 http://blog.csdn.net/gdt_a20/article/details/7231652 用Qemu调试Linux内核 http://blog.chin ...