- 集群服务器直接免密登录
# /root/.ssh/ 目录下 生成公钥 私钥
ssh-keygen -t rsa # 视具体情况yes或者回车
ls
authorized_keys id_rsa id_rsa.pub known_hosts
# 分别为:授权码 私钥 公钥 记录其他通过ssh访问过此用户所在服务器(或者机器,虚拟机)的计算机的公钥
# 多台虚拟机一起做 互相拷贝公钥到对方的授权码中
ssh-copy-id hostname/ip # 目标机器的ip地址或主机名(最好给本机也copy一个,ssh-copy-id 本机ip或者主机名)
# 完成后 就可以ssh免密登录集群其他机器了
ssh IP
exit
- 集群文件远程同步工具rsync及同步脚本xsync
# 所有机器install rsync 并设置开机启动
yum install rsync -y
systemctl start rsyncd.service
systemctl enable rsyncd.service
# xsync脚本基于rsync服务
cd /usr/local/bin
touch xsync
vi xsync
# 添加以下内容
#!/bin/sh
# 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args...;
exit;
fi
# 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
# 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
# 获取当前用户名称
user=`whoami`
# 循环
for((host=1; host<=3; host++)); do
echo $pdir/$fname $user@cdh0$host:$pdir
echo ==================cdh0$host==================
rsync -rvl $pdir/$fname $user@cdh0$host:$pdir
done
#Note:这里的host对应自己主机名,需要做相应修改。另外,for循环中的host的边界值由自己的主机编号决定。
# 脚本写好后,赋予执行权限
chmod a+x xsync
ll 看一下
-rwxr-xr-x 1 root root 693 12月 1 23:18 xsync
测试一下
# cdh01机器
cd /opt
touch test.txt
xsync test.txt
# cdh01-03对应/opt目录下出现test.txt文件 完成了同步
fname=test.txt
pdir=/opt
/opt/test.txt root@cdh01:/opt
==================cdh01==================
sending incremental file list
sent 44 bytes received 12 bytes 112.00 bytes/sec
total size is 0 speedup is 0.00
/opt/test.txt root@cdh02:/opt
==================cdh02==================
sending incremental file list
test.txt
sent 87 bytes received 35 bytes 244.00 bytes/sec
total size is 0 speedup is 0.00
/opt/test.txt root@cdh03:/opt
==================cdh03==================
sending incremental file list
test.txt
sent 87 bytes received 35 bytes 244.00 bytes/sec
total size is 0 speedup is 0.00
- 集群xcall脚本
#!/bin/bash
pcount=$#
if((pcount==0));then
echo no args;
exit;
fi
for((i=1; i<=3; i++)); do
echo ----------cdh0$i---------
ssh cdh0$i $@
done
# 测试遇到问题 jps:没找到命令
# 解决一:需要在 /usr/local/bin目录下创建jps软连接
which jps
/usr/java/jdk/bin/jps
# 每台机器
ln -s /usr/java/jdk/bin/jps jps
# 解决二: 在xcall.sh中 要执行的命令前添加 source /etc/profile 加载一下配置文件
ssh cdh0$i "source /etc/profile;$@"
# 测试就ok了
- 集群服务器时钟同步
集群时钟同步方式有两种:
1. 主主:每台服务器和互联网同步
2. 主从:主服务器和互联网同步,从服务器与主服务器同步
对于HBase这种对timestamp比较敏感的组件,由于内网较外网的优势,主从方式是首选
# 所有服务器安装 ntp服务
yum install ntp -y
# 选择第一台机器 cdh01 作为主节点 进行配置
vi /etc/ntp.conf
# 添加下面内容
# 当无法访问外网时,与机器本地硬件时间同步
server 127.127.1.0 iburst local clock
# ntp服务允许哪些网段的服务器连接上来同步,配置集群网段
restrict 192.168.xxx.0 mask 255.255.255.0 nomodify notrap
# local time
server 127.127.1.0
fudge 127.127.1.0 stratum 10
# 主服务器cdh01 启动并开机自启ntp服务
systemctl start ntpd
systemctl enable ntpd
# 查看一下ntp状态
systemctl status ntpd
● ntpd.service - Network Time Service
Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)
Active: active (running) since 三 2020-12-02 20:59:22 CST; 1min 6s ago
Process: 1554 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 1555 (ntpd)
Tasks: 1
Memory: 620.0K
CGroup: /system.slice/ntpd.service
└─1555 /usr/sbin/ntpd -u ntp:ntp -g
# 查看同步情况
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
time.cloudflare 10.12.2.186 3 u 223 64 10 257.034 -19.212 1.196
*202.118.1.130 .PTP. 1 u 24 64 27 43.842 1.729 2.686
+undefined.hostn 127.67.113.92 2 u 29 64 17 287.058 -49.107 11.309
+ntp.xtom.nl 134.71.66.21 2 u 86 64 26 192.959 10.240 5.577
LOCAL(0) .LOCL. 10 l 290 64 20 0.000 0.000 0.000
# 从服务器配置
# 从服务器 关闭并禁用开机自启ntp服务 因为从要向主同步
systemctl stop ntpd
systemctl disable ntpd
# 与主服务器同步
ntpdate cdh01
2 Dec 21:07:38 ntpdate[1556]: adjust time server 192.168.xxx.xxx offset 0.021882 sec
# 设置每天定时同步
crontab -e
# 添加内容 表示每天零点零分同步
0 0 * * * /usr/sbin/ntpdate cdh01