nginx+keepalived主從高可用配置

 

上面有4web服務器  咱們實驗條件限制,就開兩臺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.116nginx掛了,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服務器了

 

一樣網站仍是好的  

 

 

這時你在主nginxnginx服務起來 keepalived也起來 再把1.118nginx服務停掉 它會自動跑到主nginx1.116

 

 

 

 

相關文章
相關標籤/搜索