模板机创建与修改网卡
  jnZtF7Co41Wg 2023年12月06日 19 0

一.模板机器准备

服务器作用            主机名                外网地址            内网地址                运行软件                                    
管理机               master-61            10.0.0.61       172.16.1.61           Ansible/zabbix/jumpserver/openvpn        
负载均衡服务器        slb-5                10.0.0.5        172.16.1.5            nginx/keepalived
负载均衡服务器        slb-6                10.0.0.6        172.16.1.6            nginx/keepalived

web服务器            web-7                10.0.0.7        172.16.1.7            nginx/php
web服务器            web-8                10.0.0.8        172.16.1.8            nginx/tomcat
web服务器            web-9                10.0.0.9        172.16.1.9            nginx/php

存储服务器            nfs-31               10.0.0.31       172.16.1.31           nfs/rsyncd/lsyncd
备份服务器            rsync-41             10.0.0.41       172.16.1.41           nfs/rsyncd/lsyncd

数据库服务器          db-51                10.0.0.51       172.16.1.51           mysql/redis

注意去理解架构图,生产环境下、只有最外层的负载均衡设备,才能对接到公网流量,因此需要配置公网ip地址;
其他功能的服务器,只需要单网卡,内网IP即可;

外网地址
    - 模拟互联网的公网ip
    - 你可以直接使用windows,ping通该地址,(xshell)ssh连接该地址(服务器)

内网地址
    - 模拟服务器的内网,局域网环境
    - 无法直接通过xshell连接该服务器

二.模板机的创建

模板机创建与修改网卡_服务器

注意点是,双网卡,并且要修改网卡默认命名规则
在开机选择linux内核画面,输入tab键
net.ifnames=0 biosdevname=0
这个参数的作用是修改linux的安装过程,让网卡名,恢复为旧的linux命名规则,也就是eth0

模板机举例
网卡0   
eth0  
IPADDR   10.0.0.100  
GATEWAY  10.0.0.254 (1.vmware虚拟网络编辑器里确定好 2.修改linux的eth0网卡配置文件)
NETMASK  255.255.255.0
DN1=223.5.5.5

模拟外网网卡,因此需要网关

网卡1   eth1  ,仅仅模拟局域网,我们这9台机器
内网的网段设置(vmware,创建的LAN局域网,纯纯的局域网,只能和这个网段的ip地址通信,没有网关,无法从这个网关大门出去,和外接地址通信 )
IPADDR 172.16.1.100
NETMASK 255.255.255.0

模板机创建与修改网卡_主机名_02


模板机创建与修改网卡_服务器_03

模板机创建与修改网卡_服务器_04

模板机创建与修改网卡_主机名_05


模板机创建与修改网卡_服务器_06


模板机创建与修改网卡_服务器_07

三.linux装好后,开始系统初始化配置

1.该模板机,以及在安装阶段,设置好了双网卡,以及外网卡eth0的ip地址配置,目的是为了待会可以ssh连接
以及也修改了默认的网卡名字

2.等待安装完毕后,ssh连接,开始后续的系统初始化步骤

3.首次连接该模板机,通过xshell管理
ssh root@10.0.0.100

4.对网卡配置文件设置,修改eth0的网卡,生成新的eth1的网卡(设置完毕后,确保两个网卡正常)
确保你的eth0网卡,配置和我一样
[root@template-linux01 network-scripts]# cat ifcfg-eth0 
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.100
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
DNS1=223.5.5.5

根据这个eth0,生成另一个eth1
[root@template-linux01 network-scripts]# cat ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=static
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.1.100
NETMASK=255.255.255.0
# 重启网络,让,eth1也生效

模板机创建与修改网卡_服务器_08

关闭所有防火墙

  • selinux,内置的防火墙
  • firewalld,iptables,通过程序安装在linux上的软件防火墙
查看selinux状态
临时关闭selinux
[root@tmp-linux01 network-scripts]# setenforce 0
[root@tmp-linux01 network-scripts]# getenforce 
Permissive
[root@tmp-linux01 network-scripts]# 

永久关闭,需要修改配置文件
[root@tmp-linux01 network-scripts]# grep '^SELINUX' /etc/selinux/config 
SELINUX=disabled
SELINUXTYPE=targeted 
需要reboot重启

关闭防火墙firewalld,以及清空当前所有的 防火墙规则
清空防护墙规则
iptables -F
关闭firewalld服务,推到所有的防火墙大门,所有的链
systemctl stop firewalld
systemctl disable firewalld

如下确保,只有三行信息,表示防火墙,彻底关了
[root@tmp-linux01 network-scripts]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

加速ssh连接

默认ssh连接的时候,可能比较慢,因为它默认进行了dns解析,关闭这个功能

修改如下3个参数,和我一样即可
[root@tmp-linux01 network-scripts]# grep -Ei 'gssapiauth|usedns|pidfile' /etc/ssh/sshd_config 
GSSAPIAuthentication no
UseDNS no
PidFile /var/run/my_sshd.pid

改完了配置文件,务必要重启服务
[root@template-linux01 network-scripts]# systemctl restart sshd

由于重启了sshd服务,进程id必然会变化,
如何查找该服务的进程id?

看进程
[root@template-linux01 ~]# ps -ef|grep sshd
root       3078      1  0 10:41 ?        00:00:00 /usr/sbin/sshd -D
root       3085   3078  2 10:43 ?        00:00:00 sshd: root@pts/0
root       3105   3089  0 10:43 pts/0    00:00:00 grep --color=auto sshd

看端口
[root@template-linux01 ~]# ss -tnlp|grep sshd
LISTEN     0      128          *:22                       *:*                   users:(("sshd",pid=3078,fd=3))
LISTEN     0      128         :::22                      :::*                   users:(("sshd",pid=3078,fd=4))


根据pidfile文件,找到sshd服务的进程id
[root@template-linux01 ~]# cat /var/run/my_sshd.pid 
3078

[root@template-linux01 ~]# kill -9 `cat /var/run/my_sshd.pid `  


此时发现sshd服务挂了,无法远程连接了
找到它的物理服务器,想办法登录服务器本身,重新开启sshd服务
systemctl start sshd

优化PS1变量

让命令提示符显示的更有好些
每一个用户,登录该机器,都可以使用这个PS1变量
写入 
/etc/profile
echo 'export PS1="[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\] \[\e[31;1m\]\w\[\e[0m\]]\\$"' >> /etc/profile

yum源优化

一个新机器,无法安装各种软件,因此配置阿里云的默认仓库,以及epel仓库
可以安装绝大多数软件
1.备份旧的默认repo
[root@tmp-linux01 ~]#cd /etc/yum.repos.d/
[root@tmp-linux01 /etc/yum.repos.d]#mkdir bakrepo ;mv *.repo bakrepo/

2.生成新的repo文件,wget在线下载资源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

想思路
1.用旧的repo文件,先下载wget命令
是配置一个正确可用的仓库,安装这个wget基础命令
2.使用本地光盘挂载形式,安装wget命令
3. 获取wget 的rpm包安装该命令
4. linux内置了curl命令,也是发起http请求的命令

用法
curl https://mirrors.aliyun.com/repo/Centos-7.repo > /etc/yum.repos.d/centos-base.repo
curl也有参数,把数据写入到指定的文件中
[root@tmp-linux01 /etc/yum.repos.d]#curl -o /etc/yum.repos.d/epel.repo  http://mirrors.aliyun.com/repo/epel-7.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   664  100   664    0     0   2394      0 --:--:-- --:--:-- --:--:--  2397

清楚旧的yum缓存  生成新的缓存
yum clean all && yum makecache

安装基础软件

因为你是最小化安装的系统,缺少很多基础软件依赖,安装即可
yum install -y tree wget bash-completion bash-completion-extras lrzsz net-tools sysstat iotop iftop htop unzip telnet ntpdate lsof

关闭邮件告警

你所有的操作,都会被linux内置的邮件服务器记录,不断的写入 /var/log下的日志文件
可能会占用无用的磁盘
echo 'unset mailcheck' >> /etc/profile
source /etc/profile

配置hosts主机名解析,通过主机名访问不同的机器

练习awk

[root@tmp-linux01 ~]#awk -F ' ' 'BEGIN{print "内网ip" , "外网ip" ,  "主机名" ,  "机器的作用"  ,"机器需要安装哪些软件"}{print $4,$3,$2,$1,$NF}END{print "awk","真好用","你说呢"}'  hosts.ip  |column -t
内网ip       外网ip     主机名     机器的作用      机器需要安装哪些软件
172.16.1.61  10.0.0.61  master-61  管理机          Ansible/zabbix/jumpserver/openvpn
172.16.1.5   10.0.0.5   slb-5      负载均衡服务器  nginx/keepalived
172.16.1.6   10.0.0.6   slb-6      负载均衡服务器  nginx/keepalived
172.16.1.7   10.0.0.7   web-7      web服务器       nginx/php
172.16.1.8   10.0.0.8   web-8      web服务器       nginx/tomcat
172.16.1.9   10.0.0.9   web-9      web服务器       nginx/php
172.16.1.31  10.0.0.31  nfs-31     存储服务器      nfs/rsyncd/lsyncd
172.16.1.41  10.0.0.41  rsync-41   备份服务器      nfs/rsyncd/lsyncd
172.16.1.51  10.0.0.51  db-51      数据库服务器    mysql/redis
awk          真好用     你说呢
linux机器之间的通信,最底层肯定是ip
还可以是通过主机名通信
主机名就和网站的域名一样理解即可
ip地址    主机名  
ping 主机名(如果想指定解析到某个ip,得hosts文件里写死)
需要修改hosts文件
cat > /etc/hosts <<EOF
# 外网地址   内网地址     主机名
10.0.0.61  172.16.1.61  master-61
10.0.0.5   172.16.1.5   slb-5
10.0.0.6   172.16.1.6   slb-6
10.0.0.7   172.16.1.7   web-7
10.0.0.8   172.16.1.8   web-8
10.0.0.9   172.16.1.9   web-9
10.0.0.31  172.16.1.31  nfs-31
10.0.0.41  172.16.1.41  rsync-41
10.0.0.51  172.16.1.51  db-51
EOF

配置时间同步定时任务,确保时间机器正确

你刚装好的机器,时间是错的

1.检查crontab服务是否运行
[root@tmp-linux01 ~]#systemctl status crond
2.写入定时任务语句
crontab -e 
3.检查定时任务语句
[root@tmp-linux01 ~]#crontab -e
[root@tmp-linux01 ~]#crontab -l
* * * * * /usr/sbin/ntpdate time1.aliyun.com > /dev/null 2>&1
[root@tmp-linux01 ~]#cat /var/spool/cron/root
* * * * * /usr/sbin/ntpdate time1.aliyun.com > /dev/null 2>&1

关闭swap功能

取消swap的功能,不适用这个从磁盘获取而来的部分内存容量,因为效率太差,企业里的服务器内存都巨大,有钱
swapoff -a
需要关闭swap的文件系统开机挂载
[root@tmp-linux01 ~]#cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Mon Apr 18 12:41:32 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=4b434f73-2809-489d-ac02-8a5e7803abd9 /boot                   xfs     defaults        0 0
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

拍摄快照(模板机)

此时的模板机,已经做好了所有的初始化操作,可以放心克隆,给其他的机器使用了,如果你希望模板机有更多的功能,例如安装好java、python,也行

1.针对模板机,拍摄快照,记录第一次初始化

2.针对该快照,生成多个虚拟机

开发修改ip脚本(克隆操作)

克隆新机器,修改其ip地址

克隆后的机器,ip是需要变化的
1. eth0 eth1 手动修改网卡配置文件,改的烦死,不用这种低级操作
写脚本,把你重复的操作,记录为sh脚本,执行该脚本,输入需要变化的部分即可
由于物理服务器不认识中文,建议你写成,英文即可
"你自己看得懂就行。。。

cat change_network.sh
#!/bin/bash
read -p "请输入IP主机位:" my_ip
read -p "请输入主机名:"  host_name
echo '正在修改网卡配置文件eth0'
sed -i "/IPADDR/s#100#${my_ip}#g"  /etc/sysconfig/network-scripts/ifcfg-eth0
echo '正在修改网卡配置文件eth1'
sed -i "/IPADDR/s#100#${my_ip}#g"  /etc/sysconfig/network-scripts/ifcfg-eth1
echo '网卡配置文件修改完毕'

echo '正在修改主机名'
hostnamectl set-hostname ${host_name}

echo "=========================="
echo "此时的eth0配置是:"  `cat /etc/sysconfig/network-scripts/ifcfg-eth0`

echo "=========================="
echo "此时的eth1配置是:"   `cat /etc/sysconfig/network-scripts/ifcfg-eth1`
echo "当前的主机名是:"   `hostname`

四.开始克隆9台机器(链接克隆)

基于模板机的快照,生成,链接克隆

1.先把模板机关机

2.给模板机拍摄快照(关机状态的快照)

3.基于该关机状态的快照,克隆出其他机器

第一台nfs31机器

1.开机
2.执行脚本,修改网卡
bash change_network.sh

3.重启机器
reboot

4.试试,是否可以基于ssh连接,ping通两块网卡,内外网都通,以及确保nfs-31是否可以上外网访问百度
[root@nfs-31 ~]#ping baidu.com

确保模板机100,和这个31是通的
master-61  nfs-31
基于主机名 通信

第二台rsync41

和nsf31一样操作,修改ip、主机名即可

最后

确保nfs-31和rsync-41是互相通信的即可

[root@nfs-31 ~]#ping 172.16.1.41
PING 172.16.1.41 (172.16.1.41) 56(84) bytes of data.
64 bytes from 172.16.1.41: icmp_seq=1 ttl=64 time=0.436 ms

[root@rsync-41 ~]#ping 172.16.1.31
PING 172.16.1.31 (172.16.1.31) 56(84) bytes of data.
64 bytes from 172.16.1.31: icmp_seq=1 ttl=64 time=0.186 ms

sed -i -r "s#^IPADDR=(.*)\.(.*)\.(.*)\.(.*)#IPADDR=\1.\2.\3.${my_ip}#' /etc/sysconfig/network-scripts/ifcfg-eth0"


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月06日 0

暂无评论

推荐阅读
  6YY0QMPUXEwu   2023年12月10日   11   0   0 linux网卡
  nIt0XG0acU8j   2023年12月11日   15   0   0 linuxhtop
  Yoru5qB4TSKM   2023年12月10日   15   0   0 服务器重启IP
  nIt0XG0acU8j   2023年12月09日   18   0   0 linuxsort