本文要点
1、服务器集群环境搭建 2、了解shell编程
内容大纲
#linux集群环境搭建 集群、分布式---->多台机器 虚拟机克隆 服务器基础环境准备 1、防火墙关闭 2、主机名hostname修改 3、hosts主机名 IP映射 4、ssh免密登录 5、扩展:跳板机、堡垒机 6、集群时间同步 7、scp 跨集群复制文件 #Linux软件安装 rpm包 yum安装软件 #软件安装 JDK # shell编程
一、大数据集群环境搭建
1.1、分布式、集群概念初识
分布式:多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。
集群:多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。
分布式、集群
- 共同点:多台机器。 相对的概念叫做单机系统。
- 注意:在口语中经常混淆分布式和集群的概念的。都是汲取两者的共同点。
比如:搭建一个分布式hadoop集群。 背后意思:不要搭建单机版本的 搭建多台机器版本的。
集群架构
- 主从架构
主角色:master leader 大哥 从角色:slave follower 小弟 主从角色各司其职,需要共同配合对外提供服务。 常见的是一主多从 也就是一个大哥带着一群小弟共同干活。
主备架构
主角色:active 备角色:standby 主备架构主要是解决单点故障问题的 保证业务的持续可用。 常见的是一主一备 也可以一主多备。
1.2、集群环境搭建
1.2.1、虚拟机克隆
- 前提:是虚拟机处于关闭状态。
- 分类:链接克隆 、完整克隆
链接克隆:表层是互相独立 底层存储是交织在一起; 完整克隆:完全互相独立的两台虚拟机
修改克隆机器属性。
完整克隆意味着两台机器一模一样。在局域网网络中,有些属性是决定不能一样的。 比如:IP、MAC、主机名hostname
3台虚拟机硬件分配 16G
node1 2*2cpu 4G内存 node2 1*1cpu 2G内存 node3 1*1cpu 2G内存
1.2.2、修改IP、主机名
- 命令修改 临时生效 重启无效
- 修改底层配置文件 永久生效 重启才能生效。
vim /etc/hostname node2.itcast.cn
#修改IP vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE="Ethernet" #网卡类型 以太网 PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="none" #ip等信息是如何决定的? dhcp动态分配、 static|node 手动静态分配 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="62982d98-441d-43ef-8e56-73aa36ab6f07" DEVICE="ens33" ONBOOT="yes" #是否开机启动网卡服务 IPADDR="192.168.88.152" #IP地址 PREFIX="24" #子网掩码 等效: NETMASK=255.255.255.0 GATEWAY="192.168.88.1" #网关服务 DNS1="192.168.88.1" #网关DNS解析 DOMAIN="114.114.114.114" #公网DNS解析 114.114.114.114 谷歌:8.8.8.8 阿里百度DNS IPV6_PRIVACY="no #修改主机名hostname node2.itcast.cn
- 重启linxu系统 reboot
1.2.3、主机名和IP映射配置
- 背景
在网络中,很少直接通过IP访问机器,原因难记。 通常使用主机名或者域名访问。 此时就会涉及到主机名域名和IP之间的解析
实现
- 本地hosts文件 进行本地查找解析
localhost 127.0.0.1
- 寻找DNS服务器 域名解析服务
- 配置本地hosts文件实现
- linux上
vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.88.151 node1.itcast.cn node1 192.168.88.152 node2.itcast.cn node2 192.168.88.153 node3.itcast.cn node3
windows上
C:\Windows\System32\drivers\etc\hosts 192.168.88.151 node1.itcast.cn node1 192.168.88.152 node2.itcast.cn node2 192.168.88.153 node3.itcast.cn node3
1.2.4、防火墙关闭
- firewalld
#查看防火墙状态 systemctl status firewalld #关闭防火墙 systemctl stop firewalld #关闭防火墙开机自启动 systemctl disable firewalld #centos服务开启关闭命令 centos6:(某些可以在centos7下使用) service 服务名 start|stop|status|restart chkconfig on|off 服务名 centos7: systemctl start|stop|status|restart 服务名 systemctl disable|enable 服务名 #开机自启动 关闭自启
selinux
vim /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled
- 需要重启生效
1.2.5、集群机器间免密登录
- 背景
#在进行集群操作的时候 需要从一台机器ssh登录到其他机器进行操作 默认情况下需要密码 [root@node1 ~]# ssh node2 The authenticity of host 'node2 (192.168.88.152)' can't be established. ECDSA key fingerprint is SHA256:kTth0zkiMakFp9O0B8v0GHnpQy86+YfpHqAX4Cxb/hk. ECDSA key fingerprint is MD5:b2:74:4f:b3:a0:b4:7e:a1:3d:50:c4:55:8b:3b:78:cb. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'node2,192.168.88.152' (ECDSA) to the list of known hosts. root@node2's password: Last login: Sun Jan 29 17:00:02 2023 from 192.168.88.8 [root@node2 ~]# exit logout Connection to node2 closed.
- 需求:能否实现免密ssh登录。
- 技术:SSH方式2:免密登录功能。
#实现node1----->node2 #step1 在node1生成公钥私钥 ssh-keygen 一顿回车 在当前用户的home下生成公钥私钥 隐藏文件 [root@node1 .ssh]# pwd /root/.ssh [root@node1 .ssh]# ll total 12 -rw------- 1 root root 1679 Jan 29 17:12 id_rsa -rw-r--r-- 1 root root 402 Jan 29 17:12 id_rsa.pub -rw-r--r-- 1 root root 182 Jan 29 17:05 known_hosts #step2 copy公钥给node2 ssh-copy-id node2 注意第一次需要密码 #step3 [root@node1 .ssh]# ssh node2 Last login: Sun Jan 29 17:06:00 2023 from node1.itcast.cn [root@node2 ~]# exit logout Connection to node2 closed.
要求
#至少打通node1---->node1 node2 node3 这三个免密登录 #至于所有机器之间要不要互相免密登录 看你心情
- 扩展:跳板机、堡垒机
作为局域网连接外网的机子,同时也承载着全部的防护压力像堡垒一样。
1.2.6、跨机器远程copy文件
- 背景:linux上copy文件 cp
- 命令:scp 基于ssh协议跨网络cp动作
- 注意事项,没有配置ssh免密登录也可以进行scp远程复制 只不过在复制的时候需要输入密码。
- 例子
#本地copy其他机器 scp test.txt root@node2:/root/ scp -r linux02/ root@node2:$PWD #copy文件夹 -r参数 $PWD copy至和本机相同当前路径 #为什么不需要输入密码 因为配置了机器之间的免密登录 如果没有配置 scp的时候就需要输入密码 #copy其他机器文件到本地 scp root@node2:/root/test2.txt ./
1.2.7、集群的时间同步问题
- 背景:分布式软件主从角色之间通常基于心跳时间差来判断角色工作是否正常。
- 国家授时中心 北京时间
- 授时服务器 国家级 企业级 院校级
- linux
- ntp 网络时间协议 实现基于网络授时同步时间。
- date
查看当前的系统时间 也可以手动指定设置时间 不精准 [root@node1 ~]# date Sun Jan 29 18:28:44 CST 2023
ntpdate
#ntpdate 授时服务器 ntpdate ntp5.aliyun.com [root@node1 ~]# ntpdate ntp5.aliyun.com 29 Jan 18:29:09 ntpdate[2016]: adjust time server 203.107.6.88 offset -0.030927 sec #企业中运维往往不喜欢ntpdate 原因是这个命令同步时间是立即的。不是平滑过渡的。
ntp软件
通过配置 平滑的和授时服务器进行时间的同步(运维)