作者: 薄荷冰           Linux基础  |  网站架构  |  数据库  |  监控报警  |  shell系列  |  常用工具  |  常见问题


 

导航

 

宏 观 架 构 图

 

首先要分析网站需求:硬件选择、IP地址的规划、主机名规划、服务的目录结构规划。

1 中小型规模网站集群的好处:

  1. 国内99%的企业网站都是中小型规模的。
  2. 中小型网站规模的集群技术容易落地、实用、对新手摸得着、看得见。
  3. 所有的大规模网站集群架构都是从中小型规模集群扩展起来的,整个架构核心还是中小型的架构。
  4. 服务器数量可以从50-150台(含产线应用的云主机及虚拟主机)。
  5. 可以支撑的最高网站流量大小为日PV2000万左右,可以支撑的高峰期并发连接数过万。
  6. 需要运维人员人数3-5个。5个的话:1运维总监、1企业网管、1初级运维、1高级运维兼运维开发。
  7. 正常情况下,这个规模的网站集群消耗的IDC总带宽大小为100MB独享。

2 本架构对应企业网站的各项指标参考如下:

2.1 集群节点的主机名及IP地址规划

2.1.1 主机名规划说明

表1.1主机名规划说明(各字段间用“-”连接)

功能区域名称

服务器应用名称

应用功能或角色名称

服务器编码

DB

MySQL

master

01

WEB

LNMP

node

02

以下为各字段名称的含义:

  1. 功能区域名称:目前架构分为5个功能区域,分别为LB(负载)、WEB(网页访问)、STORE(存储)、DB(数据库)、MAGE(管理)。
  2. 服务器应用名称:根据服务器所装的核心应用服务命名。例如:web服务器安装nginx、PHP、MySQL软件一体的环境,可命名为LNMP。
  3. 应用功能或角色名称:根据服务器的业务不同,会出现相同的软件实现不同的功能情况,并且相同功能软件也会划分主从等不同角色等,因此也就有了根据功能或角色命名的方式,例如:MySQL Master数据库。
  4. 服务器编号:根据相同应用功能服务器的排序或分组进行命名。例如:两台服务器的命名规范为:WEB-LNMP01、WEB-LNMP02(node为通用节点名,可以省略)。
  5. 以上仅仅是单机房简单的规划思路,如果是跨机房,分组还的规划出地区及机房标识。如阿里集团的做法:“appname+IP地址+环境标识+机房标识”,但自动化出来的机器名大多只做到了“appname+IP标识+机房标识”。

2.1.2 集群节点的主机名及IP地址规划

表1.2集群节点的主机名及IP地址规划

服务器说明

外网IP eth0

VIP

内网 eht1

名称规划

域名规划

反向代理服务01

10.0.0.3

10.0.0.5
lb.lzbbg.cn

172.16.1.3

lb-haproxy-01

lb01.lzbbg.cn

反向代理服务02

10.0.0.4

172.16.1.4

lb-haproxy-02

lb02.lzbbg.cn

nginx web01

 

 

172.16.1.10

web-lnmp-01

web01.lzbbg.cn

http web02

 

 

172.16.1.11

web-lamp-02

web02.lzbbg.cn

NFS存储服务

 

172.16.1.32
nfs.lzbbg.cn

172.16.1.30

store-nfs-01

nfs01.lzbbg.cn

rsync备份服务

 

172.16.1.31

store-rsync-01

rsync01.lzbbg.cn

MySQL主数据库

 

172.16.1.52
dbmaster.lzbbg.cn

172.16.1.50

mysql-master-01

dbmaster01.lzbbg.cn

MySQL主热备数据库

 

172.16.1.51

mysql-master-02

dbmaster02.lzbbg.cn

MySQL从服务器

 

 

172.16.1.53

mysql-slave-01

dbslave01.lzbbg.cn

mysql-proxy互为主备

VIP: 172.16.1.56
myproxy_vip56.lzbbg.cn

172.16.1.54

mysql-proxy-01

myproxy01.lzbbg.cn

mysql-proxy互为主备

VIP: 172.16.1.57   myproxy_vip57.lzbbg.cn

172.16.1.55

mysql-proxy-02

myproxy02.lzbbg.cn

Redis 缓存及session共享1

 

172.16.1.63
cache.lzbbg.cn

172.16.1.61

cache-redis-01

cache01.lzbbg.cn

Redis 缓存及session共享2

 

172.16.1.62

cache- redis-02

cache02.lzbbg.cn

监控管理服务

 

 

172.16.1.201

MAGE-monitor-01

monitor.lzbbg.cn

跳板机管理服务

10.0.0.200

 

172.16.1.200

MAGE-jump-01

jump.lzbbg.cn

3  集群节点VIP地址及对应域名解析规划

3.1  集群节点VIP地址及对应域名解析规划

表1.3集群节点VIP地址及对应域名解析规划

服务器VIP说明

VIP

对应域名解析

 

反向代理服务VIP

 

10.0.0.3

download.lzbbg.cn  blog.lzbbg.cn
zabbix.lzbbg.cn phpMyAdmin.lzbbg.cn jpress.lzbbg.cn
企业场景:外网IP通过DNS解析

MySQL主数据库VIP

172.16.1.52

dbmaster_vip.lzbbg.cn

NFS存储服务VIP

172.16.1.32

nfs_vip.lzbbg.cn

myproxy反向代理VIP1

172.16.1.56

myproxy_vip56.lzbbg.cn

myproxy反向代理VIP2

172.16.1.57

myproxy_vip57.lzbbg.cn

Redis 缓存服务VIP

172.16.1.63

cache_vip.lzbbg.cn

3.2  IP地址及主机名规划思路说明

本网站架构集群分为5个功能区域,统一采用C类地址段:(10.0.0.0/24)作为所有外网IP地址段;(172.16.1.0/24)作为内网地址段。5个功能区域IP地址段具体规划如下:

  1. 前端负载均衡代理区域
    外网地址段范围10.0.0.1~10.0.0.3  eth0,内网地址段范围172.16.1.1~172.16.1.9  eth1;
  2. web服务应用区域
    应用范围172.16.1.10~172.16.1.29  eth1,无外网IP;
  3. 存储服务应用区域
    应用范围172.16.1.30~172.16.1.49  eth1,无外网IP;VIP 172.16.1.32(NFS和rsync做keepalived)
  4. 数据库及缓存服务器区域
    MySQL应用范围172.16.1.50~172.16.1.59  eth1,无外网IP;VIP 172.16.1.53(主主做keepalived)
    Redis 缓存应用范围172.16.1.60~172.16.1.69  eth1,无外网IP;目前有两台服务器作为MySQL的前端分布式缓存服务集群(分布式调算法使用一致性哈希算法),每台服务器上均配置2个实例分别做为缓存服务和session共享服务;
  5. 管理服务器应用区域
    IP地址200以后的用作监控管理地址。
    一台监控管理IP172.16.1.201 ,无外网IP,配zabbix和批量管理服务(ssh key或saltstack)。
    一台跳板机服务器外网10.0.0.200内网172.16.1.200,配置的服务为跳板机及VPN。
  6. 所有服务器地址都是有小到大进行规划的,内网和外网的最后8位尽量相同

3.3  架构hosts文件的规则

主机名+域名的方式:

常规:172.16.1.1  lb-haproxy-01  lb01.lzbbg.cn
       VIP: 172.16.1.32 nfs_vip.lzbbg.cn
       网站域名:download.lzbbg.cn zabbix.lzbbg.cn phpMyAdmin.lzbbg.cn jpress.lzbbg.cn blog.lzbbg.cn
       确保每台服务器的hosts文件一致

4 集群节点网络服务规划表

4.1 各集群节点对应的网络服务规划表

表1.4集群节点网络服务规划表

服务器说明

安装服务说明

rsync备份服务说明

1)安装rsync服务软件,提供网络数据远程备份功能,设定备份目录为/backup
2)安装keepalived服务软件,为NFS服务宕机提供热备切换功能
3)开发检查所有服务器备份完整性的脚本,并每天早上8点发邮件给管理员

NFS存储服务器

1)安装NFS服务软件,提供网络文件共享功能,设定目录为/data
2)安装keepalived服务软件,为NFS服务宕机提供热备切换功能
3)安装sersync服务软件,实时同步NFS服务资源到rsync备份服务器


MySQL主数据库

1)安装MySQL服务软件,提供主数据库服务功能
2)安装heardbeat+drbd服务软件,为mysql服务宕机提供热备切换功能
3)配置MySQL主数据库和主热备数据库互为主从复制功能(采用MySQL自身复制功能)
4)开发通用脚本,并通过定时任务把基本数据备份到rsync备份服务器


MySQL主热备数据库

1)安装MySQL服务软件,提供主数据库服务功能
2)安装keepalived服务软件,为mysql服务宕机提供热备切换功能
3)配置MySQL主热备数据库和主数据库互为主从复制功能,主库宕机是自动接管主库提供服务
4)开发通用脚本,并通过定时任务把基本数据备份到rsync备份服务器


MySQL从数据库

1)安装MySQL服务软件,提供主数据库服务功能,只用于读取数据库
2)配置MySQL多实例(总共3个实例),工作中一台服务可配2~4个实例
3)人为对多个MySQL实例分工,第3个实例作为数据库备份使用
4)开发通用脚本,并通过定时任务把数据库全量和增量数据定时备份到rsync备份服务器上


mysql-proxy主

1)安装mysql-proxy服务软件(测试可以用mysql-proxy,工作中多为开发改造程序实现读写分离),提供web程序对数据库的读写分离功能
2)安装keepalived服务软件,为mysql-proxy服务宕机提供热备切换功能

mysql-proxy热备

同mysql-proxy主一样功能

Redis 缓存及session共享1

1)安装Redis 服务软件
2)通过不同的端口启用2个实例,分别用于数据库缓存及session会话共享
3)通过程序实现一次性哈希算法调度访问Redis 缓存服务集群
4)如果需要集群可以才让Redis

Redis 缓存及session共享2

同Redis 缓存及session共享1一样

 

 

 

nginx web01

1)安装nginx服务软件,作为web服务器使用
2)安装PHP服务软件,作为动态web服务器使用,负责处理PHP动态页面请求
3)部署bbs、cms、blog三个开源PHP网站产品,模拟搭建类似51CTO的IT咨询平台的部分内容
4)开发通用脚本,并通过定时任务把访问日志、网站程序备份到rsync备份服务器上
5)开发通用脚本,并通过定时任务把基础数据备份到rsync备份服务器上
6)把网站产品所有用户上传的资源目录挂载到后端NFS存储服务器对应的目录上,从而让用户上传的资源文件直接放到NFS共享服务器上
7)配置PHP配置文件php.ini,将所有的集群节点的session会话数据都保存到同一个Redis 服务中

nginx web02

同nginx web01一样


反向代理及负载均衡服务器01

1)安装nginx服务软件,为后端的web服务提供负载均衡及反向代理功能,可以配置成和反向代理服务02互为主主模式,只不过各自为不同的业务提供不同的对外服务功能
2)安装keepalived服务软件,为两台负载及反向代理服务器提供高可用功能
3)配置通用备份脚本,并通过定时任务把基础重要的数据备份到rsync备份服务器上

反向代理及负载均衡服务器02

1)安装nginx服务软件,为后端的web服务提供负载均衡及反向代理功能,可以配置成和反向代理服务01互为主主模式,只不过各自为不同的业务提供不同的对外服务功能
2)3)“和反向代理及负载均衡服务器01”一样

监控管理服务

安装zabbix服务,监控所有服务器及服务器上的服务,并实现画趋势图及邮件短信报警

跳板机管理服务

无网络情况下可以提供其他机器yum及下载服务

1)光盘安装系统。创建yum仓库,file类型只提供本机安装cobbler
2)安装cobbler
3)配置跳板机脚本,实现跳板机管理功能,所有人员通过跳板机管理其他服务器,所有操作都会被审计记录。跳板机和审计功能可以通过开源软件实现,或者自己利用脚本实现
4)所有服务器不提供密码认证登录,只能从跳板机通过密匙登录
5)配置VPN服务,作为网站集群的远程管理入口
6)对跳板机SSH监听本地内网IP,只要不是通过VPN拨号的一律禁止采用SSH登录服务器,加强服务器安全

5 集群节点服务应用的目录规划

表1.5集群节点服务应用的目录规划表

服务器说明

目录结构

目录结构说明


通用初始化目录结构

/server/cron_scripts
/server/tools_scripts
/apps/versions
/apps/links
/backup

存放定时任务脚本的目录
存放工具类脚本目录
软件程序的安装目录
软件程序的软连接目录
服务器本地数据临时备份目录

web服务

/webCodes/
/app/logs/

web服务站点目录,下面包含www、bbs、blog目录
web服务的访问日志存放目录

rsync备份服务器

/backup/upload/
/backup

NFS服务器实时无差异同步目录
所有数据备份目录,不同服务器上传的备份数据目录以IP地址或该服务器的主机名命名

NFS存储服务

/nfs_data

NFS服务器共享存储的大目录

6 集群服务搭建部署详细规划设计说明

表1.6网站集群服务最佳部署顺序

安装最佳排序

服务器

01

跳板机管理服务(自动化安装先装,非自动化无所谓)

02

监控及批量管理服务(批量安装,加入监控)

03

rsync存储及备份服务

04

NFS存储服务

05

MySQL主数据库

06

MySQL主热备数据库

07

MySQL从数据库

08

Nginx web01

09

Nginx web02

10

反向代理服务01

11

反向代理服务02

提示: 从后往前为备份、存储、数据库的方式部署为佳。

7 集群服务搭建部署详细规划设计说明

7.1 集群所有服务器节点的基础优化设置

  1. sudo 授权添加用户
  2. 隐藏系统版本信息issue  issue.net
  3. sshd
  4. openfile
  5. hosts
  6. chkconfig boot
  7. sync system time
  8. sysctl.conf
  9. IPtables
  10. hostname

 

posted on 2018-12-27 21:55  薄荷冰  阅读(1393)  评论(0)    收藏  举报