Lupinus

Re:从零开始的go学习生活(`・ω・´)

0%

[环境准备]

架构介绍

架构相关名词

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

架构演变

image-20220512193446428

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#用户请求,针对用户设计的架构 
在浏览器中输入:https://blog.driverzeng.com
1.DNS域名解析服务器 ==》将blog.driverzeng.com解析成IP地址:114.80.187.8
2.浏览器和该IP地址(114.80.187.8)的服务器(https:// 443)端(http:// 80)口建立连接
3.请求要经过114.80.187.8服务器的防火墙,如果允许你的IP(101.229.206.48)访问服务器的443端口
- 防火墙:过滤用户请求,防止恶意请求,针对IP和端口进行限制
- 关闭防火墙,关闭Selinux
- CentOS6之前:iptables
- CentOS7开始:firewalld,也可以使用iptables
- 硬件防火墙
4.请求通过防火墙后,访问到负载均衡服务器
- Nginx
- HAproxy
- LVS
- F5(硬件)
5.请求通过负载均衡后会被下发到后面的web服务器
- Nginx
- Apache
- Tomcat(Java)
- PHP(PHP代码容器)
6.前端代码会请求后端的代码,后端代码请求数据库
- MySQL
- Oracle
- SQLServer
- MariaDB
7.数据库之前会有缓存服务器,如果缓存中有请求的数据,则直接通过缓存返回给用户
- Redis
- MangoDB
- Memcache
8.文件服务器(共享存储服务器)专门用来存储图片,视频,二进制类型的数据
- NFS
- GFS
- FastDFS
- ceph

#运维自动化工具
所有服务器,至少要有两块网卡(有两个IP地址)
外网IP地址:针对用户访问,给用户提供服务
内网IP地址:服务器之间互相可以访问
跳板机,VPN:访问内网服务器
- openvpn
- pptpvpn
- jumpserver
监控:检测服务器上的应用状态,硬件状态,网络状态,系统状态,业务状态
- zabbix
- nagios
- open-falcon
- promethues
- cacti
数据备份服务器:用来备份所有重要数据
- rsync 批量管理服务器
- ansible
- saltstack
日志服务器
- ELK
- flume
代码发布服务器
- Jenkins
代码存储服务器
- Gitlab

架构模板机准备

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#编辑网卡名
按Tab键
quiet net.ifnames=0 biosdevname=0

#配置网卡
##编辑第一块网卡
vi /etc/sysconfig/network-scripts/ifcfg-eth0
删除UUID #mac地址
BOOTPROTO=dhcp => BOOTPROTO=static 或者 BOOTPROTO=none
ONBOOT=no => ONBOOT=yes
IPADDR=10.0.0.100
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
DNS1=223.5.5.5
##编辑第二块网卡
vi /etc/sysconfig/network-scripts/ifcfg-eth1
删除UUID
BOOTPROTO=dhcp => BOOTPROTO=static 或者 BOOTPROTO=none
ONBOOT=no => ONBOOT=yes
IPADDR=172.16.1.100
NETMASK=255.255.255.0
##重启网卡
systemctl restart network

#系统优化
#1.更改yum源
##删除所有系统内置yum源
[root@localhost ~]# gzip /etc/yum.repos.d/*.repo
[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
##优化阿里云的源(删除多余的baseurl)
[root@localhost ~]# vi /etc/yum.repos.d/CentOS-Base.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

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

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

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

#修改主机脚本
#!/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}

机器准备

外网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