搭建百万 PV 网站架构
发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,案例概述 :采用四层模式实现,主要分为前端反向代理层、Web层、数据库缓存层和数据库层前端反向代理层层采用主备模式,Web层采用群集模式,数据库缓存层采用主备模式,数据库层采用主从模式。为了更接近生产
千家信息网最后更新 2024年11月22日搭建百万 PV 网站架构
案例概述 :
- 采用四层模式实现,主要分为前端反向代理层、Web层、数据库缓存层和数据库层前端反向代理层层采用主备模式,Web层采用群集模式,数据库缓存层采用主备模式,数据库层采用主从模式。
- 为了更接近生产环境,采用两台实体机部署此次环境,将前端反向代理层、数库缓存层、数据库层部署在实体机上,只将Web层部署在KVM虚拟机当中。同时将每一层都做了高可用架构,保证业务的稳定性。
百万pv网络架构 :
ps:实现是正常情况数据流向,虚线是异常情况下的数据流向
案例环境 :
主机名 | IP地址 | 系统 | 用途 |
---|---|---|---|
master | 192.168.217.128 | CentOS 7.3 | 反向代理机、redis主缓存、mysql主数据库 |
backup | 192.168.217.129 | CentOS 7.3 | 反向代理机、redis从缓存、mysql从数据库 |
tomcat-node 1 | 192.168.217.130 | CentOS 7.3 | web |
tomcat-node 2 | 192.168.217.131 | CentOS 7.3 | web |
部署 master :
搭建 Nginx 反向代理:
1.安装源 :
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/\nginx-release-centos-7-0.el7.ngx.noarch.rpm # 安装带有nginx rpm软件包的源 主从都要做
2.配置 Nginx 反向代理 :
yum install -y nginx
vi /etc/nginx/nginx.conf # 在 http 添加http { upstream tomcat_pool { server 192.168.217.130:8080; #真实节点 web server 192.168.217.131:8080; ip_hash; #会话稳固功能,否则无法通过vip地址登陆 } server { listen 80; server_name 192.168.175.188; #虚拟出的IP location / { proxy_pass http://tomcat_pool; proxy_set_header X-Real-IP $remote_addr; } } include /etc/nginx/mime.types; .......nginx -t -c /etc/nginx/nginx.conf //测试配置文件语法
搭建 keepalived :
1.配置 keepalived :
yum install -y keepalived
vim /etc/keepalived/keepalived.conf ! Configuration File for keepalivedglobal_defs { route_id NGINX_HA}vrrp_script nginx { #添加脚本路径 script "/opt/shell/nginx.sh" interval 2 #每隔两秒执行一次}vrrp_instance VI_1 { state MASTER #活跃服务器 interface ens33 #网卡 virtual_router_id 51 priority 100 #优先级 advert_int 1 authentication { auth_type PASS auth_pass 1111}track_script { #调用脚本 nginx}virtual_ipaddress { 192.168.217.188 #虚拟IP }}
2.编写 Nginx 脚本 :
mkdir /opt/shellvim /opt/shell/nginx.sh#!/bin/bashk=`ps -ef | grep keepalived | grep -v grep | wc -l`if [ $k -gt 0 ];then /bin/systemctl start nginx.serviceelse/bin/systemctl stop nginx.servicefi# 以上意思为开启 keepalived 会自动开启 Nginxchmod +x /opt/shell/nginx.sh
systemctl start keepalived.service #开启服务
配置 backup :
和 master 配置除 keepalived 稍微不同,其他相同 :
vim /etc/keepalived/keepalived.conf .......vrrp_instance VI_1 { state BACKUP #修改备份模式 interface ens33 virtual_router_id 51 priority 90 #确定主从......
systemctl start keepalived.service #开启服务
测试 :
在keepalived服务开启状态下,关闭nginx做测试,发现每隔2秒nginx又会自动启用
关闭 主keepalived ,测试主从漂移地址切换,使用 ip addr 查看 VIP 绑定位置
部署 web 服务 :
1.安装 java 环境:
tar xf jdk-8u144-linux-x64.tar.gz -C /optcp -rv /opt/jdk1.8.0_144/ /usr/local/java #移动重命名
vim /etc/profile #添加java环境export JAVA_HOME=/usr/local/javaexport JRE_HOME=/usr/local/java/jreexport PATH=$PATH:/usr/local/java/binexport CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/libsource /etc/profile #刷新环境
java -version #证明java环境安装成功java version "1.8.0_144"
2.安装 tomcat :
tar xf apache-tomcat-8.5.23.tar.gz -C /optcp -r /opt/apache-tomcat-8.5.23 /usr/local/tomcat8 #移动重命名
ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup #开启tomcatln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown #关闭tomcattomcatup #开启netstat -anpt | grep 8080 #查看服务是否开启
3.测试 :
http://192.168.217.130:8080/ #测试默认测试页是否正常显示http://192.168.217.131:8080/访问 http://192.168.217.188 #修改web不同首页,测试keepalived和反向代理是否成功
vim /usr/local/tomcat8/webapps/ROOT/index.jsp #首页位置
部署 master 和 backup 数据库 :
yum install -y mariadb-server mariadbsystemctl start mariadb.service systemctl enable mariadb.servicenetstat -anpt | grep 3306mysql_secure_installation #常规安全设置,测试可以省略。mysql -uroot -p < slsaledb-2014-4-10.sql #导入SL商城数据mysql -uroot -pshow databases; #查看有没有 slsaledb 数据库GRANT all ON slsaledb.* TO 'root'@'%' IDENTIFIED BY 'abc123'; #授权flush privileges; # 刷新
部署 web 服务器 :
1.添加
cd /usr/local/tomcat8/conf/vim server.xml #跳到148行尾,在Host name下新增 #日志调试信息debug为0表示信息越少,docBase指定访问目录# SLSaleSystem 为webapps目录下的源码包
tar xf SLSaleSystem.tar.gz -C /usr/local/tomcat8/webapps/ #解压商城的源码包cd /usr/local/tomcat8/webapps/SLSaleSystem/WEB-INF/classes #移动到 webapps下vim jdbc.properties #修改数据库IP地址是VRRP的虚拟IP,以及授权的用户名root和密码abc123。
2.网站测试,进入SL商城 :
http://192.168.217.130:8080/ #默认的用户名admin 密码:123456http://192.168.217.131:8080/http://192.168.217.188 #输入虚拟地址测试登录,并且关闭主再测试登录
部署 master :
1.在 redis 缓存主机配置 :
yum install -y epel-release #安装epel源yum install redis -y # 安装 redis 缓存服务vim /etc/redis.conf #修改配置文件bind 0.0.0.0systemctl start redis.service #开启服务netstat -anpt | grep 6379redis-cli -h 192.168.217.128 -p 6379 #本地测试连接192.168.217.128:6379> set name test #创建name 值是test192.168.217.128:6379> get name #查看name值
2.配置 redis 缓存从机配置 :
yum install -y epel-release #安装epel源yum install redis -y # 安装 redis 缓存服务vim /etc/redis.conf #修改配置文件bind 0.0.0.0slaveof 192.168.217.128 6379 #主服务器的IP不是虚拟IP 第266行systemctl start redis.service #开启服务
redis-cli -h 192.168.217.129 -p 6379 //登录从,获取值,成功说明主从同步成功192.168.217.129:6379> get name #如果能查看到 ,说明同步成功
部署 web :
配置商城项目中连接redis的参数 :
vim /usr/local/tomcat8/webapps/SLSaleSystem/WEB-INF/classes/applicationContext-mybatis.xml 47 行 #修改虚拟IP 48
部署 master :
1.测试缓存效果 :
redis-cli -h 192.168.217.188 -p 6379192.168.175.188:6379> infokeyspace_hits:1 或者 keyspace_misses:0 #关注这个值,命中数和未命中数#登录商城,然后反复点击需要数据库参与的操作页面,再回来使用info 检查keyspace_hits或者keyspace_misses: 值变化。
2.配置redis集群主从切换(只在主服务器是操作):
redis-cli -h 192.168.217.128 info Replication //获取当前服务器的角色vim /etc/redis-sentinel.conf17 protected-mode no #开启68 sentinel monitor mymaster 192.168.175.128 6379 1 #1表示1台从 注意:修改98 sentinel down-after-milliseconds mymaster 3000 #故障切换时间单位是毫秒systemctl restart redis-sentinel.service //启动集群netstat -anpt | grep 26379redis-cli -h 192.168.217.128 -p 26379 info Sentinel //查看集群信息
3.验证主从切换 :
systemctl stop redis.service #关闭主缓存服务redis-cli -h 192.168.175.128 -p 26379 info Sentinel #发现主变成了129 稍微等下 在master查看
4.验证数据同步情况 :
redis-cli -h 192.168.217.129 -p 6379 #进入从缓存服务器192.168.217.129:6379> set name2 test2 #创建OK192.168.217.129:6379> get name2"test2"systemctl start redis #把主缓存服务启动redis-cli -h 192.168.217.128 -p 6379 #进入主缓存服务器192.168.217.128:6379> get name2 #查看"test2"
部署 master 和 backup 的mysql主从 :
1.编辑配置文件 :
vim /etc/my.cnf #[mysqld]下添加binlog-ignore-db=mysql,information_schemacharacter_set_server=utf8log_bin=mysql_binserver_id=1 #主从id不同log_slave_updates=truesync_binlog=1
vim /etc/my.cnf # mysql从服务器 #在[mysqld]下添加 server_id=2
systemctl restart mariadb.service #重启数据库
2.在 master 查看授权 :
mysql -u root -pshow master status; #记录日志文件名称和偏移量位置值grant replication slave on *.* to 'rep'@'192.168.175.%' identified by '123456'; #授权flush privileges; #刷新
3.在 backup 授权 :
mysql -u root -pchange master to master_host='192.168.217.128',master_user='rep',master_password='123456',master_log_file='mysql_bin.000001',master_log_pos=245;start slave; #开启show slave status; #查看 Slave_IO_Running: Yes #成功 Slave_SQL_Running: Yes
4.测试 :
在主数据库创建数据库,在从数据库查看。
数据
服务
数据库
测试
缓存
配置
主从
服务器
代理
环境
成功
模式
商城
地址
文件
切换
登录
不同
位置
信息
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
什么软件开发自己的题库
网络安全或者设施安全计划
jpde杂志是什么数据库
软件开发和研发是一样吗
网络安全对我国经济发展的影响
金牌网吧服务器
数据库课程评价
做软件开发好累
网络安全培训真实现状
网络安全班会演讲
奉贤区销售软件开发联系人
软件开发试题答案
社区春节期间网络安全部署会
数据库查询对象
mq 服务器
我的世界创建空岛服务器
c连接数据库进行增加
咔哈网络技术有限公司
万物互联和网络安全
网络安全法规定关键基础设施的
天津服务器托管社区云服务器
服务器怎么更改网络设置
建立数据库选择什么样的工具软件
网络安全信息安全委员会
我不学习数据库用英语怎么说啊
电力信息通信网络安全
中国工业大学网络安全专业
吃鸡怎么换回原来的服务器
华为信息与网络技术学院电话
北京标准网络技术服务口碑推荐