一、系統環境及軟件版本
centos 6.6 x64
keepalived-1.2.18.tar.gz
nginx-1.6.2.tar.gz
主服務器:192.168.38.64
從服務器:192.168.38.66
vip :192.168.38.100
二、nginx安裝 (主從安裝一致)
1.安裝依賴環境
復制代碼?代碼如下:
yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-developenssl openssl-devel
2.上傳nginx到 opt 目錄
3.解壓安裝
#?tar?-zxvf?nginx-1.6.2.tar.gz #?cd?nginx-1.6.2 #?./configure?--prefix=/opt/nginx?(prefix=/opt/nginx?這個指定的是?nginx目錄) #?make?&&?make?install
4.修改 nginx監聽端口 及 index.html
# vi /opt/nginx/conf/nginx.conf
vi /opt/nginx/html/index.html
5. nginx 啟動及常用命令
配置測試: /opt/nginx/sbin/nginx -t 出現如下界面說明配置沒問題
啟動 : /opt/nginx/sbin/nginx
重啟 : /opt/nginx/sbin/nginx -s reload
停止 : /opt/nginx/sbin/nginx -s stop
6.開機啟動 nginx
vi /etc/rc.local
加入: /opt/nginx/sbin/nginx
7.修改防火墻開放端口
vi /etc/sysconfig/iptables
添加 : -a input -p tcp -m state –state new -m tcp –dport 8888 -j accept
重啟防火墻 :?service iptables restart
8.問題
啟動 nginx遇到的問題
vi /etc/ld.so.conf
添加: /opt/nginx/lib/
9.nginx的負載均衡
nginx的負載均衡主要是 由upstream 這一模塊完成
修改 nginx的配置文件
vi /data/nginx/conf/nginx.conf
添加如下內容:(web_pools 這個名稱可變)
upstream?web_pools?{? server?10.0.6.108:7080weight=1; ?server?10.0.0.85:8980weight=1; }
將server節點下的location節點中的proxy_pass配置為:http:// + upstream名稱即可
結果如下:
其中 weight是權重 backup是備用服務器 ,只有其它服務器宕機后,備用服務器才會啟動。
三、keepalived 安裝
1.keepalived上傳到 opt目錄下
2.解壓 安裝
tar?-zxvf?keepalived-1.2.18.tar.gz cd?keepalived-1.2.18 ./configure?--prefix=/opt/keepalived make?&&?make?install
3.將keepalived 安裝成 linux服務
cp?/opt/keepalived/etc/rc.d/init.d/keepalived?/etc/init.d/ cp?/opt/keepalived/etc/sysconfig/keepalived?/etc/sysconfig/ ln?-s?/opt/sbin/keepalived?/usr/sbin/ ln?-s?/opt/keepalived/sbin/keepalived?/sbin/
4.設置 keepalived 服務開機啟動
chkconfig?keepalived?on
5.修改 keepalived 配置文件
vi /etc/keepalived/keepalived.conf
!?configuration?file?for?keepalived?(!、#都是注釋) global_defs?{?#全局配置 notification_email?{ acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from?alexandre.cassen@firewall.loc smtp_server?192.168.200.1 smtp_connect_timeout?30 router_id?lvs_01?#這個配置要唯一 } vrrp_script?chk_nginx?{ script?"/etc/keepalived/nginx_check.sh"?##?檢測?nginx?狀態的腳本路徑 interval?2?##?檢測時間間隔 weight?-20?##?如果條件成立,權重-20 } vrrp_instance?vi_1?{?#實例?vi_1?名字可以隨意?但是不建議修改 state?master?#?主服務器master?從服務器?backup interface?em1?#?em1?網卡 virtual_router_id?51?#virtual_router_id?主備要一致 priority?100? #?優先級?數字越大?優先級越高?priority?的值?主服務器要大于?從服務器 advert_int?1 #設定master與backup負載均衡器之間同步檢查的時間間隔,單位是秒 authentication?{?#?主從通信?驗證類型及密碼? auth_type?pass #設置vrrp驗證類型,主要有pass和ah兩種 auth_pass?1111 #設置vrrp驗證密碼,在同一個vrrp_instance下,master與backup必須使用相同的密碼才能正常通信 } ##?將?track_script?塊加入?instance?配置塊 track_script?{ chk_nginx?##?執行?nginx?監控的服務 } virtual_ipaddress?{ 192.168.38.100/24?#vrrp?ha?虛擬地址?如果有多個vip,繼續換行填寫 } }
6.編寫 nginx 狀態檢測腳本
vi /etc/keepalived/nginx_check.sh
內容如下:
#!/bin/bash a=`ps?-c?nginx?–no-header?|wc?-l` if?[?$a?-eq?0?];then /opt/nginx/sbin/nginx sleep?2 if?[?`ps?-c?nginx?--no-header?|wc?-l`?-eq?0?];then killall?keepalived fi fi
保存后,給腳本賦執行權限:chmod +x/etc/keepalived/nginx_check.sh
7.注意點:keepalived主從配置文件不同點
a.router_id 不一致
b.state 主服務器是master ,從服務器是 backup
c.priority 主服務器 大于 從服務器
8.keepalived 命令
啟動 : servicekeepalived start
停止: servicekeepalived stop
重啟: servicekeepalived restart
9.注意的問題
a.vip沒綁定成功
解決方案:ip addr 查看 本地ip所在網卡的名稱 ,然后修改 配置文件
vi /etc/keepalived/keepalived.conf
保存后 servicekeepalived restart 重啟 keepalived服務即可
10.測試
啟動主從nginx和keepalived 服務
主從服務器分別: ip add | grep 192.168.38.100
在192.168.38.64 可看到
同時 在192.168.38.66
當殺死 主服務器上的keepalived 則 從服務器
當再次啟動主服務器上的keepalived則結果主服務器上有結果,從服務器上沒結果。
當殺死 nginx后,keepalived則會自動啟動 nginx服務
11. keepalived腦裂 (ip add | grep 192.168.38.100 在主從都有結果)
解決方案:防火墻問題
iptables-iinput4-pvrrp-jaccept? service?iptables?save service?iptables?restart