摘要:靜態(tài)資源負載均衡反向代理主從配置監(jiān)聽集群主從配置介紹業(yè)務(wù)從發(fā)展的初期到逐漸成熟,服務(wù)器架構(gòu)也是從相對單一到集群,再到分布式,技術(shù)迭代的速度非???,導(dǎo)致我們不斷的學(xué)習(xí)。。。一配置介紹是為俄羅斯訪問量第二站點開發(fā)的一款高性能和反向代理服務(wù)器。
CDN(靜態(tài)資源) + Nginx(負載均衡&反向代理)+ Redis(主從配置&Sentinel監(jiān)聽集群)+ Mysql(主從配置)
介紹:業(yè)務(wù)從發(fā)展的初期到逐漸成熟,服務(wù)器架構(gòu)也是從相對單一到集群,再到分布式,技術(shù)迭代的速度非???,導(dǎo)致我們不斷的學(xué)習(xí)。。。
一個可以支持高并發(fā)的服務(wù)少不了好的服務(wù)器架構(gòu),需要有負載均衡,主從集群的數(shù)據(jù)庫,主從集群的緩存,靜態(tài)文件上傳cdn,比如 七牛云 等,這些都是讓業(yè)務(wù)程序流暢運行的強大后盾。
閑話不多說,下面簡單介紹搭建Windows服務(wù)器架構(gòu)。
一、配置Nginx介紹:Nginx是 Igor Sysoev 為俄羅斯訪問量第二 Rambler.ru 站點開發(fā)的一款高性能HTTP和反向代理服務(wù)器。
那么有些人不明白反向代理與正向代理有什么不同?
正向代理就像是 因為GWF,國內(nèi)需要使用代理訪問Google,但是Google不知道真實的客戶端是誰,代理隱藏了真實的客戶端請求,客戶端請求的服務(wù)都被代理服務(wù)器代替。
www.baidu.com 是我們的反向代理服務(wù)器,反向代理服務(wù)器會幫我們把請求轉(zhuǎn)發(fā)到真實的服務(wù)器那里去。
1:重新加載配置 2:關(guān)閉 3:開啟(或者nginx -c conf/nginx.conf)
附錄:Nginx工作原理
2、修改配置文件修改Tomcatconfserver.xml (三個端口)& ginx-1.11.6conf ginx.conf :
#user nobody;#用戶名 worker_processes 1;#工作進程(與CPU個數(shù)一比一) #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024;#單個進程最大連接數(shù)(worker_processes*worker_connections/4小于系統(tǒng)進程打開的文件總數(shù)) } http { upstream tomcat { #反向代理 server localhost:8082 weight=2;#weight權(quán)重(機器性能好weight就設(shè)大些) server localhost:8083 weight=3; } include mime.types; default_type application/octet-stream; #log_format main "$remote_addr - $remote_user [$time_local] "$request" " # "$status $body_bytes_sent "$http_referer" " # ""$http_user_agent" "$http_x_forwarded_for"";#轉(zhuǎn)發(fā)真實ip #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80;#默認80端口 server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / {#配置靜態(tài)文件等 root html; index index.html index.htm; proxy_pass http://tomcat;#反向代理(上面upstream tomcat) } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }3、測試
如何知道集群服務(wù)器配置好了呢?
我們修改項目頁面,將body內(nèi)容改為aaa...和bbb...,打包分別放到上面的Tomcat中,重新啟動Tomcat和Nginx。
根據(jù)上圖,Nginx會將請求分發(fā)到不同的Tomcat中。
介紹:Nginx是采用master-worker多進程的方式,master負責(zé)請求轉(zhuǎn)發(fā),worker的數(shù)量為CPU數(shù),所有worker進程的listenfd會在新連接到來時變得可讀,為保證只有一個進程處理該連接,所有worker進程在注冊listenfd讀事件前搶accept_mutex,搶到互斥鎖的那個進程注冊listenfd讀事件,在讀事件里調(diào)用accept接受該連接。
4、防預(yù)CC攻擊使用 NGINX 流控和 fail2ban 防止 CC 攻擊
在http模塊中添加
limit_req_zone $binary_remote_addr zone=sym:10m rate=5r/s; #限制發(fā)起的請求頻率,每秒5次 limit_conn_zone $binary_remote_addr zone=conn_sym:10m; #限制發(fā)起的連接數(shù)
在location中添加
limit_req zone=sym burst=5; limit_conn conn_sym 10;
配置好后Nginx重啟。模擬多線程并發(fā)請求,結(jié)果顯示成功和異常:
查詢Nginx/conf/error.log,顯示如下:
二、配置Redis&Sentinel 1、下載 Redis3.0解壓redis(主)再復(fù)制三份,文件夾名稱分別改為redis-slave(從)、redis-slave2(從)、redis-sentinel(哨兵)這些文件夾都能復(fù)制多次
(*.conf文件的名字可能不同!sentinel.conf需要新建?。?/p>
2、修改配置文件
修改redis(主)文件夾下的redis.windows.conf:
port 6380 #端口(不能重復(fù)) logfile "E:/redis.log" #日志(防止宕機后可查) slave-read-only no #默認為yes,改為no用于主從復(fù)制 requirepass "XXX" #密碼(主從密碼需相同)
修改redis-slave(從)下的redis.windows.conf:
port 6381 logfile "E:/redis_slave1.log" slaveof 127.0.0.1 6380 #master slave-read-only no masterauth "XXX" #主密碼 requirepass "XXX"
在redis-sentinel(哨兵)下創(chuàng)建sentinel.conf文件,內(nèi)容為:
port 26379 sentinel monitor mymaster 127.0.0.1 6380 1 #主配置,數(shù)字1代表有1個Sentinel監(jiān)聽有問題就進行主從復(fù)制并切換 sentinel down-after-milliseconds mymaster 6000 sentinel failover-timeout mymaster 900000 sentinel auth-pass mymaster Alex #密碼
下面為演示:
(1)運行主從Redis:
(2)運行Sentinel:
介紹:監(jiān)聽Redis的哨兵,具體看附錄
附錄:Sentinel
運行Sentinel后,.conf中配置內(nèi)容就會刷新成:
為防止Sentinel宕掉??蓮?fù)制多份sentinel并修改端口,分別啟動。
(3)檢測主從切換
當(dāng)master宕機后,防止整個資源掛掉,將采用Sentinel實時監(jiān)控Redis,情況發(fā)生后會立即主從復(fù)制并切換,這樣系統(tǒng)崩潰的概率大大降低。
監(jiān)聽的主端口變?yōu)?381,非之前的6380,子監(jiān)聽的主也自動切換了。
三、配置Mysql集群 1、配置master主服務(wù)器(1)在Master MySQL上創(chuàng)建用戶,允許其他Slave服務(wù)器可以通過遠程訪問Master,通過該用戶讀取二進制日志,實現(xiàn)數(shù)據(jù)同步。
創(chuàng)建的用戶必須具有REPLICATION SLAVE權(quán)限,除此之外沒必要添加不必要的權(quán)限,密碼為"XXX"。192.168.94.%是指明用戶所在服務(wù)器,%是通配符,表示192.168.94.0/255的Server都可以登陸主服務(wù)器。
(2)修改my.Ini文件。啟動二進制日志log-bin。
在[mysqld]下面增加:
server-id=1 #給數(shù)據(jù)庫服務(wù)的唯一標(biāo)識,一般為大家設(shè)置服務(wù)器Ip的末尾號 log-bin=master-bin log-bin-index=master-bin.index
(3)重啟Mysql服務(wù),查看日志
2、配置slaver從服務(wù)器(1)修改my.ini文件,在[mysqld]下面增加
log_bin = mysql-bin server_id = 2 relay_log = mysql-relay-bin log_slave_updates = 1 read_only = 1
重啟Mysql
(2)連接Master
change master to master_host="192.168.XXX.XXX", master_port=3306, master_user="alexnevsky", master_password="XXXX", master_log_file="master-bin.000001", master_log_pos=0;
(3)啟動Slave
start slave;
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/39452.html
摘要:本篇文章來自于騰訊和共同舉辦的技術(shù)開放日后臺專場出品人傅鴻城的分享,由壹佰案例整理編輯。對于騰訊而言,后臺服務(wù)可用性都是四個九,四個九轉(zhuǎn)化為時間就要求一年內(nèi)的故障時間不能超過分鐘。 showImg(https://segmentfault.com/img/bVvL5f); 本篇文章來自于騰訊SNG和msup共同舉辦的技術(shù)開放日后臺專場出品人傅鴻城的分享,由壹佰案例整理編輯。原文發(fā)布在壹...
閱讀 3774·2021-09-22 15:17
閱讀 1962·2021-09-22 14:59
閱讀 2361·2020-12-03 17:00
閱讀 3224·2019-08-30 15:55
閱讀 498·2019-08-30 11:23
閱讀 3498·2019-08-29 13:56
閱讀 530·2019-08-29 12:54
閱讀 2267·2019-08-29 12:49