模拟百万PV架构

  

案例

  

本案例设计采用四层模式实现,主要分为前端反向代理层,网络层,数据库缓存层和数据库层。前端反向代理层采用主备模式,web层采用集群模式,数据库缓存层采用主备模式,数据库层采用主从模式。

  

拓扑图如下。实线是正常情况下的数据流向连接,虚线是异常情况下的数据流向连接
模拟百万PV架构

  

前端反向代理服务器配置

  
 <代码>安装带有nginx rpm软件包的源
  
  rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/\
  nginx -释放- centos - 7 - 0. el7.ngx.noarch.rpm
  
  yum安装keepalive nginx - y
  
  vim/etc/keepalived/keepalived.conf
  global_defs {
  route_id NGINX_HA # #主从服务器的ID不同
  }
  
  vrrp_script nginx{# #设置脚本
  脚本“/opt/壳/nginx.sh”
  间隔2 # #间隔2秒
  }
  
  vrrp_instance VI_1 {
  国家的主人# #主为大师,从为备份
  接口ens33
  virtual_router_id 51
  优先级100 # #优先级,主的高于从
  advert_int 1
  身份验证{
  auth_type通过
  auth_pass 1111
  }
  
  track_script{# #运行脚本
  nginx
  }
  
  virtual_ipaddress {
  192.168.x。x # #设置内网虚拟IP和外网虚拟IP
  x.x.x.x
  }
  }
  
  mkdir/opt/壳
  vi/opt/壳/nginx。sh # #创建脚本,此脚本的目的是当keepalive启动的时候,nginx同时启动,且如果不关闭keepalive, nginx同样无法关闭
  
  # !/bin/bash
  k=' p ef | grep keepalive | grep - v grep | wc - l '
  如果(k gt 0美元);/bin/systemctl开始nginx.service
  其他的/bin/systemctl停止nginx.service
  fi
  
  chmod + x/opt/壳/nginx。sh # #给予脚本运行权限
  
  接下来配置NGINX的调度功能
  vim/etc/nginx/nginx.conf
  
  在http中添加
  
  上游tomcat_pool {
  服务器每个:8080;
  服务器每个:8080;# #两台tomcat的地址
  ip_hash;#会话稳固功能,如果不用这条,需要另外做会议共享
  }
  服务器{
  听80;
  server_name每个;#虚拟IP
  位置/{
  proxy_pass http://tomcat_pool;
  proxy_set_header X-Real-IP remote_addr美元;
  }
  }
  
  nginx - t - c/etc/nginx/nginx.参看# #测试配置文件语法
  systemctl keepalive开始。服务# # nginx也会被打开
   
  

tomcat配置(两台相同)

  
 <代码> tar xf apache-tomcat-8.5.23.tar.gz
  tar xf jdk-8u144-linux-x64.tar.gz
  
  cp房车jdk1.8.0_144//usr/local/java
  
  vi/etc/profile
  
  出口JAVA_HOME=/usr/地方/java
  出口JRE_HOME=/usr/地方/java/jre
  导出路径=$路径:/usr/地方/java/bin
  出口CLASSPATH=?:/usr/地方/java/lib:/usr/地方/java/jre/lib
  
  源/etc/profile # #使系统识别java
  
  输入java - version能看到版本号说明完成
  
  cp - r apache-tomcat-8.5.23/usr/local/tomcat8
  
  ln - s/usr/local/tomcat8/bin/startup.sh/usr/bin/tomcatup # #启动tomcat
  
  ln - s/usr/local/tomcat8/bin/shutdown.sh/usr/bin/tomcatdown # #关闭tomcat
  
  netstat -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
  
  在& lt;主机名=發ocalhost”appBase=皐ebapps”
  unpackWARs=" true " autoDeploy=" true "比;
  下插入
  
  & lt;上下文路径=" " docBase=癝LSaleSystem”可写=" true " debug=" 0 "祝辞& lt;/Context>
  # #日志调试信息调试为0表示信息越少,docBase指定访问目录
   
  

mysql安装

  
 <代码>由于是模拟架构,本篇mysql用mariadb代替
  
  yum安装- y mariadb-server mariadb
  
  systemctl开始mariadb.service
  systemctl启用mariadb.service
  
  netstat -anpt | grep 3306
  
  mysql_secure_installation # #常规安全设置
  
  - - - - - - - - - - -导入数据库- - - - - - - - - - - -
  
  mysql - u root - p & lt;xxxx。sql # #导入商城网站数据库
  
  mysql -uroot - p
  
  显示数据库;# #确定导入成功
  
  格兰特/比;# #虚拟IP
  & lt; constructor-arg值=" https://www.yisu.com/zixun/6379 "/比;
  
  - - - - - - - - - - - -以下测试缓存效果- - - - - -
  redis-cli - h 192.168.x。x - p 6379 # #虚拟IP
  
  192.168.175.188:6379>信息
  
  keyspace_hits: 1或者keyspace_misses: 2 # #关注这个值,命中数和未命中数
  
  登录商城,然后反复点击需要数据库参与的操作页面,再回来检查keyspace_hits或者keyspace_misses:值变化。
  
  - - - - - - - - - - - -以下配置复述,集群主从切换——只在主服务器是操作- - - - - - - - -
  
  vi/etc/redis-sentinel.conf
  
  保护模式不
  哨点监测mymaster 192.168.x。x 6379 1 # # 1表示1台从注意:修改
  哨兵down-after-milliseconds mymaster 3000 # #故障切换时间单位是毫秒
  
  服务redis-sentinel开始# #启动集群
  netstat -anpt | grep 26379
  
  redis-cli - h 192.168.x。x - p 26379信息哨兵# #查看集群信息
  

模拟百万PV架构