热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:大型网站架构

本文由编程笔记#小编为大家整理,主要介绍了大型网站架构相关的知识,希望对你有一定的参考价值。大型网站架构实验目的
本文由编程笔记#小编为大家整理,主要介绍了大型网站架构相关的知识,希望对你有一定的参考价值。



大型网站架构


实验目的



  • 理解百万pv的概念

  • 实验百万pv网站架构


网站架构概述

网站架构一般认为是根据客户需求分析的结果,准却定位网站目标群体,设定网站的整体架构,规划、设计网站栏目及其内容,指定网站开发的流程的顺序,最大限度进行高效资源分配与管理设计


PV

PV(Page View,页面浏览量)即点击量。
对PV的解释是一个访问者在24小时内浏览了多少个页面,同一个访问者重复浏览同哟个页面不重复计PV量


百万PV网站架构实例


实施步骤


(1)前端nginx作为调度,做双机热备

[[email protected] ~]# yum install keepalived -y
[[email protected] ~]# vim /etc/keepalived/keepalived.conf cd
router_id LVS_A #//从改为LVS_B
state MASTER #//从改为BACKUP
interface ens33 #//改为本机网卡名称
priority 100 #//主为100从就要小于100
virtual_ipaddress {
192.168.175.188 #//主和从共同协商出来的IVP
}
[[email protected] ~]# systemctl start keepalived.service #//启动keepalived
[[email protected] ~]# ip addr #//查看虚拟ip240.188有没有生效主删改你有这么一段
inet 192.168.175.188/32 scope global ens33
#从没有那就表明keepalived开启成功

(2)安装nginx代理服务器

[[email protected] nginx-1.12.0]# yum install gcc gcc-c++ zlib-devel pcre-devel -y #//安装编译工具
[[email protected] nginx-1.12.0]# useradd -M -s /sbin/nologin nginx #//创建用户
[[email protected] nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[[email protected] nginx-1.12.0]# make && make install #//让系统能够识别

配置nginx前端调度功能

[[email protected] nginx-1.12.0]# vi /etc/nginx/nginx.conf //在include 上面一行新增
upstream tomcat_pool {
server 192.168.240.132:8080;
server 192.168.240.130:8080;
ip_hash; #会话稳固功能,否则无法通过vip地址登陆
}
server {
listen 80;
server_name 192.168.240.188; #虚拟出的IP
location / {
proxy_pass http://tomcat_pool;
proxy_set_header X-Real-IP $remote_addr;
}
}

-----------以上主从都要做--------------------
在keepalived服务开启状态下,关闭nginx做测试,发现每隔2秒nginx又会自动启用
测试主从漂移地址切换。


(3)安装tomcat

Centos 7.4----OK
---------两台都要做---------
tar xf apache-tomcat-8.5.23.tar.gz
tar xf jdk-8u144-linux-x64.tar.gz
cp -rv jdk1.8.0_144/ /usr/local/java
vi /etc/profile
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export PATH=$PATH:/usr/local/java/bin
export CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/lib
source /etc/profile
java -version
java version "1.8.0_144"
……
……
cp -r apache-tomcat-8.5.23 /usr/local/tomcat8
ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup
ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown
tomcatup
netstat -anpt | grep 8080

//测试默认测试页是否正常显示

http://192.168.240.188:8080/
技术分享图片
http://192.168.175.131:8080/
技术分享图片

vi /usr/local/tomcat8/webapps/ROOT/index.jsp //修改默认网页内容

Server 129!!


http://192.168.175.188/ 输入调度器地址,也就是虚拟地址,测试两台节点的调度情况。
cd /usr/local/tomcat8/conf/
vi server.xml //跳到行尾,在Host name下新增 148

日志调试信息debug为0表示信息越少,docBase指定访问目录

(4)做mysql主从

----使用7.4光盘自带仓库--在主从服务器做------
yum install -y mariadb-server mariadb
systemctl start mariadb.service
systemctl enable mariadb.service
netstat -anpt | grep 3306
mysql_secure_installation //常规安全设置
mysql -uroot -p

----------导入数据库-----------
mysql -u root -p mysql -uroot -p
show databases;
GRANT all ON slsaledb.* 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/classes
vi jdbc.properties //修改数据库IP地址是VRRP的虚拟IP,以及授权的用户名root和密码abc123。

-----------网站测试----------


//默认的用户名admin 密码:123456

http://192.168.240.132:8080/
技术分享图片
http://192.168.240.130:8080/
技术分享图片
//输入虚拟地址测试登录,并且关闭主再测试登录
http://192.168.240.188
技术分享图片

---------解决虚拟地址不能访问的问题------
cd /usr/local/tomcat8/webapps/SLSaleSystem/WEB-INF
vi web.xml
index.jsp //使用相对路径
cp pages/index.jsp /usr/local/tomcat8/webapps/SLSaleSystem/
http://192.168.175.188/index.jsp //输入虚拟地址测试,并且关闭主再测试

(5)----------在主服务器和从服务器上做-----


(1)使用centos7.4 默认源安装

yum install -y epel-release
yum install redis -y
cat /etc/redis.conf | grep -v "^#" | grep -v "^$"
vi /etc/redis.conf
bind 0.0.0.0
systemctl start redis.service
netstat -anpt | grep 6379
redis-cli -h 192.168.240.128 -p 6379 //测试连接
192.168.175.128:6379> set name test //设置name 值是test
192.168.175.128:6379> get name //获取name值

------------从服务器上多如下一行配置------
266 slaveof 192.168.240.128 6379 //主服务器的IP不是虚拟IP
redis-cli -h 192.168.240.129 -p 6379 //登录从,获取值,成功说明主从同步成功
192.168.175.130:6379> get name
"test"

-------------配置商城项目中连接redis的参数---
vi /usr/local/tomcat8/webapps/SLSaleSystem/WEB-INF/classes/applicationContext-mybatis.xml
38
47
48

------------以下测试缓存效果-----
redis-cli -h 192.168.240.188 -p 6379
192.168.175.188:6379> info
keyspace_hits:1 或者 keyspace_misses:2//关注这个值,命中数和未命中数
登录商城,然后反复点击需要数据库参与的操作页面,再回来检查keyspace_hits或者keyspace_misses: 值变化。

---------以下配置redis集群主从切换---只在主服务器是操作--------
redis-cli -h 192.168.240.128 info Replication //获取当前服务器的角色
vi /etc/redis-sentinel.conf
17 protected-mode no
68 sentinel monitor mymaster 192.168.175.128 6379 1 //1表示1台从 注意:修改
98 sentinel down-after-milliseconds mymaster 3000 //故障切换时间单位是毫秒
service redis-sentinel start //启动集群
netstat -anpt | grep 26379
redis-cli -h 192.168.175.128 -p 26379 info Sentinel //查看集群信息

-----------验证主从切换----
在主上
service redis stop
redis-cli -h 192.168.240.128 -p 26379 info Sentinel //发现主变成了130
------验证数据同步情况---
redis-cli -h 192.168.240.129 -p 6379
192.168.175.130:6379> set name2 test2
OK
192.168.175.130:6379> get name2
"test2"
service redis start //把主启动
redis-cli -h 192.168.240.128 -p 6379
192.168.240.128:6379> get name2
"test2"

推荐阅读
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文详细介绍了解决全栈跨域问题的方法及步骤,包括添加权限、设置Access-Control-Allow-Origin、白名单等。通过这些操作,可以实现在不同服务器上的数据访问,并解决后台报错问题。同时,还提供了解决second页面访问数据的方法。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
author-avatar
手机用户2502905117
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有