案例
本案例设计采用四层模式实现,主要分为前端反向代理层,网络层,数据库缓存层和数据库层。前端反向代理层采用主备模式,web层采用集群模式,数据库缓存层采用主备模式,数据库层采用主从模式。
拓扑图如下。实线是正常情况下的数据流向连接,虚线是异常情况下的数据流向连接
前端反向代理服务器配置
<代码>安装带有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架构