大型網站架構
阿新 • • 發佈:2018-08-03
-m follow 商城項目 live lob prot 網卡名 獲取 webapps 大型網站架構
實驗目的
- 理解百萬pv的概念
- 實驗百萬pv網站架構
網站架構概述
網站架構一般認為是根據客戶需求分析的結果,準卻定位網站目標群體,設定網站的整體架構,規劃、設計網站欄目及其內容,指定網站開發的流程的順序,最大限度進行高效資源分配與管理設計
PV
PV(Page View,頁面瀏覽量)即點擊量。
對PV的解釋是一個訪問者在24小時內瀏覽了多少個頁面,同一個訪問者重復瀏覽同喲個頁面不重復計PV量
百萬PV網站架構實例
實施步驟
(1)前端nginx作為調度,做雙機熱備
[root@localhost ~]# yum install keepalived -y [root@localhost ~]# 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 } [root@localhost ~]# systemctl start keepalived.service #//啟動keepalived [root@localhost ~]# ip addr #//查看虛擬ip240.188有沒有生效主刪改你有這麽一段 inet 192.168.175.188/32 scope global ens33 #從沒有那就表明keepalived開啟成功
(2)安裝nginx代理服務器
[root@localhost nginx-1.12.0]# yum install gcc gcc-c++ zlib-devel pcre-devel -y #//安裝編譯工具 [root@localhost nginx-1.12.0]# useradd -M -s /sbin/nologin nginx #//創建用戶 [root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module [root@localhost nginx-1.12.0]# make && make install #//讓系統能夠識別
配置nginx前端調度功能
[root@localhost 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 //修改默認網頁內容
<h1>Server 129!!</h1>
http://192.168.175.188/ 輸入調度器地址,也就是虛擬地址,測試兩臺節點的調度情況。
cd /usr/local/tomcat8/conf/
vi server.xml //跳到行尾,在Host name下新增 148
<Context path="" docBase="SLSaleSystem" reloadable="true" debug="0"></Context>
日誌調試信息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 < slsaledb-2014-4-10.sql
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
<welcome-file>index.jsp</welcome-file> //使用相對路徑
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 <!--redis 配置 開始-->
47 <constructor-arg value="192.168.175.188"/>
48 <constructor-arg value="6379"/>
------------以下測試緩存效果-----
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"
大型網站架構