模拟百万PV架构
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,案例本案例设计采用四层模式实现,主要分为前端反向代理层,web层,数据库缓存层和数据库层。前端反向代理层采用主备模式,web层采用集群模式,数据库缓存层采用主备模式,数据库层采用主从模式。拓扑图如下。
千家信息网最后更新 2026年11月01日模拟百万PV架构
案例
本案例设计采用四层模式实现,主要分为前端反向代理层,web层,数据库缓存层和数据库层。前端反向代理层采用主备模式,web层采用集群模式,数据库缓存层采用主备模式,数据库层采用主从模式。
拓扑图如下。 实线是正常情况下的数据流向连接,虚线是异常情况下的数据流向连接
前端反向代理服务器配置
安装带有nginx rpm软件包的源rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/\nginx-release-centos-7-0.el7.ngx.noarch.rpmyum install keepalived nginx -yvim /etc/keepalived/keepalived.confglobal_defs { route_id NGINX_HA ##主从服务器的ID不同}vrrp_script nginx { ##设置脚本 script "/opt/shell/nginx.sh" interval 2 ##间隔2秒}vrrp_instance VI_1 { state MASTER ##主为MASTER,从为BACKUP 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.x.x ##设置内网虚拟IP和外网虚拟IP x.x.x.x }}mkdir /opt/shellvi /opt/shell/nginx.sh ##创建脚本,此脚本的目的是当keepalived启动的时候,nginx同时启动,且如果不关闭keepalived,nginx同样无法关闭#!/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.servicefichmod +x /opt/shell/nginx.sh ##给予脚本运行权限接下来配置NGINX 的调度功能vim /etc/nginx/nginx.conf在http中添加 upstream tomcat_pool { server 192.168.x.x:8080; server 192.168.x.x:8080; ##两台tomcat的地址 ip_hash; #会话稳固功能,如果不用这条,需要另外做session共享 } server { listen 80; server_name 192.168.x.x; #虚拟IP location / { proxy_pass http://tomcat_pool; proxy_set_header X-Real-IP $remote_addr; } }nginx -t -c /etc/nginx/nginx.conf ##测试配置文件语法systemctl start keepalived.service ##nginx也会被打开tomcat配置(两台相同)
tar xf apache-tomcat-8.5.23.tar.gztar xf jdk-8u144-linux-x64.tar.gzcp -rv jdk1.8.0_144/ /usr/local/javavi /etc/profileexport 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输入 java -version 能看到版本号说明完成cp -r apache-tomcat-8.5.23 /usr/local/tomcat8ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup ##启动tomcatln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown ##关闭tomcatnetstat -anpt | grep 8080## 看到8080 服务开启成功通过客户端访问 http://192.168.x.x:8080 ##测试默认测试页是否正常显示vi /usr/local/tomcat8/webapps/ROOT/index.jsp ##修改默认网页内容输入调度服务器(虚拟IP) 地址,测试两台节点服务器的调度情况。vim /usr/local/tomcat8/conf/server.xml在下插入 ##日志调试信息debug为0表示信息越少,docBase指定访问目录 mysql安装
由于是模拟架构,本篇mysql用mariadb代替yum install -y mariadb-server mariadbsystemctl start mariadb.servicesystemctl enable mariadb.servicenetstat -anpt | grep 3306mysql_secure_installation ##常规安全设置----------导入数据库-----------mysql -u root -p < xxxx.sql ##导入商城网站数据库mysql -uroot -pshow databases; ##确定导入成功GRANT all ON xxxx.* TO 'root'@'%' IDENTIFIED BY 'abc123'; ##给数据库授权flush privileges; ##刷新数据 ----------------以下在两台tomcat节点做----------------tar xf SLSaleSystem.tar.gz -C/usr/local/tomcat8/webapps/cd /usr/local/tomcat8/webapps/SLSaleSystem/WEB-INF/classesvi jdbc.properties ##修改数据库IP地址是VRRP的虚拟IP,以及授权的用户名root和密码abc123。------------网站测试------http://192.168.x.x:8080/ ##默认的用户名admin 密码:123456http://192.168.x.x ##输入虚拟地址测试登录,并且关闭主再测试登录redis集群
yum install redis -yvi /etc/redis.confbind 0.0.0.0 ##修改systemctl start redis.serviceredis-cli -h 192.168.x.x -p 6379 ##测试连接192.168.x.x:6379> set name test ##设置name 值是test192.168.x.x:6379> get name ##获取name值在从服务器上266 slaveof 192.168.x.x 6379 ##主服务器的IP不是虚拟IPredis-cli -h 192.168.x.x -p 6379 ##登录从,如能成功获取主上设置的值,说明主从同步成功192.168.x.x:6379> get name"test"-------------配置商城项目中连接redis的参数---vi /usr/local/tomcat8/webapps/SLSaleSystem/WEB-INF/classes/applicationContext-mybatis.xml ##虚拟IP ------------以下测试缓存效果-----redis-cli -h 192.168.x.x -p 6379 ##虚拟IP192.168.175.188:6379> infokeyspace_hits:1 或者 keyspace_misses:2 ##关注这个值,命中数和未命中数登录商城,然后反复点击需要数据库参与的操作页面,再回来检查keyspace_hits或者keyspace_misses: 值变化。---------以下配置redis集群主从切换---只在主服务器是操作--------vi /etc/redis-sentinel.confprotected-mode nosentinel monitor mymaster 192.168.x.x 6379 1 ##1表示1台从 注意:修改sentinel down-after-milliseconds mymaster 3000 ##故障切换时间单位是毫秒service redis-sentinel start ##启动集群netstat -anpt | grep 26379redis-cli -h 192.168.x.x -p 26379 info Sentinel ##查看集群信息mysql 主从
在主 和 从mysql服务器上vim /etc/my.cnf[mysqld]binlog-ignore-db=mysql,information_schemacharacter_set_server=utf8log_bin=mysql_binserver_id=1 ## 主从服务器的 server_id 不相同log_slave_updates=truesync_binlog=1systemctl restart mysqld在 主MYSQL上 为 从服务器授予权限mysql -u root -pgrant replication slave on *.* to 'replication'@'192.168.x.%' identified by '123456';show master status; +-------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------+----------+--------------+------------------+| master-bin.000002 | 335 | | |+-------------------+----------+--------------+------------------+在从服务器上mysql -u root -pchange master to master_host='192.168.x.x',master_user='replication',master_password='123456',master_log_file='mysql_bin.000002',master_log_pos=335;start slave;show slave status \G; Slave_IO_Running: Yes Slave_SQL_Running: Yes## 出现这两条YES 则说明 MYSQL主从复制完成全部服务安装完成
本案例数据库的架构简单了一点,配置文件也是默认的没有经过优化,如果数据库的压力很大,可以考虑优化,也可以使用读写分离架构,或者采用多主多从模式。
数据
服务
数据库
服务器
测试
主从
配置
模式
脚本
集群
成功
地址
登录
架构
信息
前端
商城
情况
缓存
代理
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
美国互联网保险保险科技
科技与互联网
世界互联网领先科技成果
互联网科技论坛
上海卓越科技 互联网
镁科技互联网资讯平台
联恩商钥互联网科技有限公司
华脉科技工业互联网产品
互联网实体化科技化
杭州壁岐互联网科技有限公司
洛阳共同富裕互联网科技有限公司
玉溪新华互联网科技好不好
工业互联网山东科技大学
互联网与数字科技关系
陕西云淼互联网科技公司
35岁以上互联网科技行业
唯美互联网科技
张家口科技产业互联网平台
保山互联网科技靠谱吗
数字互联网科技有限公司
广州淘业互联网络科技
互联网科技垄断
万易互联网科技
嘟嘟瓜互联网科技
深圳卡尔迅互联网科技有限公司怎么样
互联网科技中介
电子科技大学互联网创业大赛
互联网科技研发水平
明优互联网科技有限公司
黑科技 体验场景 互联网大会