三台虚拟机的网络信息预设
centos701(hostname) 192.168.2.123(IP) 192.168.2.1(网关)
centos702(hostname) 192.168.2.124(IP) 192.168.2.1(网关)
centos703(hostname) 192.168.2.125(IP) 192.168.2.1(网关)
虚拟机集群网络环境配置
1、在windows中配置VMware Network Adapter VMnet8的网关
2、编辑虚拟机网络编辑器
设置网关、子网、起始IP和结束IP地址
3、配置CentOS网卡信息
# 查看网卡信息
[root@centos701 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.123 netmask 255.255.255.0 broadcast 192.168.2.255
inet6 fe80::20c:29ff:fe86:5f95 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:86:5f:95 txqueuelen 1000 (Ethernet)
...
# 配置网卡ens33
[root@centos701 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static # 修改
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=68163d8e-06e4-43dc-9992-c4476a0febb3
DEVICE=ens33
ONBOOT=yes # 修改
IPADDR=192.168.2.123 # 修改
NETMASK=255.255.255.0 # 修改
GATEWAY=192.168.2.1 # 修改
DNS1=114.114.114.114 # 修改
DNS2=8.8.8.8 # 修改
# 重启网络服务
[root@centos701 ~]# systemctl restart network
4、配置主机名
[root@centos701 ~]# vi /etc/hostname
centos701
# 查看主机名
[root@centos701 ~]# hostname
5、配置主机名映射IP地址
windows中也要添加地址映射 ( IP地址前空一格生效)
C:WindowsSystem32driversetchosts
[root@centos701 ~]# vi /etc/hosts
192.168.2.123 centos701
192.168.2.124 centos702
192.168.2.125 centos703
6、配置网络服务
[root@centos701 ~]# vi /etc/resolv.conf
nameserver 114.114.114.114
nameserver 8.8.8.8
# 重启网络服务
[root@centos701 ~]# systemctl restart network
7、关闭防火墙 (windows防火墙也要关闭,不然不能从windows访问虚拟机)
# 查看防火墙状态
[root@centos701 ~]# firewall-cmd --state
# 停止防火墙
[root@centos701 ~]# systemctl stop firewalld.service
# 禁止firewall开机启动
[root@centos701 ~]# systemctl disable firewalld.service
8、安装JDK
# 新建目录
mkdir /usr/java
# 上传tar压缩包至 /usr/java中并解压
tar zxvf jdk-8u152-linux-x64.tar.gz
# 编辑配置文件,并添加一下配置信息
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_152
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
# 使配置文件生效
source /etc/profile
# 查看java版本
java -version
9、克隆两个完整的虚拟机 centos702和 centos703
克隆完成后做以下事情
- 适当降低两个虚拟机的内存
- 修改两台虚拟的
IP
并删除UUID
(硬件地址ID删除后自动生成且唯一)- vi /etc/sysconfig/network-scripts/ifcfg-ens33
- 修改主机名
- vi /etc/hostname
SSH免秘钥登录
生成公钥和私钥,私钥留给本机,公钥发给其他主机
centos701(其他两台按照此方法操作)
-
生成密钥:ssh-keygen -t rsa (一直回车)
- 密钥存放位置:/root/.ssh
- id_rsa:私钥
- id_rsa.pub:公钥
-
发送私钥(本机): ssh-copy-id localhost , 需要输入centos701节点(root)的密码
-
发送公钥(702/703):ssh-copy-id centos702/centos703, 需要输入centos702节点(root)的密码
测试免秘钥登录centos702
ssh centos702
scp的使用
rsync的使用
推文件:
rsync -av /tmp/test.txt 192.168.2.123:/tmp/test.txt
拉文件
rsync -av 192.168.2.123:/tmp/test.txt /tmp/test.txt
指定ssh端口
rsync -av -e "ssh -p 22" 192.168.2.123:/tmp/a.txt /tmp/a.txt
xsync集群分发脚本
basename:获取路径下文件名称
[root@CentOS01 bin]# basename /opt/module/kafka/config/consumer.properties consumer.properties
dirname:获取绝对路径信息
[root@CentOS01 bin]# dirname /opt/module/kafka/config/consumer.properties /opt/module/kafka/config
1、创建群发脚本文件xsync
touch /usr/local/bin/xsync
2、配置群发脚本
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=2; host<4; host++)); do
echo ------------------- centos70$host --------------
rsync -rvl $pdir/$fname $user@centos70$host:$pdir
done
修改脚本 xsync 具有执行权限
chmod a+x xsync
使用群发
# 直接发送此文件到centos702和centos03对应的目录中
xsync xxx.x