一、系統環境及軟體版本
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 stop6.開機啟動nginx
vi /etc/rc.local加入: /opt/nginx/sbin/nginx7.修改防火牆開放埠
# 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
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/
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 狀態偵測腳本
#!/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.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
同時在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
以上是nginx+keepalived高可用主從設定的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!