集群环境
安装虚拟机 --安装步骤建安装文档下的centos7安装
克隆出3台虚拟机
配置IP
配置Mac地址    node2和node3都是从node1克隆过来的,他们的MAC地址都一样,所以需要让node2和node3重新生成MAC地址,生成方式如下:
    点击node2 ->点击设置-->点击网络配置器-->点击高级-->在出现的小弹窗中-->点击生成-->点击确定
    node3的Mac地址配置和node2一样
配置IP地址
    三台虚拟机的IP配置如下
    node1: 192.168.88.161
    node2: 192.168.88.162
    node3: 192.168.88.163
    1.修改IP配置文件
    vim /etc/sysconfig/network-scripts/ifcfg-ens33  #注意ifcfg-e 直接按tab补全不一定是ifcfg-ens33
    2.修改参数
        #注释掉原来的 下面的一行表示静态IP,IP地址不会再变
        BOOTPROTO = static
        #下面的一行也要注释原来的表示默认开启网络
        ONBOOT="yes"
        #下面的一行需要添加表示主机的IP地址
        IPADDR="192.168.88.162"
        #下面的一行也需要添加表示默认网关
        GATEWAY="192.168.88.1"
        #下面的一行也需要添加表示DNS
        DNS1="8.8.8.8"
    3.重启网卡
        systemctl restart network
    4.查看主机IP
        ifconfig
    5.ping 网络是否通畅
        ping www.baidu.com
设置主机名
    1.分别编辑每台虚拟机的hostname文件,直接填写主机名,保存退出即可
        第一台主机主机名为:node1
        第二台主机主机名为:node2
        第三台主机主机名为:node3
    vim /etc/hostname
    填入
    node1
    :wq
    第二台第三台分别填入node2,node3
设置主机映射
    1.分别编辑每台虚拟机的hosts文件,在原有内容的基础上,填下以下内容:
    注意:不要修改文件原来的内容,三台虚拟机的配置内容都一样。
    vim /etc/hosts
    #在原来文件的下方填入不要改
    192.168.88.161 node1 
    192.168.88.162 node2
    192.168.88.163 node3
关闭每台虚拟机的防火墙
    systemctl stop firewalld.service          #停止firewall
    systemctl disable firewalld.service       #禁止firewall开机启动
    systemctl status firewalld.service          #关闭之后,查看防火墙状态
    前面的小圆点成黑色的 第三行Active:inactive(dead)说明已经关闭
关闭每台虚拟机的Selinux
    1.什么是SELinux ?
        1.SELinux是Linux的一种安全子系统
        2.Linux中的权限管理是针对于文件的, 而不是针对进程的, 也就是说, 如果root启动了某个进程,  则这个进程可以操作任何一个文件。
        3.SELinux在Linux的文件权限之外, 增加了对进程的限制, 进程只能在进程允许的范围内操作资源
    2.为什么要关闭SELinux
        如果开启了SELinux, 需要做非常复杂的配置, 才能正常使用系统, 在学习阶段, 在非生产环境, 一般不使用SELinux
    3.SELinux的工作模式:
        enforcing 强制模式
        permissive 宽容模式
        disabled 关闭
    4.关闭SELinux方式
        1.编辑每台虚拟机的Selinux的配置文件

    vim /etc/selinux/config 
    把SELINUX=enforcing
    改成 SELinux=disabled
    保存退出即可
    5.分别重启三台虚拟机
    reboot
    
三台机器机器免密码登录
    为什么要免密登录
        Hadoop 节点众多, 所以一般在主节点启动从节点, 这个时候就需要程序自动在主节点登录到从节点中, 如果不能免密就每次都要输入密码, 非常麻烦。
   下图解释免密登录的原理

 

 

    如何操作
      三台机器机执行以下命令,生成公钥与私钥
      ssh-keygen -t rsa
      执行该命令 按三下回车就会产生公钥和私钥
      默认保存在 /root/.ssh目录下
    

 

 

  拷贝公钥到同一台机器
    三台机器将拷贝公钥到第一台机器
    三台机器都执行命令:
    ssh-copy-id node1
  复制第一台机器的认证到其他机器
    将第一台机器的公钥拷贝到其他机器上
    在第一台机器上指行以下命令
    scp /root/.ssh/authorized_keys node2:/root/.ssh
    scp /root/.ssh/authorized_keys node3:/root/.ssh
  测试SSH免密登录
    可以在任何一台主机上通过ssh 主机名命令去远程登录到该主机,输入exit退出登录
    例如:在node1机器上,免密登录到node2机器上
    ssh node2
    exit

 

 

三台机器时钟同步
    为什么需要时间同步
        因为很多分布式系统是有状态的, 比如说存储一个数据, A节点 记录的时间是1, B节点 记录的时间是2, 就会出问题
    时钟同步方式
    方式一:通过网络进行时钟同步
        1.启动定时任务
        crontab -e
        随后在输入界面键入以下内容,每隔一分钟就去连接阿里云时间同步服务器,进行时钟同步
        */1 * * * * /usr/sbin/ntpdate -u ntp4.aliyun.com;

    方式二:通过某一台机器进行同步
        第一步:在node1虚拟机安装ntp并启动
            安装ntp服务
            yum -y install ntp
            启动ntp服务
            systemctl start  ntpd 
            设置ntpd的服务开机启动
            #关闭chrony,Chrony是NTP的另一种实现
            systemctl disable chrony 
            #设置ntp服务为开机启动
            systemctl enable ntpd
        第二步:编辑node1的/etc/ntp.conf文件
            # 同步的节点 node1
            vim /etc/ntp.conf 
            restrict  192.168.88.0  mask  255.255.255.0  nomodify  notrap
            ## 去掉以下内容的注释,如果没有这两行注释,那就自己添加上(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
            #server  0.centos.pool.ntp.org
            #server  1.centos.pool.ntp.org
            #server  2.centos.pool.ntp.org
            #server  3.centos.pool.ntp.org
            server   127.127.1.0 
            fudge    127.127.1.0  stratum  10
        第三步:配置以下内容,保证BIOS与系统时间同步
            # 保证BIOS和系统同步
            vim /etc/sysconfig/ntpd
            # 添加一行 设置的同步时钟
            SYNC_HWLOCK=yes
            # 配置完,重启服务
            systemctl restart ntpd
        第四部:配置另外两台机器  node2 和  node3
            crontab -e
            */1 * * * * /usr/sbin/ntpdate 192.168.88.161

安装jdk见安装文档centos7jdk的安装

zookeeper 的集群搭建

下载zookeeper的压缩文件
    1.下载指定的zookeeper 版本的压缩包
    http://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
    2.对压缩文件解压到指定的文件目录
        mkdir -p export/server/
        tar -zxvf zookeeper-3.4.6.tar.gz -C /export/server/
    3.修改配置文件
        cd /export/server/zookeeper-3.4.6/conf/
        cp zoo_sample.cfg zoo.cfg
        vim zoo.cfg
        
        #集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)
        tickTime=2000
        #集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)
        initLimit=10
        #发送到响应的最大线程数
        syncLimit=5
        #Zookeeper的数据存放目录
        dataDir=/export/server/zookeeper-3.4.6/zkdatas
        #客户端将连接的端口
        clientPort=2181
        # 保留多少个快照
        autopurge.snapRetainCount=3
        # 日志多少小时清理一次
        autopurge.purgeInterval=1
        # 集群中服务器地址
        server.1=node1:2888:3888
        server.2=node2:2888:3888
        server.3=node3:2888:3888
    4.第四步:添加myid配置
        在node1主机的/export/server/zookeeper-3.4.6/zkdatas/这个路径下创建一个文件,文件名为myid ,文件内容为1
        mkdir -p /export/server/zookeeper-3.4.6/zkdatas/
        echo 1 > /export/servers/zookeeper-3.4.6/zkdatas/myid 
    5.分发zookeeper及设置myid的值
        #分发zookeeper安装包到node2 node3节点上
        scp -r  /export/servers/zookeeper-3.4.6/ node2:/export/servers/
        scp -r  /export/servers/zookeeper-3.4.6/ node3:/export/servers/
        [root@node2 ~]# echo "2" > /export/server/zookeeper-3.4.6/zkdatas/myid
        [root@node3 ~]# echo "3" > /export/server/zookeeper-3.4.6/zkdatas/myid    
    6.配置全局环境遍历
        # 配置全局的环境遍历
        vim /etc/profile
        export ZOOKEEPER_HOME=/export/server/zookeeper-3.4.6
        export PATH=$PATH:${JAVA_PATH}:${MYSQL_HOME}/bin:${ZOOKEEPER_HOME}/bin
        # 立即生效
        source /etc/profile

 

posted on 2021-02-04 17:55  王平  阅读(58)  评论(0)    收藏  举报