分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

大型网站架构之百万PV

发布时间:2023-09-06 02:19责任编辑:傅花花关键词:网站架构
简介
  • 网站架构

    网站架构,一般认为是根据客户需求分析的结果,准确定位网站目标群体,设定网站整体架构,规划、设计网站栏目及其内容,制定网站开发流程及顺序,以最大限度地进行高效资源分配与管理的设计。其内容有程序架构,呈现架构,和信息架构三种表现。

  • PV

    PV(Page View,页面浏览量)即点击量,通常意义上说PV的多少是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标。pv的解释是这样的:一个访问者在24小时(0点-23点)内到底看了网站的几个页面。需要注意的是:同一个人浏览网站的同一个页面,不重复计算pv量,点击100次页只算1次。

    百万PV案例

    案例描述:

  • 本次实验设计采用四层模式实现,主要分为前端nginx反向代理层、web层、数据库缓存层和数据库层。前端反向代理层采用主备模式,web层采用集群模式,数据库缓存层采用主备模式,数据库层采用主从模式。
  • 这里为了节约资源,减少资源占用,采用如下模式:将前端反向代理层、数据库缓存层、数据库层部署在两台虚拟机上(一主一备),将web层分别部署在两台虚拟机上(一主一备)。

    案例拓扑:

    注:实线是正常情况下的数据流向连接,虚线是异常情况下的数据流向连接

    案例环境:

    软件包:链接:https://pan.baidu.com/s/1YivUZgSCzpZMLPgvZ-Zobg ???????????????
    提取码:b5hb

主机系统IP地址用途
masterCentOS7192.168.37.128nginx反向代理主机、redis缓存主机、mysql数据主库
backupCentOS7192.168.37.130nginx反向代理备机、redis缓存备机、mysql数据备库
web 1CentOS7192.168.37.131tomcat服务器
web 2CentOS7192.168.37.132tomcat服务器

案例步骤:

一、在主从服务器上安装nginx、keepalived

1、关闭防火墙、SELinux

systemctl stop firewalld.service
setenforce 0

2、yum安装nginx、keepalived服务(主、从相同操作)

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/\
nginx-release-centos-7-0.el7.ngx.noarch.rpm
#安装nginx包
yum install nginx keepalived -y

3、修改master上keepalived配置文件

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalivedglobal_defs {router_id NGINX_HA ????????#修改id,删除以下四行}vrrp_instance VI_1 { ???state MASTER ???interface ens33 ??????????????#修改网卡 ???virtual_router_id 51 ???priority 100 ???advert_int 1 ???authentication { ???????auth_type PASS ???????auth_pass 1111 ???} ???virtual_ipaddress { ???????192.168.37.188 ????????#内网虚拟IP ???????192.168.200.188 ??????#外网虚拟IP ???} } 


4、修改backup上keepalived配置文件
scp /etc/keepalived/keepalived.conf root@192.168.37.130:/etc/keepalived ??? #配置文件复制到backup
vim /etc/keepalived/keepalived.conf

! Configuration File for keepalivedglobal_defs {router_id NGINX_HB ?????????#修改id}vrrp_instance VI_1 { ????state BACKUP ???interface ens33 ??????????????????virtual_router_id 51 ???????#修改id号 ???priority 90 ???????????????????????#优先级低于master ???advert_int 1 ???authentication { ???????auth_type PASS ???????auth_pass 1111 ???} ???virtual_ipaddress { ???????192.168.37.188 ?????????#内网虚拟IP ???????192.168.200.188 ???????#外网虚拟IP ???} } 


5、修改ngin反向代理(主、从操作相同)
vim /etc/nginx/nginx.conf ????????

#gizp onupstream tomcat_pool { ????????????server 192.168.37.131:8080; ??????#tomcat 1 ????????????server 192.168.37.132:8080; ??????#tomcat 2 ????????????ip_hash; ??????????????????#稳固会话,否则无法通过vip地址登录 ?} ???????????server { ???????????listen 80; ????????server_name 192.168.37.188; ??????????#虚拟IP ????????location / { ????????????????proxy_pass http://tomcat_pool; ????????????????proxy_set_header X-Real-IP $remote_addr; ????????} ?????????} ??????????

6、开启nginx、keepalived服务

systemctl start keepalived.service
nginx -t -c /etc/nginx/nginx.conf ??#检查配置文件正确性
systemctl start nginx.service

二、在web服务器上部署tomcat服务(操作相同)

1、解压java环境包、tomcat安装包

tar zxf jdk-8u144-linux-x64.tar.gz -C /usr/local
tar zxf apache-tomcat-8.5.23.tar.gz -C /usr/local

2、对解压后软件包重命名

cd /usr/local
mv apache-tomcat-8.5.23/ tomcat8
mv jdk1.8.0_144/ java

3、添加java环境变量

vim /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

4、加载环境变量,检测java是否识别

source /etc/profile
java -version ????????????????????#查看版本


5、建立tomcat启动文件的软连接,使系统识别

ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup
ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown

6、修改首页,区分两台tomcat

cd /usr/local/tomcat8/webapps/ROOTvim index.jsp ???????this is tomcat 1#另一台首页为 ** this istomcat 2**

7、开启tomcat服务

cd /usr/local/tomcat8/webapps/ROOT
tomcatup

8、通过虚拟IP访问tomcat验证服务

三、将商城物品文件加入tomcat配置文件

cd /usr/local/tomcat8/conf/vim ?server.xml ??(148行)<Context path="" docBase="SLSaleSystem" reloadable="true" debug="0"></Context>#SLSaleSystem:稍后会将此文件加入指定目录

四、配置mysql主从服务器

1、yum安装mariadb(此处为了方便安装,用mariadb代替mysql);

yum install mariadb mariadb-server -y

2、开启mariadb服务

systemctl start mariadb
netstat -ntap | grep 3306


3、mariadb数据库常规安全设置
mysql_secure_installation

Enter current password for root (enter for none): ?回车 ??#当前root密码Set root password? [Y/n] ?y ????????????????????????????#密码自定Remove anonymous users? [Y/n] ?n ??????????????#不需要匿名用户Disallow root login remotely? [Y/n] ?n ????????????#需要root远程登录Remove test database and access to it? [Y/n] ?n ???????#不需要删除Reload privilege tables now? [Y/n] ?y ???????????#重新加载表

4、导入数据库商城数据

mysql -u root -p < /opt/abc/rhel7/pv/slsaledb-2014-4-10.sql
#slsaledb-2014-4-10.sql 需要自行导入,都放在博文开始的安装包中


5、数据库中授权,使商城可以管理数据库

mysql -u root -p ?????
MariaDB [(none)]> grant all on slsaledb.* to ‘root‘@‘%‘ identified by ‘abc123‘;
MariaDB [(none)]> flush privileges;

五、Tomcat上线商城项目

1、将商城项目放到指定目录

tar zxf SLSaleSystem.tar.gz -C /usr/local/tomcat8/webapps/
#SLSaleSystem.tar.gz在博文开始的安装包中

2、修改配置文件
cd /usr/local/tomcat8/webapps/SLSaleSystem/WEB-INF/classes
vim jdbc.properties

driverClassName=com.mysql.jdbc.Driverurl=jdbc\:mysql\://192.168.37.188\:3306/slsaledb?useUnicode\=true&characterEncoding\=UTF-8 ????#改成虚拟ipuname=rootpassword=abc123 ???????# 修改mysql的root密码

3、重启tomcat服务,访问虚拟IP

tomcatdown
tomcatup

六、主从服务器上做redis

1、yum安装redis

yum install epel-release -y
yum install redis -y

2、主redis上修改配置文件

vim /etc/redis.conf ??#改下面1行 ??bind 0.0.0.0

3、从redis上修改配置文件

vim /etc/redis.confbind 0.0.0.0#slaveof <masterip> <masterport> ??266行slaveof 192.168.37.128 6379 ????#指向主服务器的ip和端口

4、开启redis服务
systemctl start redis.service

5、连接主redis,写入内容

redis-cli -h 192.168.37.128 -p 6379 ?????????? #连接redis
192.168.37.128:6379> set name test ???#写入内容
192.168.37.128:6379> get name ???????????? ?#查看内容


6、连接从redis,验证是否同步

redis-cli -h 192.168.37.130 -p 6379 ?? ??#连接redis
192.168.37.130:6379> get name ???????? ?#能看到主服务器写入的内容"test"


7、通过虚拟IP连接redis验证

redis-cli -h 192.168.37.188 -p 6379 ?

七、redis主从切换(只配置主redis)

1、查看redis状态

redis-cli -h 192.168.37.128 info Replication ?

2、修改配置文件

vim /etc/redis-sentinel.conf//17行protected-mode no ????????????????????????????????????????????????????????#开启群集功能//69行sentinel monitor mymaster 192.168.71.128 6379 1 ??#master的地址,端口,从服务器1台//98行sentinel down-after-milliseconds mymaster 3000 ??????#设置切换时间

3、开启服务(主、从都开启)

systemctl start redis-sentinel.service

4、验证主从切换

redis-cli -h 192.168.37.128 -p 26379 info Sentinel ???#查看群集信息
systemctl stop redis ????????????#关掉主redis

八、tomcat主机指向redis

cd /usr/local/tomcat8/webapps/SLSaleSystem/WEB-INF/classes
vim applicationContext-mybatis.xml

<!--redis 配置 开始--> <constructor-arg value="192.168.37.188"/> ????#指向虚拟IP ???????????????<constructor-arg value="6379"/>

注意:配置完重启tomcat服务

九、mysql主从同步

1、修改主、从mariadb配置文件
vim /etc/my.cnf

[mysqld]binlog-ignore-db=mysql,information_schemacharacter_set_server=utf8log_bin=mysql_binserver_id=1 ????????????????????????#从服务器为2 ???log_slave_updates=truesync_binlog=1

2、开启mariadb

systemctl restart mariadb.service

3、主mariadb上授权

MariaDB [(none)]>grant replication slave on . to ‘rep‘@‘192.168.37.%‘ identified by ‘abc123‘;
MariaDB [(none)]>flush privileges;
MariaDB [(none)]>show master status;


4、从mariadb上同步

MariaDB [(none)]>change master to master_host=‘192.168.37.128‘,master_user=‘rep‘,master_password=‘abc123‘,master_log_file=‘mysql_bin.000001‘,master_log_pos=699;
MariaDB [(none)]>start slave;
MariaDB [(none)]>show slave status\G;


5、重启mariadb

systemctl restart mariadb.service

最后,百万PV已搭建完成,可以访问查看网站信息!

大型网站架构之百万PV

原文地址:http://blog.51cto.com/13784264/2309482

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved