架构基础--模板机的创建及优化
名词介绍
-
项目
每个app都可以看作一个项目,每个网站都是一个项目
-
```bash
项目下的服务器,可以撑起一个项目的 一个或一组 的服务器 结构 叫架构
服务
tomcat
mysql
redis
mondoDB
fastDFS
logstash
Kibana
# LNMP
Linux Nginx MySQL PHP
# LNMT
Linux Nginx MySQL Tomcat
# LAMP
Linux Apache MySQL PHP
# LAMT
Linux Apache MySQL Tomcat
```
-
前提是在多台服务器,一定是多台服务器,部署同一个服务,并且互相关联
多个服务器共同负担高流量的部分,互相关联,信息共享,nginx 集群,mysql集群。Hadoop集群
每个集群的关联的做法不一样
-
高可用(备胎)
前提是在多台服务器一组集群的情况下,当主服务器down机了,备胎顶上去,继续提供服务
-
负载均衡(陪酒)
前提是在多台服务器一组集群的情况下,每台服务器将用户的请求按照一定条件分配
数据库
缓存 提前做好的,文件系统 共享存储 NFS GFS 数据库没有的 图片
vpn 后🚪
监控 只能看(显示屏)
备份服务器,备份文件(html)curl ifconfig.me
公网IPhttps:// 谷歌隐藏协议
DNS :域名解析 域名解析成IP(身份标识符),计算机认识的
负载均衡 : F5 nginx LVS
URL参数 传参(https://里面的s,直接构造了向百度服务器发起请求的url)
做网站 nginx apache PHP
缓存 :关系到用户访问的速度,redis
数据库 :关系数据库
监控 : zabbix
备份 : rsync sersync日志收集工具:ELK
自动化代码上线
架构环境
架构环境规划
一个服务器有一块网卡,那么就会分配一个IP地址,如果有2块网卡,就会分配两个IP地址
为什么企业服务器是10.0.0.网段
为什么这些服务器都需要2块网卡
LAN区段为什么是那个段, 实际上LAN区段的设置是随意的,这里为了统一
同一架构下,一个服务器的外网IP 和内网IP的 主机位 规定是必须相同的,网络位可能不同
外网IP | 内网IP | 主机名 |
---|---|---|
10.0.0.5 | 172.16.1.5 | lb01 |
10.0.0.6 | 172.16.1.6 | lb02 |
10.0.0.7 | 172.16.1.7 | web01 |
10.0.0.8 | 172.16.1.8 | web02 |
10.0.0.9 | 172.16.1.9 | web03 |
10.0.0.31 | 172.16.1.31 | nfs |
10.0.0.41 | 172.16.1.41 | backup |
10.0.0.51 | 172.16.1.51 | db01 |
10.0.0.52 | 172.16.1.52 | db02 |
10.0.0.53 | 172.16.1.53 | db03 |
10.0.0.54 | 172.16.1.54 | db04 |
10.0.0.61 | 172.16.1.61 | m01 |
10.0.0.71 | 172.16.1.71 | zabbix |
模板机准备
创建一个新的虚拟机 , 添加网卡(eth1)
连接镜像,添加网络适配器
路由器
交换机 类似 路由器 ,都有一个WAN口 ,多个LAN口(交换机比路由器多),wan口用来连接外网,lan口用来连接内网机器,连接lan口的机器 可以通过wan口访问外网,
如果wan口不连接外网,那么这些机器就处在一个内网的环境,可以相互通信,一起开放打运输船(前提是得连接路由器)
只要在 同一个网段 的机器,就算不连接外网,不连接wifi,什么都不连,那么照样可以互相通信
交换机
交换机分为 内网交换机(内网IP) 和外网交换机(外网IP) ,内网交换机就是wan口不连网线的,外网交换机就是wan口连接网线的
外网交换机就是为了获取请求,发送请求
内网交换机就是为了存储重要的数据,防止黑客入侵,内网之间通信速度相对来说速度要快
开机
net.ifnames=0 biosdevname=0 1.修改时区(上海) 2.修改分区 /boot 500M swap 1024 / 剩下的都给根 3.kdownup 4.begin
使用vi 修改 外网网卡 配置文件(eth0)
使用vi 修改网卡配置文件(eth1)
eth1网卡是用来连接内网交换机的,所以说,只需要IP 和 子网掩码 ,不需要 GATEWAY=10.0.0.2
DNS1=223.5.5.5, 加不加无所谓,用不到
eth1网卡IP的主机位要跟eth0保持一致,约定的,同时脚本的修改也方便了
重启网卡 systemctl restat network ,使用xshell连接-------方便
```bash ping badu.com 如果可以ping通,那么网卡配置(eth0)没问题 永久 关闭防火墙 systemctl disable firewalld 永久 关闭selinux vi /etc/sysconfig/selinux 或者 [root@localhost ~]# sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config # 重启虚拟机 reboot [root@localhost ~]# getenforce Disabled [root@localhost ~]# systemctl status firewalld ## 修改yum源----------------可以一次复制粘贴3条 rm -rf /etc/yum.repos.d/* curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo #删除多余的两条路径 ## 安装基础包 https://blog.driverzeng.com/zenglaoshi/1959.html yum install -y net-tools vim tree htop iftop gcc gcc-c++ glibc\ iotop lrzsz sl wget zip unzip telnet nmap nc psmisc \ dos2unix bash-completion bash-completion-extra sysstat \ rsync nfs-utils httpd-tools ntpdate 调整单个进程最大能打开文件的数量 echo '* - nofile 65535' >> /etc/security/limits.conf [root@web01 ~]# ulimit -n 查看系统可用的文件描述符最大值,=端口的最大值=65535 # 脚本----eth0是外网交换机,eth1是内网交换机(与取IP有关) [root@oldboy ~]# vim xiugaizhuji.sh (小心 模板机主机位是10,25,5,223的时候) #!/bin/bash ethFile=/etc/sysconfig/network-scripts/ifcfg-eth[0,1] Now_eth=`hostname -I|awk -F "[. ]+" '{print $4}'` read -p "请输入主机名:" Hostname read -p "请输入IP地址的主机位:" HostIP hostnamectl set-hostname $Hostname sed -i "s#${Now_eth}#${HostIP}#g" $ethFile read -p "是否重启网卡:{yes/no}" REboot if [ $REboot == yes ];then echo "网卡马上重启..." systemctl restart netwark else echo "已取消重启网卡..." fi
主机位改错了的话 (主机位是10,25,5,223的时候),不能再用脚本修改,#注意格式
sed也可以同时编辑多个文件
主机名和主机位输错了不能取消,断开xshell可以重新输入,不然就要去虚拟机里面改,因为网卡信息已经被改动,xshell连不上了
脚本放在全局环境变量里,每次开机这个脚本就会加载,用过了记得注释,也可以放在家目录下
克隆好的虚拟机 不可以一次开多台,只是因为IP 一样,IP冲突shell无法连接,当然,也可以在虚拟机上运行脚本修改网卡主机位
克隆模板机不会克隆其快照,所以 小心找目标
# 基于优化后的虚拟机进行克隆-------克隆模板机不会克隆其快照
1.连接克隆(需要依赖于母体)
2.完整克隆(完完全全的复制一份,占用磁盘空间)
# 克隆机
sh xiugaizhuji.sh
重启克隆机,使主机名,IP的修改生效
# 快照
# 总结:
1.克隆机开机之后可以直接使用原本模板机的xshell会话,因为他是克隆过来的(关闭模板机)
2.在xshell上修改了IP 重启虚拟机之后,xshell就连接不上了,因为IP已经修改
3.xshell断开再重连可以重新输入主机名或密码(#read 应该有个选项可以直接支持重新输入的)
4.xshell最好在虚拟机打开登录界面再连接
5.克隆机不再拍摄快照,除非要保存重要的状态
```