本帖最后由 xiaozuoquan 于 2019-8-15 16:51 编辑
5.1:三台虚拟机关闭防火墙三台机器执行以下命令(root用户来执行) [AppleScript] 纯文本查看 复制代码 service iptables stop #关闭防火墙
chkconfig iptables off #禁止开机启动
5.2三台机器关闭selinux 什么是SELinux
SELinux是Linux的一种安全子系统 Linux中的权限管理是针对于文件的, 而不是针对进程的, 也就是说, 如果root启动了某个进程, 则这个进程可以操作任何一个文件 SELinux在Linux的文件权限之外, 增加了对进程的限制, 进程只能在进程允许的范围内操作资源
为什么要关闭SELinux
如果开启了SELinux, 需要做非常复杂的配置, 才能正常使用系统, 在学习阶段, 在非生产环境, 一般不使用SELinux
SELinux的工作模式
enforcing 强制模式 permissive 宽容模式 disable 关闭
# 修改selinux的配置文件
[AppleScript] 纯文本查看 复制代码 vi /etc/selinux/config 5.3 三台机器机器免密码登录 为什么要免密登录
Hadoop 节点众多, 所以一般在主节点启动从节点, 这个时候就需要程序自动在主节点登录到从节点中, 如果不能免密就每次都要输入密码, 非常麻烦
免密 SSH 登录的原理
需要先在 B节点 配置 A节点 的公钥 A节点 请求 B节点 要求登录 B节点 使用 A节点 的公钥, 加密一段随机文本 A节点 使用私钥解密, 并发回给 B节点 B节点 验证文本是否正确
第一步:三台机器生成公钥与私钥 在三台机器执行以下命令,生成公钥与私钥 [AppleScript] 纯文本查看 复制代码 ssh-keygen -t rsa 执行该命令之后,按下三个回车即可 第二步:拷贝公钥到同一台机器 三台机器将拷贝公钥到第一台机器 三台机器执行命令: [AppleScript] 纯文本查看 复制代码 ssh-copy-id node01 第三步:复制第一台机器的认证到其他机器 将第一台机器的公钥拷贝到其他机器上 在第一天机器上面指向以下命令 [AppleScript] 纯文本查看 复制代码 scp /root/.ssh/authorized_keys node02:/root/.ssh
scp /root/.ssh/authorized_keys node03:/root/.ssh
5.4三台机器时钟同步为什么需要时间同步
因为很多分布式系统是有状态的, 比如说存储一个数据, A节点 记录的时间是 1, B节点 记录的时间是 2, 就会出问题
## 安装
[AppleScript] 纯文本查看 复制代码 yum install -y ntp
## 启动定时任务
[AppleScript] 纯文本查看 复制代码 crontab -e 随后在输入界面键入 [AppleScript] 纯文本查看 复制代码 */1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com; 6:装辅助软件 6.1 每台主机安装jdk 查看自带的openjdk [AppleScript] 纯文本查看 复制代码 rpm -qa | grep java 卸载系统自带的openjdk [AppleScript] 纯文本查看 复制代码 rpm -e java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64 tzdata-java-2016j-1.el6.noarch java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64 --nodeps 上传jdk并解压然后配置环境变量 所有软件的安装路径 [AppleScript] 纯文本查看 复制代码 mkdir -p /export/servers 所有软件压缩包的存放路径 [AppleScript] 纯文本查看 复制代码 mkdir -p /export/softwares 上传jdk到/export/softwares路径下去,并解压 [AppleScript] 纯文本查看 复制代码 tar -zxvf jdk-8u141-linux-x64.tar.gz -C ../servers/ 配置环境变量
[AppleScript] 纯文本查看 复制代码 vim /etc/profile
export JAVA_HOME=/export/servers/jdk1.8.0_141
export PATH=:$JAVA_HOME/bin:$PATH
修改完成之后记得 source /etc/profile生效 7:Zookeeper7.1 Zookeeper 的概述 Zookeeper 是一个开源的分布式协调服务框架 ,主要用来解决分布式集群中 应用系统的一致性问题 Zookeeper 是 Google Chubby 思想的一个开源实现 Zookeeper 本质上是一个分布式文件系统, 适合存放小文件, 通过文件系统来实现分布式协调
分布式文件系统? 在上图左侧, Zookeeper 中存储的其实是一个又一个 Znode, Znode 是 Zookeeper 中的节点
Znode 是有路径的, 例如 /data/host1, /data/host2, 这个路径也可以理解为是 Znode 的 Name Znode 也可以携带数据, 例如说某个 Znode 的路径是 /data/host1, 其值是一个字符串 "192.168.0.1"
正因为 Znode 的特性, 所以 Zookeeper 可以对外提供出一个类似于文件系统的试图, 可以通过操作文件系统的方式操作 Zookeeper
使用路径获取 Znode 获取 Znode 携带的数据 修改 Znode 携带的数据 删除 Znode 添加 Znode 等等...
Zookeeper 是分布式的 首先呢, Zookeeper 是分为服务端和客户端的, 客户端有 Java 的客户端, 有 Shell 命令行的客户端等, 客户端通过一个类似于文件系统的 API 来访问 Zookeeper 集群 但是事实上, 客户端最终是直接访问 Zookeeper 集群, 集群中有两大类角色, 一类是 Leader, 一类是 Follower, 其实就是主从, Leader 负责读和写, Follower 只能读, 遇到会产生修改的请求会转发给 Leader 处理, 这是因为 Zookeeper 本质上就是为了在分布式环境中对消息的一致性的支持, 而 Zookeeper 所基于的 ZAB 协议是 Paxos 协议的一个变种, ZAB 协议中是有一个全局的事务生成者, 就是 Leader, 修改设计到在分布式环境下对事务达成一致, 必须由 Leader 发起 举个例子? 比如说一个常见的分布式主从系统, 如果有 ZK 在的话, 主节点不需要和每个从节点保持连接, 只需要监听从节点创建的 Znode, 便可以知道谁在线 Zookeeper 能做什么? 7.2 Zookeeper安装[td] 服务器IP | 主机名 | myid的值 | 192.168.174.100 | node01 | 1 | 192.168.174.110 | node02 | 2 | 192.168.174.120 | node03 | 3 |
第一步:下载zookeeeper的压缩包,下载网址如下 http://archive.apache.org/dist/zookeeper/ 我们在这个网址下载我们使用的zk版本为3.4.9 下载完成之后,上传到我们的linux的/export/softwares路径下准备进行安装 第二步:解压 解压zookeeper的压缩包到/export/servers路径下去,然后准备进行安装 [AppleScript] 纯文本查看 复制代码 cd /export/software
tar -zxvf zookeeper-3.4.9.tar.gz -C ../servers/
第三步:修改配置文件 第一台机器修改配置文件 [AppleScript] 纯文本查看 复制代码 cd /export/servers/zookeeper-3.4.9/conf/
cp zoo_sample.cfg zoo.cfg
mkdir -p /export/servers/zookeeper-3.4.9/zkdatas/
vim zoo.cfg
dataDir=/export/servers/zookeeper-3.4.9/zkdatas
# 保留多少个快照
autopurge.snapRetainCount=3
# 日志多少小时清理一次
autopurge.purgeInterval=1
# 集群中服务器地址
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888 第四步:添加myid配置 在第一台机器的 /export/servers/zookeeper-3.4.9/zkdatas /这个路径下创建一个文件,文件名为myid ,文件内容为1 [AppleScript] 纯文本查看 复制代码 echo 1 > /export/servers/zookeeper-3.4.9/zkdatas/myid 第五步:安装包分发并修改myid的值 安装包分发到其他机器 第一台机器上面执行以下两个命令 [AppleScript] 纯文本查看 复制代码 scp -r /export/servers/zookeeper-3.4.9/ node02:/export/servers/
scp -r /export/servers/zookeeper-3.4.9/ node03:/export/servers/ 第二台机器上修改myid的值为2 [AppleScript] 纯文本查看 复制代码 echo 2 > /export/servers/zookeeper-3.4.9/zkdatas/myid 第三台机器上修改myid的值为3 [AppleScript] 纯文本查看 复制代码 echo 3 > /export/servers/zookeeper-3.4.9/zkdatas/myid 第六步:三台机器启动zookeeper服务 三台机器启动zookeeper服务 这个命令三台机器都要执行 [AppleScript] 纯文本查看 复制代码 /export/servers/zookeeper-3.4.9/bin/zkServer.sh start 查看启动状态 [AppleScript] 纯文本查看 复制代码 /export/servers/zookeeper-3.4.9/bin/zkServer.sh status
|