上面有4臺web服務器 咱們實驗條件限制,就開兩臺web服務器1.117 1.119php
1、環境準備:mysql
系統環境:CentOS 6.5 x86_64linux
Nginx版本:nginx v1.6.2nginx
Keepalived版本:keepalived v1.2.1web
Nginx-1:192.168.1.116 (Master)sql
Nginx-2:192.168.1.118 (Backup)數據庫
我這裏也是根據前面lnamp實驗的基礎環境,192.168.1.116nginx裏面配置負載均衡是192.168.1.117 / 192.168.1.119 的php網站,windows
數據庫仍是192.168.1.18 和192.168.1.19 因此說每一個實驗按照順序來 能夠節約不少時間,若果沒有環境 就本身快速搭建一個lnamp環境或者用tomcat也行。tomcat
我這裏是克隆了192.168.1.116 (克隆如何修改ip本身學習)bash
Ip爲192.168.1.118 裏面配置環境和1.116的同樣都是nginx服務器
也就說兩個nginx服務器均可以負載均衡192.168.1.117和1.119的網站
把Windows hosts文件上把1.118也加上去 同時把1.116註釋掉 也能訪問網站
若是把上面兩個dns解析都打開 他只會訪問1.116 即便1.116掛了也不會訪問1.118 域名同樣它會優先匹配第一個ip
以上兩個圖片能夠說明1.118克隆的nginx服務啓動後能夠訪問的,這裏就有一個問題若是1.116的nginx掛了,dns是不會自動解析1.118的網站由於他們的域名同樣,優先訪問第一個ip ,同時也就訪問不了 ,下面咱們就用keepalived來決絕這個問題。
Keepalived安裝配置:
wget http://www.keepalived.org/software/keepalived-1.2.1.tar.gz(兩臺數據庫都要安裝) 防火牆和selinux都關掉
tar zxf keepalived-1.2.1.tar.gz
cd keepalived-1.2.1 &&./configure --with-kernel-dir=/usr/src/kernels/2.6.18-164.el5-i686(這裏寫的是本身機器的內內核 這裏記住若是內核Tab不出來, 那麼咱們就安裝內核擴展包 yum –y install kernel kernel-devel)
(這裏編譯出錯 就安裝yum -y install popt-devel)
make && make install
DIR=/usr/local/ ;cp $DIR/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp $DIR/etc/sysconfig/keepalived /etc/sysconfig/ && mkdir -p /etc/keepalived
cp $DIR/sbin/keepalived /usr/sbin/
兩臺nginx服務器keepalived安裝步驟同樣:
Nginx、Keepalived軟件安裝完畢,接下來進行詳細配置。
兩臺服務器端keepalived.conf內容都爲以下,都設置爲backup,不搶佔,注意修改備用機優先級不一樣:
! Configuration File for keepalived global_defs { notification_email { wgkgood@163.com } notification_email_from wgkgood@163.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_nginx { script "/data/sh/check_nginx.sh" interval 2 weight 2 } # VIP1 vrrp_instance VI_1 { state BACKUP interface eth0 lvs_sync_daemon_inteface eth0 virtual_router_id 151 priority 100 advert_int 5 nopreempt authentication { auth_typePASS auth_pass 1111 } virtual_ipaddress { 192.168.1.188 } track_script { chk_nginx } }
如上配置,咱們須要本身創建check_nginx腳本,以方便檢查本地Nginx是否存活更好的切換。Check_nginx.sh腳本內容以下:(兩臺同樣)
#!/bin/bash #auto check nginx process #2012-10-16 wugk killall -0 nginx if [[ $? -ne 0 ]];then /etc/init.d/keepalived stop fi
這裏 記住 在同一網段內配置多個keepalived服務 virtual_router_id 值不能相同,若是相同會在messages中收到VRRP錯誤包 這裏好比咱們在mysql +keepalived 上面的virtual_router_id =151 那麼咱們在nginx+keepalived上的virtual_router_id就不能等於151了
下面咱們把hosts文件裏面的dns解析換成1.188 (windows機器上的)
這裏能訪問就說明你配置成功了
接下來在另外一臺nginx服務商配置keepalived 安裝步驟同樣 惟一就是配置文件裏面優先級改一改 改成 90 要比master nginx低一些
配置到這一步就完成了 那麼下面咱們就測試 vip會不會飄逸 也就是說其中一臺nginx掛了 vip會不會自動飄到另外一臺nginx服務器
這時咱們發現vip 已經飄到1.118這臺nginx服務器了
一樣網站仍是好的
這時你在主nginx的nginx服務起來 keepalived也起來 再把1.118的nginx服務停掉 它會自動跑到主nginx1.116上