写点什么

大数据集群的部署实例

作者:TiAmo
  • 2023-04-28
    江苏
  • 本文字数:5420 字

    阅读完需:约 18 分钟

大数据集群的部署实例

集群可以提高系统性能、提高可用性和增强灵活性,能很好完成复杂的任务。本篇重点介绍 CentOS 集群系统及部署,以及 SSH 安全登录及配置。


01、集群规划


为了简化操作,使用三台服务器作为集群节点,其中一台为 Master 节点,两台为 Slave 节点。集群节点 IP 规划如下:

master:172.30.0.10slave1:172.30.0.11slave2:172.30.0.12netmask: 255.255.255.0gateway:172.30.0.254
复制代码


02、网络配置


对集群节点进行网络配置,以 master 节点为例。


(1)设置主机名,操作如下:

# hostnamectl set-hostname master或者# vi /etc/hostnamemaster
复制代码

(2)修改/etc/hosts 文件,操作如下:

# vi /etc/hosts添加内容:172.30.0.10 master172.30.0.11 slave1172.30.0.12 slave2
复制代码

(3)修改网络配置,操作如下:

# vi /etc/sysconfig/network-scripts/ifcfg-ens33添加修改内容:TYPE=EthernetBOOTPROTO=noneNAME=ens33DEVICE=ens33ONBOOT=yesIPADDR=172.30.0.10PREFIX=24GATEWAY=172.30.0.254DNS1=202.96.128.86DNS2=202.96.134.133
复制代码

(4)重启网络,并查看网络 IP 地址,操作如下:

# systemctl restart network# ifconfig -a或者# ip addr
复制代码

(5)关闭并停止 NetworkManager 服务,操作如下:

# systemctl disable NetworkManager# systemctl stop NetworkManager
复制代码

NetworkManager 是用于便携式计算机和其他可移动计算机的理想解决方案。可自动连接到已知无线网络或并行管理多个网络连接,然后将最快的连接用作默认连接,还可以手动在可用网络之间切换,并使用系统盘中的小程序管理网络连接。NetworkManager 在 Hadoop 环境下不适用,需要关闭。


03、安全配置


作为一个开放源代码的操作系统,Linux 服务器以其安全、高效和稳定的显著优势而得以广泛应用,最重要的安全模块有 SELinux 和 iptables 或 firewalld。


SELinux(Security-Enhanced Linux)是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux 历史上最杰出的新安全子系统,SELinux 共有 3 个状态 enforcing (执行中)、permissive (不执行但产生警告)、disabled(关闭)。


Iptables 是与 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。防火墙在做信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信 息包过滤表中,而这些表集成在 Linux 内核中。


Centos7 中默认将原来的防火墙 iptables 升级为了 firewalld。防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。


为了便于学习,我们会关闭这些安全配置,设置一些安全选项。


(1)安全密码控制,操作如下:

# vi /etc/login.defs //适应于新建的用户修改内容:PASS_MAX_DAYS 30              //密码最多使用30天,必须更改密码PASS_MIN_DAYS 0               //密码最少使用0天,才能更改密码PASS_MIN_LEN 5               //可接受的密码长度 PASS_WARN_AGE 7               //密码到期前的警告时间# chage -M 30 用户名 //适用于以存在的用户,密码30天过期# chage -d 0 用户名 //下次登录时,必须更改密码
复制代码

为了降低密码被猜出或暴力破解的风险,应避免长期使用同一个密码。管理员可以在服务器端限制用户密码使用最大有效期天数,对密码已过期的用户,登录时要求重新设置密码,否则拒绝登录。


(2)设置历史记录、退出自动清空历史记录等,操作如下:

# vi /etc/profile添加内容:export HISTSIZE=5             //历史记录限制为5条# vi ~/.bash_logout添加内容:history -c //清空历史记录
复制代码

(3)设置闲置超时时间,操作如下:

# vi /etc/profile添加内容export TMOUT=600              //用户将在10分钟无操作后自动注销
复制代码

(4)设置 SElinux,操作如下:

# vi /etc/selinux/config修改内容:SELINUX=permissive# setenforce permissive# getenforce
复制代码

(5)设置并停止 firewalld 服务,操作如下:

# systemctl disable firewalld# systemctl stop firewalld
复制代码


04、时间同步


网络时间协议(NTP,Network Time Protocol)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS 等等)做同步化,它可以提供高精准度的时间校正,且可由加密确认的方式来防止恶毒的协议攻击。NTP 的目的是在无序的 Internet 环境中提供精确和健壮的时间服务。


NTP 提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间 UTC。NTP 获得 UTC 的时间来源可以是原子钟、天文台、卫星,也可以从 Internet 上获取。这样就有了准确而可靠的时间源。时间按 NTP 服务器的等级传播。按照离外部 UTC 源的远近将所有服务器归入不同的 Stratum(层)中。Stratum-1 在顶层,有外部 UTC 接入,而 Stratum-2 则从 Stratum-1 获取时间,Stratum-3 从 Stratum-2 获取时间,以此类推,但 Stratum 层的总数限制在 15 以内。所有这些服务器在逻辑上形成阶梯式的架构相互连接,而 Stratum-1 的时间服务器是整个系统的基础。计算机主机一般同多个时间服务器连接,利用统计学的算法过滤来自不同服务器的时间,以选择最佳的路径和来源来校正主机时间。即使主机在长时间无法与某一时间服务器相联系的情况下,NTP 服务依然有效运转。为防止对时间服务器的恶意破坏,NTP 使用了识别(Authentication)机制,检查来对时的信息是否是真正来自所宣称的服务器并检查资料的返回路径,以提供对抗干扰的保护机制。NTP 时间同步报文中包含的时间是格林威治时间,是从 1900 年开始计算的秒数。


Chrony 是一个开源的自由软件,它能帮助你保持系统时钟与时钟服务器同步,因此让你的时间保持精确。它由两个程序组成,分别是 chronyd 和 chronyc。chronyd 是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步,它确定计算机增减时间的比率,并对此进行补偿。chronyc 提供了一个用户界面,用于监控性能并进行多样化的配置,它可以在 chronyd 实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。


服务器之间的时间需要同步,但并不是所有机器可以直接连外网,这时可以用 Chrony 工具解决。解决方法是将其中一台设为时间服务器,然后其它服务器和这台时间服务器同步即可。


(1)Master 节点时间同步安装设置,操作如下:

[root@master ~]# yum install chrony[root@master ~]# vi /etc/chrony.conf添加修改内容:local stratum 10allow 172.30.0.0/24
复制代码

(2)Slave 节点时间同步安装设置,操作如下:

[root@slave ~]# yum install chrony[root@slave ~]# vi /etc/chrony.conf添加修改内容:# server 0.centos.pool.ntp.org iburst# server 1.centos.pool.ntp.org iburst# server 2.centos.pool.ntp.org iburst# server 3.centos.pool.ntp.org iburstserver master iburst
复制代码

(3)设置自动加载并重启 chrony 服务,操作如下:

# systemctl enable chronyd.service# systemctl restart chronyd.service
复制代码

(4)查看 master 节点时间同步信息,操作如下:

[root@master ~]# chronyc sources210 Number of sources = 4MS Name/IP address Stratum Poll Reach LastRx Last sample ===========================================================================^* 85.199.214.100            1   6   377     3  +4577us[ +10ms] +/- 154ms^+ static-5-103-139-163.ip.> 1   6   377    10    +43ms[ +49ms] +/- 186ms^+ ntp.wdc1.us.leaseweb.net 2   6    33    13    -14ms[-8522us] +/- 352ms^- gus.buptnet.edu.cn 5   6   167    72  -3955us[+1588us] +/- 371ms
复制代码

(5)查看 slaver 节点时间同步信息,操作如下:

[root@slave ~]# chronyc sources210 Number of sources = 1MS Name/IP address Stratum Poll Reach LastRx Last sample ===========================================================================^* master 2   6   377    42  -6960us[ -30ms] +/- 127ms
复制代码


05、SSH 登录


SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定。SSH 为建立在应用层基础上的安全协议,SSH 也是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH 最初是 UNIX 系统上的一个程序,后来又迅速扩展到其他操作平台。SSH 在正确使用时可弥补网络中的漏洞。SSH 客户端适用于多种平台,几乎所有 UNIX 平台—包括 HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行 SSH。


从客户端来看,SSH 提供两种级别的安全验证。


第一种级别:基于口令的安全验证


只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。


第二种级别:基于密匙的安全验证


需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到 SSH 服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。这种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是几乎不可能。


SSH 主要由三部分组成:


传输层协议(SSH-TRANS):提供了服务器认证,保密性及完整性。此外它有时还提供压缩功能。SSH-TRANS 通常运行在 TCP/IP 连接上,也可能用于其它可靠数据流上。SSH-TRANS 提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机,并且该协议不执行用户认证。更高层的用户认证协议可以设计为在此协议之上。


用户认证协议(SSH-USERAUTH):用于向服务器提供客户端用户鉴别功能。它运行在传输层协议 SSH-TRANS 上面。当 SSH-USERAUTH 开始后,它从低层协议那里接收会话标识符(从第一次密钥交换中的交换哈希 H )。会话标识符唯一标识此会话并且适用于标记以证明私钥的所有权。SSH-USERAUTH 也需要知道低层协议是否提供保密性保护。


连接协议(SSH-CONNECT):将多个加密隧道分成逻辑通道,它运行在用户认证协议上。它提供了交互式登录话路、远程命令执行、转发 TCP/IP 连接和转发 X11 连接。


SSH 是由客户端和服务端的软件组成的,服务端是一个守护进程(daemon),它在后台运行并响应来自客户端的连接请求。服务端一般是 sshd 进程,提供了对远程连接的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接。


客户端包含 ssh 程序以及像 scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。


Hadoop 系统需要使用基于密匙的安全验证的 SSH 登录,master 节点需要自动登录 slave 节点,按下面步骤进行安装配置。


(1)安装 openssh,开启 sshd 服务,操作如下:

# yum install openssh# systemctl enable sshd.service# systemctl start sshd.service
复制代码

(2)以 root 用户登录 master 节点,生成 SSH 密钥对,操作如下:

[root@master ~]# ssh-keygen -t dsa Generating public/private dsa key pair.Enter file in which to save the key (/root/.ssh/id_dsa): 按回车Created directory '/root/.ssh'. 按回车Enter passphrase (empty for no passphrase): 按回车Enter same passphrase again: 按回车Your identification has been saved in /root/.ssh/id_dsa.Your public key has been saved in /root/.ssh/id_dsa.pub.The key fingerprint is:26:f3:cb:a9:8b:e9:7c:ed:a3:93:20:26:14:ef:99:26 root@masterThe key's randomart image is:+--[ DSA 1024]----+| || . || o || . . ||. . o o S ||.Eo=. = || oo. . o. || . o+.oo || .=.+*=. |+-----------------+
复制代码

ssh-keygen 加密方式选为 rsa 和 dsa,默认 dsa,分别生成含有公用密钥和私用密钥的文件,存放在用户目录的~/.ssh 下。


(3)把含有公用密钥信息的文件复制到节点机上,操作如下:

[root@master ~]# ssh-copy-id -i ~/.ssh/id_dsa.pub master[root@master ~]# ssh-copy-id -i ~/.ssh/id_dsa.pub slave1[root@master ~]# ssh-copy-id -i ~/.ssh/id_dsa.pub slave2
复制代码

ssh-copy-id 自动把 id_dsa.pub 中的公用密钥信息添加到 slave 节点对应用户的~/.ssh/目录下的 authorized_keys 文件中。


(4)使用 SSH 登录节点机,测试如下:

[root@master ~]# ssh master[root@master ~]# exit登出Connection to master closed.[root@master ~]# ssh slave1[root@slave1 ~]# exit登出Connection to slave1 closed.[root@master ~]# ssh slave2[root@slave2 ~]# exit登出Connection to slave2 closed.
复制代码


06、小结


集群可以提高系统性能、提高可用性和增强灵活性,能很好完成复杂的任务。本章首先介绍了集群系统的概念、分类、目的,然后简述了集群相关的技术基础:Linux 操作系统、计算机虚拟化技术以及常见的虚拟化软件,接着分析了数据集群技术的架构,最后重点介绍 CentOS 集群系统及部署,以及 SSH 安全登录及配置。

发布于: 刚刚阅读数: 3
用户头像

TiAmo

关注

有能力爱自己,有余力爱别人! 2022-06-16 加入

CSDN全栈领域优质创作者,万粉博主;阿里云专家博主、星级博主、技术博主、阿里云问答官,阿里云MVP;华为云享专家;华为Iot专家;亚马逊人工智能自动驾驶(大众组)吉尼斯世界纪录获得者

评论

发布
暂无评论
大数据集群的部署实例_大数据_TiAmo_InfoQ写作社区