模拟百万PV架构
发表于:2024-11-15 作者:千家信息网编辑
千家信息网最后更新 2024年11月15日,案例本案例设计采用四层模式实现,主要分为前端反向代理层,web层,数据库缓存层和数据库层。前端反向代理层采用主备模式,web层采用集群模式,数据库缓存层采用主备模式,数据库层采用主从模式。拓扑图如下。
千家信息网最后更新 2024年11月15日模拟百万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安全错误
数据库的锁怎样保障安全
江苏品牌软件开发销售电话
数据库的查询分析器完整官方版
虎牙网络安全讲座视频
网络安全技能大赛鹤壁
联想服务器的产地
黑马网络安全学院
境外企业数据库的好处
数据库排他设计
网络安全概念前十名股票
网络安全生成密码字典
网上免费学习网络安全
网络安全漏洞证书
河源软件开发有哪些
输入对应的服务器网址
网络安全安全检查表
数据库 管理 工具
重庆费用管理软件开发
虹口区网络技术信息
华为4x无法连接服务器
real流媒体服务器
网络安全认证技术的重要性
邮政学院网络技术学院
华讯网络技术有限公司
杭州渗透测试网络安全培训
jsp对数据库的修改密码
郑州mes软件开发
数据库简单查询年龄
破天一剑服务器连接断开
初级网络安全工程师学习
网络安全法总共几章