第1章  中小规模网站架构组成  

架构名词介绍

1.什么是项目, 类似于手机的app,每一个app都可以算做一个项目。

2.什么是架构, 维护一个项目使用的一组服务器。

3.什么是集群, 为解决某个特定问题将多台计算机组合起来形成的单个系统。

4.什么是高可用, 当一台服务器不可用,另一台服务器自动接管,保证业务不down机。

5.什么是负载均衡,将用户的请求,分摊到多个操作单元上执行,保证服务器的稳定性。

架构访问流程-用户视角

1.用户通过浏览器输入oldboyedu.com->回车

2.浏览器会发生一次跳转,分析URL->然后进行DNS解析->获取真实的公网IP地址

3.用户通过tcp的三次握手发起连接->真实的公网IP

4.连接会通过公网->路由器->交换机->抵达前端的硬件防火墙

5.防火墙根据自身访问规则,进行匹配->如果恶意的连接则拒绝->如果是正常的连接则放行

6.防火墙会将连接转发给负载均衡器->查看用户请求的内容->根据内容进行任务下发->下发给web服务器

7.web服务接收请求后会根据请求进行判断 如果是请求图片或者附件->查找存储服务器存储的静态资源 如果请求的网站上的内容->缓存服务器->如果缓存服务器没有->数据库 数据库查询完数据之后会返回数据给web服务器->同时也会返回一份给缓存服务器

8.数据库返回内容->web服务器->负载均衡->用户

架构访问流程-运维视角

1.用户通过公网连接(隧道)VPN服务器,这样方便管理内部主机,

2.自动化配置管理,节省人力成本,便于后期维护。统一环境,标准化

3.自动化监控服务,监控系统的运行状态,事前预警,事后追溯。

总结: 一个项目涵盖了一套架构,一套架构又涵盖了不同的角色(高可用、负载均衡、web集群) 五层架构模型–> 负载均衡 web服务 存储服务 缓存服务 数据库服务(通过tcp连接)

1) 顾客–用户
       访问网站的人员
    2) 保安–防火墙 (firewalld)
       进行访问策略控制
    3) 迎宾–负载均衡服务器  (nginx)
       对用户的访问请求进行调度处理
    4) 服务员—web服务器    (nginx)
       处理用户的请求
    5) 厨师—数据库服务器   (mysql)
       存储的字符数据  (耳机  500   索尼  黑色  北京地址  订单时间2019-05-05 13:00)
    6) 厨师—存储服务器     (nfs)
       存储图片 音频 视频 附件等数据信息
    7) 厨师—备份服务器     (rsync+crond-定时备份 rsync+sersync–实时备份)
       存储网站所有服务器的重要数据
    8) 厨师—缓存服务器     (memcache redis mongodb)
       a 将数据信息存储到内存中
       b 减缓服务器的压力       
    9) 经理—批量管理服务器 (ansible)
       批量管理多台服务器主机
    部署网站架构:
    1) 需要解决网站架构单点问题
       迎宾:      高可用服务—keepalived
       数据库:   高可用服务—mha
       存储服务: 高可用服务—keepalived实现
       高可用服务—分布式存储
       备份服务:  
       面试题: 公司的数据是如何备份

1) 利用开源软件实现数据备份  rsync(免费)
2) 利用企业网盘进行数据备份  七牛云存储
3) 利用自建备份存储架构      两地三中心  
缓存服务: 高可用服务--- 缓存服务集群/哨兵模式

    2) 内部员工如何远程访问架构
       部署搭建VPN服务器 PPTP vpn
       https://blog.oldboyedu.com/pptp-l2tp/
    3) 内部员工操作管理架构服务器要进行审计
       跳板机服务器  jumpserver
       https://jumpserver.readthedocs.io/zh/docs/setup_by_centos.html
    4) 架构中服务器出现问题需要进行提前报警告知
       部署监控服务器 zabbix

第2章  综合架构规划   

主机名称和IP地址规划

    01. 防火墙服务器      firewalld    10.0.0.81(外网地址)     172.16.1.81(内外地址)      软件: firewalld
    02. 负载均衡服务器    lb01         10.0.0.5                 172.16.1.5                软件: nginx keepalived
    03. 负载均衡服务器    lb02         10.0.0.6                 172.16.1.6                软件: nginx keepalived
    04. web服务器         web01        10.0.0.7               172.16.1.7                 软件: nginx
    05. web服务器         web02        10.0.0.8               172.16.1.8                 软件: nginx
    06. web服务器         web03        10.0.0.9(存储)         172.16.1.9                 软件: nginx
    07. 数据库服务器      db01         10.0.0.51              172.16.1.51             软件: mysql(慢)  mariaDB
    08. 存储服务器        nfs01        10.0.0.31              172.16.1.31             软件: nfs
    09. 备份服务器        backup       10.0.0.41              172.16.1.41             软件: rsync
    10. 批量管理服务器    m01          10.0.0.61              172.16.1.61             软件: ansible
    11. 跳板机服务器       jumpserver   10.0.0.71(61)          172.16.1.71             软件: jumpserver
    12. 监控服务器        zabbix       10.0.0.72(61)          172.16.1.72             软件: zabbix
    先把路走通,再进行变通   
  13. 缓存服务器     忽略

03. 优化配置模板主机
    1) 进行网络配置
       a 添加网卡
       b 配置网卡
       vim /etc/sysconfig/network-scripts/ifcfg-eth1
       c 确认网络配置
    2) 系统优化过程
       1. 模板机优化配置—hosts文件配置

   \cp /etc/hosts{,.bak}
cat >/etc/hosts<<EOF
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5      lb01
172.16.1.6      lb02
172.16.1.7      web01
172.16.1.8      web02
172.16.1.9      web03
172.16.1.51     db01 db01.etiantian.org
172.16.1.31     nfs01
172.16.1.41     backup
172.16.1.61     m01
EOF

第3章  优化配置模板主机

1. 进行网络配置

  • 添加网卡
  • 配置网卡
    vim /etc/sysconfig/network-scripts/ifcfg-eth1
  • 确认网络配置

 

 

 

 

 

 

 

 

 

2. hosts文件配置

\cp /etc/hosts{,.bak}
cat >/etc/hosts<<EOF
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5      lb01
172.16.1.6      lb02
172.16.1.7      web01
172.16.1.8      web02
172.16.1.9      web03
172.16.1.51     db01 db01.etiantian.org
172.16.1.31     nfs01
172.16.1.41     backup
172.16.1.61     m01
EOF

3. 更改yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup &&\
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install -y wget  
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
PS:yum repolist 列出yum源信息;

4. 关闭selinux

sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config 
setenforce 0
getenforce

5. 关闭iptables

systemctl stop firewalld
systemctl disable firewalld
systemctl status  firewalld

6. 提权oldboy可以sudo (可选配置)

useradd oldboy
echo 123456|passwd --stdin oldboy
\cp /etc/sudoers /etc/sudoers.ori
echo "oldboy  ALL=(ALL) NOPASSWD: ALL " >>/etc/sudoers
tail -1 /etc/sudoers
visudo -c

7. 英文字符集

localectl set-locale LANG="en_US.UTF-8"

8. 时间同步

yum install -y ntpdate
echo '#time sync by lidao at 2017-03-08' >>/var/spool/cron/root
echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' >>/var/spool/cron/root
crontab -l

9. 加大文件描述

yum install -y lsof
lsof -i:22
#加大文件描述
echo '*               -       nofile          65536' >>/etc/security/limits.conf 
tail -1 /etc/security/limits.conf
说明:
       一个服务程序运行起来,会打开相应的文件
		crond定时任务服务---systemctl start crond --- 打开相应文件
		/var/spool/cron/root  --- 加载打开配置文件
		/var/log/cron         --- 加载打开日志文件

10. 安装其他小软件

yum install lrzsz nmap tree dos2unix nc telnet wget lsof ntpdate bash-completion bash-completion-extras -y

11. ssh连接速度慢优化

sed -i.bak 's@#UseDNS yes@UseDNS no@g;s@^GSSAPIAuthentication yes@GSSAPIAuthentication no@g'  /etc/ssh/sshd_config
systemctl restart sshd

12. 修改主机名

修改主机名称
hostnamectl set-hostname backup
修改主机地址

sed -i 's#200#41#g' /etc/sysconfig/network-scripts/ifcfg-eth[01]
grep 41 /etc/sysconfig/network-scripts/ifcfg-eth[01]
sed -i '/UUID/d' /etc/sysconfig/network-scripts/ifcfg-eth[01]
grep UUID /etc/sysconfig/network-scripts/ifcfg-eth[01]
systemctl restart network
PS: 一台一台顺序启动,进行修改,不要同时启动	  
补充: 克隆好的主机无法远程连接:
解决方式:
01. 利用ping方式测试
02. 关闭xshell软件重新打开
sed -i 's#200#41#g' /etc/sysconfig/network-scripts/ifcfg-eth[01]
grep 41 /etc/sysconfig/network-scripts/ifcfg-eth[01]
sed -i '/UUID/d' /etc/sysconfig/network-scripts/ifcfg-eth[01]
grep UUID /etc/sysconfig/network-scripts/ifcfg-eth[01]
systemctl restart network

版权声明:本文为strugger-0316原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/strugger-0316/p/13945566.html