Linux主机安装部署


前言

本文使用三台主机部署Linux集群,IP地址如下:

主机名IP地址
bigdata01192.168.0.84
bigdata02192.168.0.85
bigdata03192.168.0.86

一、安装Linux操作系统

  1. 选择时区:Asia/Shanghai
  2. 最小化安装:勾选 Development Tools & System Administration Tools
  3. 自定义磁盘分区
挂载目录磁盘划分LVM
/boot1G
bisboot1G
/10Grootvg、rootlv
/usr10Gusrlv
/var10Gvarlv
/opt10Goptlv
/home10Ghomelv
/tmp10Gtmplv
swap10Gswaplv
  1. 设置主机名和IP地址
  2. 设置用户密码:root/root、user01/user01

二、VMware设置

1.网络编辑器

1.1.NET模式

虚拟机和主机组成子网,原主机局域网中的其他主机无法访问该虚拟机。
Windows 的 VM net8 的 IP 和网关设为: 192.168.xxx.1 和 192.168.xxx.2。
在这里插入图片描述
虚拟网络编辑器 net8 的子网 IP 和网关设为: 192.168.xxx.0 和 192.168.xxx.2。
在这里插入图片描述
虚拟机的网络设为同段的 192.168.xxx.0、192.168.xxx.1、192.168.xxx.2 以外的地址。

1.2.桥接模式

虚拟机加入主机所在局域网,原主机局域网中的其他主机可访问该虚拟机。

三、操作系统环境调整

1.关闭防火墙和selinux

# 永久关闭防火墙
[root@bigdata01 ~]$ systemctl disable --now firewalld

# 永久关闭SELinux
[root@bigdata01 ~]$ sed -i 's/=enforcing/=disabled/' /etc/selinux/config
[root@bigdata01 ~]$ setenforce 0

2.关闭NetworkManager

[root@bigdata01 ~]$ systemctl disable --now NetworkManager

3.修改网络 IP 地址

[root@bigdata01 ~]$ vi /etc/sysconfig/network-scripts/ifcfg-ens192
BOOTPROTO=none
ONBOOT=yes
IPADDR="192.168.0.84"
PREFIX="24"
GATEWAY="192.168.0.1"


[root@bigdata01 ~]$ ststemctl restart network

4.设置DNS

[root@bigdata01 ~]$ cat >> /etc/resolv.conf << EOF
nameserver 223.5.5.5
EOF

5.设置主机名

[root@bigdata01 ~]$ cat > /etc/hostname << EOF
bigdata01
EOF

# 或者
[root@bigdata01 ~]$ hostnamectl --static set-hostname bigdata01

6.IP 地址和主机名映射

  1. linux 添加 ip 地址映射
[root@bigdata01 ~]$ cat >> /etc/hosts << EOF
192.168.0.84 bigdata01
192.168.0.85 bigdata02
192.168.0.86 bigdata03
EOF
  1. windows 添加 ip 地址映射
# 路径如下
C:\Windows\System32\drivers\etc\hosts
192.168.0.84 bigdata01
192.168.0.85 bigdata02
192.168.0.86 bigdata03

# 刷新 dns 使其生效
cmd
ipconfig /flushdns

7.普通用户无密切换root用户

[root@bigdata01 ~] chmod 777 /etc/sudoers

[root@bigdata01 ~] vi /etc/sudoers
%wheel    ALL=(ALL)    ALL
user01    ALL=(ALL)    NOPASSWD:ALL

[root@bigdata01 ~] chmod 440 /etc/sudoers
[root@bigdata01 ~] exit
[root@bigdata01 ~] sudo su

8.创建目录

[root@bigdata01 ~]$ mkdir -pv /opt/{module,soft,scripts}

9.配置yum源

9.1.配置本地源

在这里插入图片描述

# 在 VMware 或者 ESXi 上将镜像文件勾选连接,挂载镜像文件
[root@bigdata01 ~]$ mount /dev/sr0 /mnt
[root@bigdata01 ~]$ df -h
# 或者将iso文件通过ftp上传到/mnt目录下挂载
[root@bigdata01 ~]$ mount -o loop /mnt/CentOS-7-x86_64-DVD-1810.iso /mnt/
[root@bigdata01 ~]$ df -h

# 查看挂载后是否有内容
[root@bigdata01 ~]$ cd /mnt
[root@bigdata01 ~]$ ll

# 配置本地yum源
[root@bigdata01 ~]$ cd /etc/yum.repos.d/
[root@bigdata01 ~]$ mkdir ./bak
# 备份yum源
[root@bigdata01 ~]$ mv ./*.repo ./bak 

# 文件名称一定以.repo为后缀
[root@bigdata01 ~]$ vi yum.repo 
[redhat7]
name=redhat7 server
baseurl=file:///mnt
gpgcheck=0
enabled=1

# 清除yum缓存
[root@bigdata01 ~]$ yum clean all
# 缓存本地yum源
[root@bigdata01 ~]$ yum makecache
# 测试yum本地源 
[root@bigdata01 ~]$ yum list

# 开机自动挂载
[root@bigdata01 ~]$ vi /etc/rc.d/rc.local
# mount 镜像的绝对路径 要挂载的目录
mount -o loop /mnt/CentOS-7-x86_64-DVD-1810.iso /mnt/

# 赋予执行权限
[root@bigdata01 ~]$ chmod +x /etc/rc.d/rc.local

9.2.配置网络源

[root@bigdata01 ~]$ yum install wget
# 配置阿里镜像源
[root@bigdata01 ~]$ cd /opt/soft
wget http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/rpm-4.11.3-45.el7.x86_64.rpm
wget http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/python-urlgrabber-3.10-10.el7.noarch.rpm
wget http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-168.el7.centos.noarch.rpm
wget http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
wget http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch.rpm

# 安装 yum 插件
[root@bigdata01 ~]$ rpm -ivh --force rpm-4.11.3-45.el7.x86_64.rpm python-urlgrabber-3.10-10.el7.noarch.rpm yum-3.4.3-168.el7.centos.noarch.rpm yum-metadata-parser-1.1.4-10.el7.x86_64.rpm yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch.rpm

# 下载 CentOS7 的 repo 并上传至 /etc/yum.repos.d/
[root@bigdata01 ~]$ wget http://mirrors.aliyun.com/repo/Centos-7.repo
[root@bigdata01 ~]$ mv /opt/soft/Centos-7.repo /etc/yum.repos.d/

# 修改 repo 文件
[root@bigdata01 ~]$ vi /etc/yum.repos.d/Centos-7.repo
# 使用 vi 编辑器进行全局替换
%s/$releasever/7/g

[root@bigdata01 ~]$ vi /etc/yum.conf
plugins=0

[root@bigdata01 ~]$ vi /etc/yum/pluginconf.d/subscription-manager.conf
[main]
enabled=0

# 清空 yum 缓存,使其设置生效
[root@bigdata01 ~]$ yum clean all
# 加载服务器软件包缓存信息,提高搜索安装软件的速度
[root@bigdata01 ~]$ yum makecache
# 测试替换成功
[root@bigdata01 ~]$ yum install -y epel-release
[root@bigdata01 ~]$ yum install -y vim net-tools lyzsz sysstat

10.卸载自带 JDK 和 MySQL

[root@bigdata01 ~]$ rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
[root@bigdata01 ~]$ rpm -qa | grep -i mysql | xargs -n1 rpm -e --nodeps

11.克隆虚拟机

  1. 修改 02 和 03 节点的 ip 并且将 UUID 注释掉
  2. 修改 02 和 03 的主机名

12.集群无密钥登陆

# 三台同样操作
[root@bigdata01 ~]$ ssh-keygen -t rsa
[root@bigdata01 ~]$ ssh-copy-id bigdata01
[root@bigdata01 ~]$ ssh-copy-id bigdata02
[root@bigdata01 ~]$ ssh-copy-id bigdata03
				
# 测试            
[root@bigdata01 ~]$ ssh bigdata01
[root@bigdata01 ~]$ ssh bigdata02
[root@bigdata01 ~]$ ssh bigdata03

# 切换至普通用户testuser,执行上面相同的操作
[xinyuan@bigdata01 ~]$ ssh-keygen -t rsa
[xinyuan@bigdata01 ~]$ ssh-copy-id bigdata01
[xinyuan@bigdata01 ~]$ ssh-copy-id bigdata02
[xinyuan@bigdata01 ~]$ ssh-copy-id bigdata03

13.集群时间同步

操作节点:bigdata01

[root@bigdata01 ~]$ yum install -y ntp ntpdate

[root@bigdata01 ~]$ vim /etc/ntp.conf
# 释放注释,允许0段192.168.0.0-192.168.0.255网段的机器同步此服务器
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

#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 iburst

#配置与阿里云时间服务器同步
server ntp1.aliyun.com

# 添加允许上层时间服务器主动修改本机时间
restrict ntp1.aliyun.com notrap noquery
# 外部时间服务器不可用时,以本地时间作为时间服务
server 127.127.1.0
fudge 127.127.1.0 stratum 10

# 手动时间矫正
[root@bigdata01 ~]$ ntpdate -u ntp1.aliyun.com

# 重启ntpd服务
[root@bigdata01 ~]$ systemctl restart ntpd

# 查看状态(需要等10mins-30mins左右)
[root@bigdata01 ~]$ ntpq -p

操作节点:bigdata02&03

[root@bigdata02 ~]$ yum install -y ntp ntpdate

[root@bigdata02 ~]$ vim /etc/ntp.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 iburst

#配置与bigdata01时间服务器同步
server bigdata01
 
# 添加允许上层时间服务器主动修改本机时间
restrict bigdata01 notrap noquery
# 外部时间服务器不可用时,以本地时间作为时间服务
server 127.127.1.0
fudge 127.127.1.0 stratum 10

# 手动时间矫正
[root@bigdata02 ~]$ ntpdate -u bigdata01

[root@bigdata02 ~]$ systemctl restart ntpd

# 查看状态(需要等半小时左右)
[root@bigdata02 ~]$ ntpq -p
# 或者
[root@bigdata02 ~]$ ntpstat

# 或者创建定时任务同步时间
[root@bigdata02 ~]$ crontab -e
*/10 * * * * /usr/sbin/ntpdate -u bigdata01
[root@bigdata02 ~]$ crontab -l

14.安装JDK

[root@bigdata01 ~]$ tar -zxvf /opt/soft/jdk-8u331-linux-x64.tar.gz -C /usr/local

# 配置环境变量
[root@bigdata01 ~]$ vi ~/.bash_profile
# JAVA_HOME
JAVA_HOME=/opt/module/jdk1.8.0_331
export PATH=$PATH:$JAVA_HOME/bin:.

[root@bigdata01 ~]$ source ~/.bash_profile

15.集群通用脚本

hosts 文件

[root@bigdata01 ~]$ vi ~/hosts
192.168.0.84 bigdata01
192.168.0.85 bigdata02
192.168.0.86 bigdata03

xsync 脚本

[root@bigdata01 ~]$ cd /usr/local/bin
[root@bigdata01 bin]$ vim xsync
#!/bin/bash
hosts=$(head -n +3 ~/hosts | awk '{print $1}')

#1. 判断参数个数
if [ $# -lt 1 ]
    then
        echo Not Enough Arguement!
    exit;
fi

#2. 遍历集群所有机器
for host in ${hosts[*]}
    do
        echo ==================== $host====================
           #3. 遍历所有目录,挨个发送
           for file in $@
              do
                  #4. 判断文件是否存在
                  if [ -e $file ]
                      then
                          #5. 获取父目录
                          pdir=$(cd -P $(dirname $file); pwd)
                          #6. 获取当前文件的名称
                          fname=$(basename $file)
                          ssh $host "mkdir -p $pdir"
                          rsync -av $pdir/$fname $host:$pdir
                      else
                          echo $file does not exists!
                  fi
   done
done

[root@bigdata01 bin]$ chmod 755 ./xsync
[root@bigdata01 ~]$ yum install rsync
[root@bigdata01 ~]$ xsync /usr/local/jdk1.8.0_331
[root@bigdata01 ~]$ xsync ~/.bash_profile

xcall 脚本

[root@bigdata01 bin]$ vim xcall
#!/bin/bash
hosts=$(head -n +3 ~/hosts | awk '{print $1}')

# 获取控制台指令
pcount=$#

# 判断指令是否为空
if((pcount==0));
then
       echo "command can not be null !"
       exit
fi

# 获取当前登录用户
user=`whoami`

source /etc/profile

# 在从机执行指令,这里需要根据你具体的集群情况配置,host与具体主机名一致
for host in ${hosts[*]}
do
       echo ================ $host =================
       ssh $user@$host $@
done
echo ================================================

[root@bigdata01 bin]$ chmod 755 ./xcall 
[root@bigdata01 bin]$ ln -s $JAVA_HOME/bin/jps ./
[root@bigdata01 bin]$ xsync ./*
[root@bigdata01 bin]$ xcall jps

END

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值