負載均衡的工作原理?

在這裡準備兩個虛拟機,然後将tomcat安裝在上面
關閉兩個虛拟機的防火牆:
解壓tomcat :
然後将壓縮包nginx上傳到linux系統中,然後解壓.進入到這個檔案中,
因為nginx是使用C語言寫的,是以需要進行編譯
将nginx-1.8.0.tar.gz拷貝至linux伺服器。
解壓:
tar -zxvf nginx-1.8.0.tar.gz –C /usr/local/src
cd /usr/local/nginx-1.8.0
1、 Configure
注意:進入nginx的解壓目錄下執行該腳本。
./configure --help查詢詳細參數(參考本教程附錄部分:nginx編譯參數)
參數設定如下:
注意:上邊将臨時檔案目錄指定為/var/temp/nginx,需要在/var下建立temp及nginx目錄
mkdir -p /var/temp/nginx
1、 編譯安裝
make
make install
安裝成功檢視安裝目錄 :
cd /usr/local/nginx/sbin/
./nginx
查詢nginx程序:
15098是nginx主程序的程序id,15099是nginx工作程序的程序id
注意:執行./nginx啟動nginx,這裡可以-c指定加載的nginx配置檔案,如下:
./nginx -c /usr/local/nginx/conf/nginx.conf
如果不指定-c,nginx在啟動時預設加載/usr/local/nginx/conf/nginx.conf檔案,此檔案的位址也可以在編譯安裝nginx時指定./configure的參數(--conf-path= 指向配置檔案(nginx.conf))
方式1,快速停止:
cd /usr/local/nginx/sbin
./nginx -s stop
此方式相當于先查出nginx程序id再使用kill指令強制殺掉程序。
方式2,完整停止(建議使用):
./nginx -s quit
此方式停止步驟是待nginx程序處理任務完畢進行停止。
方式1,先停止再啟動(建議使用):
對nginx進行重新開機相當于先停止nginx再啟動nginx,即先執行停止指令再執行啟動指令。
如下:
方式2,重新加載配置檔案:
當nginx的配置檔案nginx.conf修改後,要想讓配置生效需要重新開機nginx,使用-s reload不用先停止nginx再啟動nginx即可将配置資訊在nginx中生效,如下:
./nginx -s reload
nginx安裝成功,啟動nginx,即可通路虛拟機上的nginx:
早期圖檔通路用的Nginx
Conf/nginx.conf
進入nginx/conf目錄下,修改nginx.conf配置檔案。
upstream tomcat_server{
server 192.168.200.128:8080;
}
proxy_pass http://tomcat_server;
server 192.168.200.130:8080 weight=10;
server 192.168.200.148:8080 weight=20;
搭建nginx備機時候需要使用Keepalived高可用解決方案
什麼是Keepalived?
Keepalived是叢集管理中保證叢集高可用的一個服務軟體,用來防止單點故障.
Keepalived的作用是檢測web伺服器的狀态,如果有一台web伺服器當機,或工作出現故障,keepalived将檢測到,并将故障的web伺服器從系統中剔除,當web伺服器工作正常後keepalived自動将web伺服器加入到伺服器群中,這些工作全部自動完成,不需要人工幹涉,需要人工做的隻修複故障的web伺服器.
使用crt工具直接進行上傳
rpm -ivh keepalived-1.2.13-5.el6_6.i686.rpm
rpm -ql keepalived
編輯 keepalived.conf配置檔案。
1、 清空配置檔案
2、 添加配置資訊
! Configuration File for keepalived
#全局配置
global_defs {
notification_email { #指定keepalived在發生切換時需要發送email到的對象,一行一個
}
notification_email_from [email protected] #指定發件人
#smtp_server XXX.smtp.com #指定smtp伺服器位址
#smtp_connect_timeout 30 #指定smtp連接配接逾時時間
router_id LVS_DEVEL #運作keepalived機器的一個辨別
vrrp_instance VI_1 {
state MASTER #标示狀态為MASTER 備份機為BACKUP
interface eth0 #設定執行個體綁定的網卡
virtual_router_id 51 #同一執行個體下virtual_router_id必須相同
priority 100 #MASTER權重要高于BACKUP 比如BACKUP為99
advert_int 1 #MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,機關是秒
authentication { #設定認證
auth_type PASS #主從伺服器驗證方式
auth_pass 8888
}
virtual_ipaddress { #設定vip
192.168.200.100 #可以多個虛拟IP,換行即可
192.168.200.101
1、 啟動keepalived
2、 停止keepalived
上傳rpm壓縮包,解壓,安裝
#smtp_server XXX.smtp.com #指定smtp伺服器位址
state BACKUP #标示狀态為MASTER 備份機為BACKUP
priority 88 #MASTER權重要高于BACKUP 比如BACKUP為99
192.168.200.100 #可以多個虛拟IP,換行即可
192.168.200.101
主機的keepalived正常運作時,備機的keepalived不工作,隻有主機的keepalived當機後,備機才接管服務。
當主機、備機的keepalived都正常時,而主機的nginx挂掉,那麼此時我們就不能正常通路了。因為這時請求還是經過主機的keepalived,而keepalived不知道主機當機,是以,此時應該讓主機的keepalived挂掉,進而備機接管服務。
在主機上建立:
touch check_nginx.sh
#!/bin/bash
# 如果程序中沒有nginx則将keepalived程序kill掉
A=`ps -C nginx --no-header |wc -l` ## 檢視是否有 nginx程序 把值賦給變量A
if [ $A -eq 0 ];then ## 如果沒有程序值得為 零
service keepalived stop ## 則結束 keepalived 程序
fi
chmod 777 check_nginx.sh
notification_email_from [email protected] #指定發件人
#smtp_server XXX.smtp.com #指定smtp伺服器位址
vrrp_script check_nginx {
script "/etc/keepalived/check_nginx.sh" ##監控腳本
interval 2 ##時間間隔,2秒
weight 2 ##權重
state MASTER #标示狀态為MASTER 備份機為BACKUP
priority 100 #MASTER權重要高于BACKUP 比如BACKUP為99
track_script {
check_nginx #監控腳本
192.168.101.100 #可以多個虛拟IP,換行即可
在主機的nginx當機後,主機的keepalived自動結束程序。進而備機接官服務。