架构介绍

架构相关名词

项目:独立的一个网站,或者独立的一个app应用
架构:用来维护或者运行一个项目的一组服务器
集群:为解决某个特定问题将多台计算机组合起来形成的单个系统(单点故障)
高可用:当一台服务器不可用,另一台服务器自动接管,保证业务不down机
负载均衡:将用户的请求,分摊到多个操作单元上执行,为了解决服务器压力不均衡的问题

架构演变

架构流程图

img

# 用户请求,针对用户设计的架构
在浏览器输入域名
https://wodeyumengouwo.com
1.DNS域名解析服务器==> 将
wodeyumengouwo.com ==> 独立公网
IP(111.231.7.51)
2.浏览器会和IP(111.231.7.51)进行端口的联机
http(80) https(443)
3.请求会经过111.231.7.51的服务器防火墙
-防火墙:过滤用户的请求,放置恶意请求,针对
IP和端口进行一个限制
- 关闭防火墙 selinux
-centos6 iptable
-centos7 firewalld
-硬件防火墙
4.请求通过防火墙后,会访问到负载均衡
-nginx
13 -HAproxy
14 -LVS
15 -F5(硬件)
16 5.通过负载均衡之后,请求会到web服务器
17 -nignx
18 -apache
19 -tomcat(java)
20 -PHP(php的代码容器)
21 6.前段代码会请求后端的代码,后端代码请求数据库
22 -Mysql
23 -oracle
24 -SQLServer
25 -Mariadb
26 7.数据库之前会有缓存数据库,如果缓存数据库中有请
求的数据,则会直接返回给用户
27 -Redis
28 -mangoBD
29 -Memcache
30 8.文件服务器(共享存储服务器),专门存储图片,视
频,二进制文件
31 -NFS
32 -GFS
33 -FastDFS
34 -ceph
35 # 运维自动化工具
36 所有的服务器都有两块网卡
37 外网:针对用户访问,给用户数据的
38 内网:服务器之间可以互相访问
40 跳板机
41 -openvpn
42 -jumpserver
43 -pptpvpn
44
45 监控 检测服务器的应用状态,硬件状态,网络状态,系
统状态,服务状态
46 -zabbix
47 -nagios
48 -open-falcon
49 -cacti
50
51 数据备份,用来备份所有重要数据
52 rsync
53
54 批量管理服务器
55 -ansible
56 -salstack
57
58 日志服务器
59 -ELK
60 -flume
61 代码发布
62 -jenkins
63 -代码存储服务器
64 -Gitlab
外网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.61 172.16.1.61 m01
10.0.0.71 172.16.1.71 zabbix

优化最终版本虚拟机

img

img

  • 典型(推荐使用)
  • 自定义

img

  • 安装程序光盘

  • 安装程序光盘映像文件

  • 稍后安装操作系统(推荐使用)

img

  • Linux
  • CentOS 7 64位(CentOS 64位)

img

  • 命名虚拟机名称

  • 保存虚拟机位置

  • 一个虚拟机一个文件夹

  • 一台虚拟机一个文件夹

img

  • 20G
  • 将虚拟磁盘拆分成多个文件

img

  • 完成

添加网卡

img

img

img

img

开机

## 按tab末尾加入net.ifnames=0 biosdevname=0

img

img

img

img

img

img

img

img

img

img

img

img

.img

img

img

img

img

img

img

img

配置网卡

## 编辑第一块网卡
vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="eth0"
UUID="752c888b-804f-46d1-9a1d-250c4a5d047c"
DEVICE="eth0"
ONBOOT="yes"
IPADDR="10.0.0.110"
PREFIX="24"
GATEWAY="10.0.0.2"
DNS1="223.5.5.5"

## 编辑第二块网卡
vi /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.1.110
PREEFIX=24

## 重启网卡
systemctl restart network

系统基础优化

# 1.更改yum源
## 删除所有系统内置yum源
[root@localhost ~]# rm -fr /etc/yum.repos.d/*

## Base源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
## Epel源
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

## 查看源文件
[root@localhost ~]# ll /etc/yum.repos.d/
-rw-r--r--. 1 root root 2523 May 12 20:02 CentOS-Base.repo
-rw-r--r--. 1 root root 664 May 12 20:03 epel.repo

## 优化阿里云的源(删除多余的baseurl)
[root@localhost ~]# cat /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

# 2.安装基础命令和环境
yum install net-tools vim tree htop iftop gcc gcc-c++ glibc iotop lrzsz sl wget unzip telnet nmap nc psmisc dos2unix bash-completion bash-completion-extra sysstat rsync nfs-utils httpd-tools -y

# 3.关闭防火墙
## 关闭防火墙服务
[root@localhost ~]# systemctl stop firewalld
## 取消防火墙开机自启
[root@localhost ~]# systemctl disable firewalld

# 4.关闭selinux
## 查看selinux
[root@localhost ~]# getenforce
Enforcing ## 开启状态
## 临时关闭
[root@localhost ~]# setenforce 0
## 永久关闭
[root@localhost ~]# vim /etc/sysconfig/selinux
SELINUX=enfocing => SELINUX=disabled

# 5.优化文件描述符
## 查看文件描述
[root@lb01 ~]# ulimit -n
1024

## 设置文件描述符为65535
[root@lb01 ~]# echo '* - nofile 65535' >> /etc/security/limits.conf
[root@lb01 ~]# ulimit -n
65535

# 6.写修改主机名和IP的脚本
[root@localhost ~]# vim host_ip.sh
#!/bin/bash

read -p 'Please input HOSTNAME:' h
read -p 'Please input IP:' IP
hostnamectl set-hostname $h
sed -i "s#100#$IP#g" /etc/sysconfig/network-scripts/ifcfg-eth{0,1}
systemctl restart network

# 7.时间同步
## 下载时间同步命令 并执行
[root@localhost ~]# yum install -y ntpdate
[root@localhost ~]# ntpdate time1.aliyun.com

## 编辑定时任务 并查看日志是否成功
[root@localhost ~]# crontab -e
# Usage: Sync Date By:wyk Date:2022/05/10
*/5 * * * * /usr/sbin/ntpdate time1.aliyun.com &>/dev/null

[root@localhost ~]# tail -f /var/log/cron

# 上面的优化配置全完全以后 init 0 关闭模版机 先快照优化好的模版机
# 克隆时 选择按快照克隆  选择链接克隆
# 克隆完成以后 开启克隆好的虚拟机 输入账号 密码
# 执行脚本修改 主机名 和 IP
# 关机给克隆完成的虚拟机拍快照