1. 程式人生 > >Linux Nginx+keepalived負載+高可用

Linux Nginx+keepalived負載+高可用

3.1.1 重啟 ont 執行權限 同步 tables 內核 啟動制作 auth

Linux Nginx+keepalived負載+高可用

【摘要】
Nginx+keepalived給企業實現廉價的,高可靠性的高可用軟負載均衡,可達萬級的高並發。

【正文】
一 前期準備
1.1 項目拓撲圖
初步規劃了nginx+keepalived的拓撲結構如下。
技術分享圖片

1.2 服務器準備
Redhat 6.4(nginx-A) CPU:單核 內存:2G 硬盤:50G 設置同網段靜態IP
Redhat 6.4(nginx-B) CPU:單核 內存:2G 硬盤:50G 設置同網段靜態IP
後端WEB應用服務器 自行搭建(可使用linux做最簡單的http服務器) 設置同網段靜態IP

1.3 軟件準備
1) 兩臺新服務器配置YUM安裝源。(此處省略YUM源配置過程,可參考網上的方法)
2) 下載nginx與keepalived源碼安裝包。具體型號如下,所實施的軟件請參考另外提供的軟件包文件夾
nginx-1.9.2.tar.gz
keepalived-1.2.19.tar.gz

二 Nginx服務器安裝與配置
2.1 Nginx-A/Nginx-B主/備服務器配置
2.1.1 基礎安裝
安裝nginx之前的需要的依賴包
#yum install –y gcc pcre-devel zlib-devel

2.1.2 Nginx安裝
進入nginx安裝包所在位置
#cd /tmp/

解壓nginx源碼包

#tar –xvf nginx-1.9.2.tar.gz

進入解壓後的文件夾
#cd nginx-1.9.2

編譯並安裝
#./config;make;make install

2.1.3 Nginx配置文件修改
Vim編輯/usr/local/nginx/conf/nginx.conf,編輯內容如下圖紅框所示:
技術分享圖片

2.1.4 創建負載規則
1) 創建文件夾路徑
#mkdir /usr/local/nginx/vhost

2) 為每個域名創建負載規則
#vim /usr/local/nginx/vhost/www.xxx.net

編輯的內容如下圖:
技術分享圖片

2.1.5 Nginx啟動
測試配置文件是否有誤
#/usr/local/nginx/sbin/nginx -t


返回如下信息則配置正確
技術分享圖片
啟動nginx
#/usr/local/nginx/sbin/nginx

三 Keepalived服務器安裝與配置
3.1 Nginx-A主服務器keepalived安裝與配置
3.1.1 基礎安裝

安裝keepalived之前的需要的依賴包
#yum install –y openssl-devel

3.1.2 Keepalived安裝
進入keepalived安裝包所在位置
#cd /tmp/

解壓keepalived源碼包
#tar –xvf keepalived-1.2.19.tar.gz

進入解壓後的文件夾
#cd keepalived-1.2.19

編譯並安裝
#./config;make;make install

3.1.3 Keepalived配置文件修改
1) 創建軟鏈接(啟動keepalived時需要配置文件,如未使用-f指定配置文件路徑,就創建軟鏈接到/etc目錄下)
#mkdir /etc/keepalived
#ln –s /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

2) 修改keepalived配置文件
Vim修改/etc/keepalived/keepalived.conf如下圖所示:
技術分享圖片

3.1.4 修改iptables設置
Iptables防火墻放通虛擬路由協議設置,否則keepalived無法通過虛擬路由協議進行通信。
vim編輯/etc/sysconfig/iptables如下圖:
技術分享圖片

3.1.5 Keepalived啟動
#/usr/local/sbin/keepalived

3.2 Nginx-B備服務器keepalived安裝與配置
安裝與配置過程請參考主服務器,主要不通點是keepalived.conf,請看下圖:
技術分享圖片

3.3 Nginx監控腳本
1) Nginx-A和Nginx-B分別編輯腳本
#vim /usr/local/nginx/Monitor_Nginx.sh
腳本如下圖:
技術分享圖片

2) 增加可執行權限
#chmod o+rx /usr/local/nginx/Monitor_Nginx.sh

3) 創建軟鏈接
#ln –s /usr/local/nginx/Monitor_Nginx.sh /opt/

四 優化操作系統限制
4.1 優化操作系統使其支持高並發(主備服務器均設置)
vim編輯/etc/security/limits.conf,編輯內容如下圖:
技術分享圖片

4.2 操作系統內核參數優化(主備服務器均設置)
vim編輯/etc/sysctl.conf,編輯內容如下圖:
技術分享圖片

五 優化nginx及keepalived啟動
5.1 將nginx啟動制作成服務(主備服務器均設置)
5.1.1 編輯/etc/init.d/nginxd
編輯內容如下圖,腳本內容不一一解釋:
技術分享圖片
技術分享圖片

5.1.2 增加可執行權限
1)增加執行權限
#chmod +x /etc/init.d/nginxd

2)增加軟鏈接,使其能作為命令使用
#ln –s /etc/init.d/nginxd /sbin

5.1.3 設置開機啟動
設置開機啟動
#chkconfig nginxd on

5.2 將keepalived制作成服務(主備服務器均設置)
5.2.1 編輯/etc/init.d/keepalivedd
編輯內容如下圖,腳本內容不一一解釋:
技術分享圖片
技術分享圖片

5.2.2 增加可執行權限
1)增加執行權限
#chmod +x /etc/init.d/keepalivedd

2)增加軟鏈接,使其能作為命令使用
#ln –s /etc/init.d/keepalivedd /sbin

5.2.3 設置開機啟動
設置開機啟動
#chkconfig keepalivedd on

六 Nginx日誌自動截斷並備份(主備服務器均設置)
4) 編輯/usr/local/nginx/nginxlogbak.sh
腳本如下圖:
技術分享圖片

5) 增加可執行權限
#chmod +x /usr/local/nginx/nginxlogbak.sh

6) 創建定時任務
#crontab -e
技術分享圖片

七 優化主備服務器策略同步
由於策略不會自動進行同步,需要每次人工拷貝,故進行優化,達到每天定時檢測主服務器的配置,如有變更則自動備份備服務器策略,並拷貝主服務器策略。
7.1.1 使用公私鑰進行免密碼登錄服務器(主備服務器均設置)
1) 由於root賬號不允許直接ssh登錄故生成公私鑰時使用admin賬號登錄
生成公私密鑰
$ssh-keygen -t rsa -P ""

2) 拷貝公鑰至另一臺服務器
$scp /home/admin/.ssh/id_rsa.pub [email protected]:/home/admin/.ssh/authorized_keys

同理,另一臺服務器也需要這樣設置,達到互認的目的。

7.1.2 為vhost文件夾增加可讀可列出權限(主服務器設置)
考慮到安全,此權限設置使用ACL進行控制。如不增加admin對此文件夾權限,則備服務器無法通過admin賬號進行下載。
#setfacl –d –m u:admin:rwx /usr/local/nginx/vhost/

7.1.3 編輯vhost拷貝與判斷腳本(備服務器設置)
1)編輯/usr/local/nginx/vhostcopy.sh
技術分享圖片
技術分享圖片

3) 增加可執行權限
#chmod +x /usr/local/nginx/vhostcopy.sh

7.1.4 設置計劃任務定期執行(備服務器設置)
1)為admin賬號增加計劃任務
#crontab -u admin -e
技術分享圖片

2)用admin賬號在tmp目錄創建vhost文件夾
$mkdir /tmp/vhost

4) root賬號增加計劃任務
#crontab -e
技術分享圖片

八 keepalived日誌重定向
由於keepalived默認輸出到message中,message又很其他日誌,不便於查看keepalived的日誌,優化日誌輸出到/var/log/keepalived.log
1)編輯vim /etc/init.d/keepalivedd
編輯內容如下:
技術分享圖片

2)編輯/etc/rsyslog.conf,增加如下內容
技術分享圖片

7) 重啟日誌服務和keepalived服務
#service rsyslog restart;service keepalivedd restart

Linux Nginx+keepalived負載+高可用