架构day01
专业名词讲解
1.项目:理解为手机app,一个app就是一个项目
2.架构:用多个服务器搭建出一个项目 LNMP Linux nginx mariadb php
3.集群:为了解决某个特定问题,用多台计算机服务器来形成某个系统
4.高可用 keepalived:当一台机器噶了,会有另一台机器立马顶上,两台机子数据一致,环境一致,备机全天开机
5.单点故障:没有备机,只有一台机器的时候,一旦服务down机,服务就无法运行
6.负载均衡 loadbalance LB:让用户的请求平均分摊到每一台服务器,缓解了服务器的压力(进行轮循)
7.静态页面:前端写的,不用调取数据库的数据
8.动态页面:需要调取数据库的数据
架构流程图
# 用户请求,针对用户设计的架构
在浏览器输入域名 https://test.driverzeng.com
1.DNS域名解析服务器==>将https://test.driverzeng.com==>独立公网ip(114.80.187.8)
2.浏览器会和ip(114.80.187.8)进行端口的联机http(80)https(443)
3.请求会经过114.80.187.8的服务器防火墙
- 防火墙:过滤用户的请求,防止恶意请求,针对ip和端口进行一个限制
- 关闭防火墙 selinux(进行服务需求)
- centos6 iptable
- centos7 firewalld
- 硬件防火墙
4.请求通过防火墙后,会访问到负载均衡
- nginx
- HAproxy
- LVS
- F5(硬件)
5.通过负载均衡之后,请求会到web服务器
- nginx
- apache
- tomcat(java)
- PHP(php的代码容器)
6.web服务器前端代码会请求后端的代码,后端代码请求数据库
- Mysql
- oracle
- SQLServer
- Mariadb
7.数据库之前会有缓存数据库,如果缓存数据库中有请求的数据,则会直接返回给用户
- Redis
- mangoBD
- Memcache
8.文件服务器(共享存储服务器),专门存储图片,视频,二进制文件
- NFS
- GFS
- FastDFS
- ceph
# 运维自动化工具
所有的服务器都有两块网卡(外网网卡、内网网卡)
外网:针对用户访问,给用户数据的
内网:服务器之间可以互相访问
跳板机
类似:ssh root@IP(登陆ssh命令)
- openvpn
- jumpserver
- pptpvpn
监控:检测服务器的应用状态,硬件状态,网络状态,系统状态,服务状态
- zabbix
- nagios
- open-falcon
- cacti
数据备份,用来备份所有重要数据
rsync
批量管理服务器
- ansible
- salstack
日志服务器
- ELK
- flume
代码发布
- jenkins
-代码存储服务器
- 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 |
255.255.255.0
优化最终版本虚拟机
添加网卡
开机
按tab
在行末输入
net.ifnames=0 biosdevname=0
优化网卡
# eth0
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="eth0"
UUID="e6ee8c14-7fec-4938-8957-4a11dabf016c"
DEVICE="eth0"
ONBOOT="yes"
IPADDR="10.0.0.100"
PREFIX="24"
GATEWAY="10.0.0.2"
DNS1="223.5.5.5"
# 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.100
PREFIX=24
# 重启网卡
systemctl restart network
# 修改用户名
hostnamectl set-hostname 想要的主机名
基础优化配置
# 打包yum源
gzip /etc/yum.repos.d/*
# 更改base源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 更改epel源
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 下载基础命令包
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
# 关闭防火墙
systemctl stop firewalld
# 取消防火墙开机自启
systemctl disable firewalld
# 关闭selinux(永久关闭,建议使用)
vim /etc/sysconfig/selinux
SELINUX=disabled
# 临时关闭(不建议使用)
getenforce 0
# 优化文件描述符
echo '* - nofile 65535' >> /etc/security/limits.conf
# 关机拍摄快照
# 后面所有的机器都以此为母体进行链接克隆,并把主机名改为 名字-ip