目录
项目方案设计
服务器本身硬件需求:
1. 处理器 (CPU)
2. 内存 (RAM)
3. 存储 (硬盘)
4. 网络
5. 其他注意事项
注意:这些配置建议是基于一般情况下的最佳实践。
为啥是这个配置?
乞丐版的硬件配置,如下:
1. 网络拓扑结构
2. 数据库架构
3. 负载均衡架构
3.1 HAProxy 配置
4. Web 服务架构
4.1 Nginx 配置用于静态资源
4.2 Tomcat 配置用于动态资源
5. 高可用性配置
5.1 Keepalived 配置
5.2 MHA 配置
6. 请求流程
7. 维护和监控
总结
注意 :企业不可能全用,但我这份融合了大部分比,较全能化,跟着搭建完,无论企业让搭建那种,你都会,这份实验主要目的是,学技术并将所有融汇贯通,就跟我前面的大数据集群平台搭建开发文档一样,其实实际,有可能只用一个中间件,但万一让你融汇贯通呢,平常可以说不会来摸鱼,关键升职的时候,,真的需要你顶上去的时候,你总不能没有吧,这就是你的压箱底的技术。
项目目的:
做一个web服务,使用7个centos7作为服务器主机,主机名和IP分别为:z1,z2,n1,n2,t1,t2,k1 . 数据库使用MySQL 2主4从复制配置和读写分离配置 ,MySQL主机在z1和z2并进行MySQL写的操作;MySQL两从在n1和n2 以及t1和t2上并进行读的操作. z1和z2作为服务器,z1和z2使用Haproxy来搭建七层负载均衡调节和做反向代理,z1和z2将静态内容的多个访问请求平均分发给 n1,n2,,z1和z2将动态内容的多个访问请求平均分发给 t1,t2 n1和n2使用nginx 配置web 服务和正向代理用来处理精态资源 ,t1和t2使用tomcat配置web 服务用来处理动态资源.前端网页中,静态资源均在 t1和t2上面,浏览器访问项目模拟网站网址静态资源会被重定向到slave1和slave2, 动态资源均在t1和t2上面,浏览器访问项目模拟网站网址动态态资源会被重定向到t1和t2来处理. 另外,在k1主机上配置keepalived ,使得z1和z2主机在MySQL双主和Haproxy负载均衡方面互为主主高可用;在k1主机上配置keepalived ,使得n1和n2 在MySQL从从以及nginx 配置web 服务和正向代理处理静态资源方面互为高可用 ;在k1主机上配置MHA,使得t1和t2在使用tomcat配置web 服务用来处理动态资源方面互为高可用.
根据架构需求的做一份优化和设计方案,旨在实现高可用的 Web 服务基础设施。该方案主要涵盖了数据库、负载均衡、代理服务器和服务的高可用性配置,确保系统的稳定性和可扩展性
不要慌,实验环境可以用乞丐版,
Web服务架构,服务器的硬件配置需求将取决于预期的负载、用户量、数据量以及服务的性能要求。以下是一个基本的硬件配置建议,可以根据实际需求进行调整。
- z1 和 z2 (MySQL 主服务器):至少需要双核处理器,推荐使用四核或更高,以支持高并发的数据库操作。
- n1 和 n2 (MySQL 从服务器及Nginx):至少双核处理器,考虑到Nginx处理静态资源的能力,推荐使用四核或更高。
- t1 和 t2 (Tomcat 服务器):至少双核处理器,推荐使用四核或更高,以支持处理动态资源请求。
- k1 (Keepalived 服务器):至少双核处理器,因为Keepalived主要负责监控和故障转移,负载相对较低。
- z1 和 z2 (MySQL 主服务器):至少8GB RAM,推荐16GB或更多,以确保数据库操作的流畅性。
- n1 和 n2 (MySQL 从服务器及Nginx):至少8GB RAM,推荐16GB或更多,确保Nginx和MySQL从服务器的性能。
- t1 和 t2 (Tomcat 服务器):至少8GB RAM,推荐16GB或更多,以支持动态资源的处理。
- k1 (Keepalived 服务器):至少4GB RAM,因为Keepalived对内存的需求相对较低。
- 所有服务器:建议使用SSD硬盘以提高读写速度,尤其是对于数据库服务器和Web服务器来说,SSD可以显著提升性能。
- z1 和 z2 (MySQL 主服务器):需要足够的存储空间来存储数据库数据,具体大小取决于数据量大小,建议至少100GB起。
- n1 和 n2 (MySQL 从服务器及Nginx):同样需要足够的存储空间,尤其是如果它们也用于存储静态资源。
- t1 和 t2 (Tomcat 服务器):根据应用需求,至少需要足够的存储空间来存放Web应用和动态资源。
- k1 (Keepalived 服务器):存储需求相对较低,但应确保有足够的空间来存储Keepalived的配置文件。
- 所有服务器应具备至少1Gbps的网络接口,以支持高速的数据传输。
- 确保网络配置支持冗余和负载均衡,以提高整体网络的稳定性和可用性。
- 冗余电源:对于关键服务器(如数据库服务器),建议使用冗余电源以提高可靠性。
- 冷却系统:确保服务器机房有良好的冷却系统,以防止硬件过热。
- 备份解决方案:定期备份数据库和应用数据,以防数据丢失。
因为这是在我电脑上进行的最佳实践,嗯哼。
我电脑是20核处理器,40G内存(24G真实内存加16G虚拟内存),1.5T的空间。所以,我上面是用了14核,26G内存(14G真实内存加12G虚拟内存) 1T真实存储,作为基础,虚拟机设置了240G空间,2-3G内存,哪一个机器卡顿,后期再调高。
其实我已经在尽量模拟真实环境,跟某公司里的环境很像了,大概是10-17:1缩小版吧。不过公司里的空间更大,而且因为日活和总量,存量,访问量业务需求等等方面的不同,配置也会不太一样的,有些删减或精简一些架构,有些则是将三个(处理器,内存,服务器空间)中某个进行加装配置处理。
实际部署时,其实是好多倍,比如,我曾经通过一些朋友和同行,看过几个国企和某某的服务器配置文档,不过保密这个具体不敢说,他们就是这个配置的15-40倍吧,至于为啥,懂得都懂。其实的话应该根据实际的业务需求、预算限制和性能测试结果来调整硬件配置,如果预期流量和数据量很大,可能需要更高规格的硬件配置,大概在以上配置的基础是乘以8,中小企业是8-17倍。大企业的话不太清楚。。。。
我知道有些人会慌,不过别担心,我之前测试了上云服务测试过乞丐版配置 如下:
处理器每个1核,内存每台分配1G ,虚拟机所在磁盘的真实可用空间不能低于140G,其实最好240G起步,虚拟机安装时设为弹性存储,设80G空间。
我研究了的乞丐版配置,不过可能会有bug:偶尔某些服务起不来那就杀死进程重启,这个我也没办法啦,抱歉;
在整个方案中,我们将使用7台CentOS 7服务器,用于构建一个高可用性和负载均衡的Web服务架构。以下是各主机的配置和角色:
| 主机 | 角色 | IP 地址 | 主机名 |
|-------|---------------- -|---------------|--------|
| z1 | MySQL 主 | 192.168.1.1 | z1 |
| z2 | MySQL 主 | 192.168.1.2 | z2 |
| n1 | MySQL 从、Nginx | 192.168.1.3 | n1 |
| n2 | MySQL 从、Nginx | 192.168.1.4 | n2 |
| t1 | Tomcat | 192.168.1.5 | t1 |
| t2 | Tomcat | 192.168.1.6 | t2 |
| k1 | Keepalived | 192.168.1.7 | k1 |
2.1 MySQL 主从复制
主数据库 :
z1 和 z2 配置成MySQL双主,支持写操作。
按照MySQL的主主复制配置,确保 z1 和 z2 之间的数据一致性。
从数据库 :
n1 和 n2 作为 z1 的从库,t1 和 t2 作为 z2 的从库。
从库配置为读取主库的数据,以实现读写分离。
数据库配置步骤
主库配置 (在z1和z2上):
[mysqld]
server-id=1 - 对于 z1
log_bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=1
[mysqld]
server-id=2 - 对于 z2
log_bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=2
从库配置 (在n1、n2、t1和t2上):
[mysqld]
server-id=3 - 对于 n1
relay-log=relay-bin
复制设置:
CHANGE MASTER TO MASTER_HOST='z1', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=0;
START SLAVE;
使用 z1 和 z2 配置 HAProxy,提供对来自客户端的请求的负载均衡和反向代理。
HAProxy 配置文件示例 :
frontend http_front
bind *:80
acl is_static path_beg /static /
use_backend static_servers if is_static
use_backend dynamic_servers if !is_static
backend static_servers
balance roundrobin
server n1 192.168.1.3:80 check
server n2 192.168.1.4:80 check
backend dynamic_servers
balance roundrobin
server t1 192.168.1.5:8080 check
server t2 192.168.1.6:8080 check
在 n1 和 n2 上安装并配置 Nginx,处理静态资源请求。
Nginx 配置示例 :
server {
listen 80;
server_name n1; # 或 n2
location /static/ {
alias /path/to/static/; # 静态资源目录
}
}
在 t1 和 t2 上配置 Tomcat,处理动态资源。
确保 Tomcat 启动在8080端口,配置 webapps 部署动态资源。
在 k1 上配置 Keepalived,以实现 z1 和 z2 的高可用性。
Keepalived 配置示例 (在z1和z2上):
vrrp_instance VI_1 {
state MASTER
interface eth0 # 根据具体网络接口
virtual_router_id 51
priority 100 # z1: 100, z2: 90
advert_int 1
authentication {
auth_type PASS
auth_pass your_pass
}
virtual_ipaddress {
192.168.1.100
}
}
在 k1 上配置 MHA(Master High Availability)以实现 t1 和 t2 的高可用性。
安装 MHA Manager 和 MHA Node。
配置 MHA 管理器,检测 t1 和 t2 的健康状态,并实现自动主机切换。
1. 用户请求 :
用户请求首先通过 HAProxy(在 z1 或 z2)接收。
2. 静态资源处理 :
HAProxy 将请求中相关的静态资源转发至 n1 或 n2 的 Nginx 进行处理。
3. 动态资源处理 :
HAProxy 将动态资源请求转发至 t1 或 t2 的 Tomcat 进行处理。
4. 数据库操作 :
写操作指向 MySQL 双主(z1 或 z2),而读操作由 n1、n2、t1 和 t2 的从库处理。
监控工具 :使用 Prometheus +Grafana可视化工具 监控整个系统的健康状态。
日志管理 :配置 ELK(Elasticsearch、Logstash 和 Kibana)管理和分析日志。
通过上述架构设计及其实施,您将获得一个高可用性、可动态扩展的Web服务解决方案。该方案确保了数据库的高可用性以及负载均衡的有效实施,同时提供静态和动态资源的分发与管理。为了满足实际需求,可以根据规模进行进一步的细化和扩展。
写文不易 给我点点关注 和点点赞 点点收藏吧
。。。。。主页http:// https://blog.csdn.net/qq_61414097