nginx lvs keepalived搭建集群

2021-07-14 16:13:08 字數 4510 閱讀 2725

拓撲圖如下:

為什麼要使用負載均衡技術?

1、系統高可用性

2、系統可擴充套件性

3、負載均衡能力

lvs+keepalived

能很好的實現以上的要求,

lvs提供負載均衡,

keepalived

提供健康檢查,故障轉移,提高系統的可用性!採用這樣的架構以後很容易對現有系統進行擴充套件,只要在後端新增或者減少

realserver

,只要更改

lvs的配置檔案,並能實現無縫配置變更!

二、lvs+keepalived

介紹1、

lvslvs

是乙個開源的軟體,可以實現

linux

平台下的簡單負載均衡。

lvs是

linux virtual server

的縮寫,意思是

linux

虛擬伺服器。目前有三種

ip負載均衡

技術(vs/nat

、vs/tun

和vs/dr

);八種排程演算法(

rr,wrr,lc,wlc,lblc,lblcr,dh,sh

)。2、

keepalived

keepalived 

是執行在

lvs 

之上,它的主要功能是實現真實機的故障隔離及負載均衡器間的失敗切換,提高系統的可用性,

keepalived的作用是檢測web伺服器的狀態,如果有一台web伺服器宕機,或工作出現故障,keepalived將檢測到,並將有故障的web伺服器從系統中剔除,當web伺服器工作正常後keepalived自動將web伺服器加入到伺服器群中。

ip配置資訊:

lvs-dr-master          172.10.2.174

lvs-dr-backup          172

lvs-dr-vip             172.10.2.201   #這個不是一台機子,是在nginx上用指令碼建的,下面會有指令碼**。  

web1-ngxserver        

172.10.2.170   #這個nginx,後端我用的是apache,nginx**apache

web2-ngxserver        172.10.2.206   #這個也是nginx

三、ipvsadm安裝:

先安裝所需要的庫:

yum install zlib-devel kernel-* libnl* popt* openssl openssl-devel net-snmp-*

#ipvs安裝報錯主要是缺少,libnl跟popt庫檔案

解壓後:make && make install

安裝好後測試下:

ipvsadm ## 必須先執行此命令才能載入ip_vs模組

沒報錯有輸出說明安裝ok了。

再輸入: 

lsmod | grep ip_vs

四、安裝keepalived(lvs和keepalived裝在一台機子上,我全用的虛擬機器子)

解壓後:

./configure --prefix=/usr/local/keepalived --enable-snmp && make && make install

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/init.d/

cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/

mkdir /etc/keepalived/

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ #沒有這個keepalived啟動後,不會檢測到real server的vip

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ #沒有這個keepalived無法啟動,報錯說找不到命令

啟動:/etc/init.d/keepalived start

4.1   /etc/keepalived/keepalived.conf配置如下

! configuration file for keepalived

global_defs

#   notification_email_from [email protected]

#   smtp_server 192.168.200.1

#   smtp_connect_timeout 30

router_id lvs_devel }

vrrp_sync_group lvs    }

vrrp_instance vi_1   

virtual_ipaddress   

}virtual_server 172.10.2.89 80 }

real_server 172.10.2.206 80 }

}五、在兩台nginx上放入指令碼,(/etc/init.d/lvs_start.sh)內容如下:

#! /bin/bash

syn_vip=172.10.2.201

/etc/rc.d/init.d/functions

case "$1" in

start)

ifconfig lo:0 $syn_vip netmask 255.255.255.255 broadcast $syn_vip

/sbin/route add -host $syn_vip dev lo:0

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

sysctl -p >/dev/null 2>&1

echo "realserver start ok"

;; stop)

ifconfig lo:0 down

route del $syn_vip >/dev/null 2>&1

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

echo "realserver stop"

;;  *)

echo "usage: $0 "

exit 1

esac

配置許可權:chmod +x /etc/init.d/lvs_start.sh

開啟:/etc/init.d/lvs_start.sh start    會提示functions許可權不夠

加許可權chmod +x /etc/rc.d/init.d/functions

/etc/init.d/lvs_start.sh start

再ifconfig看看

說明vip配置ok了。兩個nginx機子都使用相同的這個指令碼

六、訪問測試:

在lvs keepd機子上輸入命令

ip add    #命令檢視real server的vip是否已經被繫結到keepalived的master或者backup上

inet 172.10.2.201/32 scope global eth0    #說明成功繫結

ipvsadm命令檢測nginx是否正常工作,

都已經檢測到兩台nginx在正常工作,

把170和206兩台nginx開啟,

接下來要清一下,由於我測試時訪問ip沒搞對,老訪問不了,

在nginx上有配置的vip(172.10.2.201),這個ip是對外的,直接對應使用者,我們在lvs_keepd機子上有繫結這個vip,那麼當使用者訪問這個ip時,lvs_keepd會接收這個請求然後**給170和206其中某一台機子,這裡lvs也會實現乙個小小的負載,

那本地windows的host配置是

172.10.2.201 www.b.com    #這樣訪問這個網域名稱時,直接到了lvs,再**給了nginx,nginx再去後端apache獲取資料

測試:當訪問www.b.com/test235.html, lvs收到後**給了ngx206來接收了請求,

當我把ngx206的nginx服務給關了,再次請求,lvs收到後**給了ngx170,

當把ngx206開啟時,在lvs_keepd上ipvsadm一下,會看到206重新加入進來。

這裡具體怎麼看,看訪問日誌。

#這裡有一些是參照網上的一例子,但小兵新測過,可行。

利用magent搭建memcached集群

memcached雖然能夠通過分布式快取,實現其中memcached宕掉不會丟失全部快取資料,但部分資料還是難逃一劫。我們可以利用magent memcached實現主從備份來保證快取資料完好無損,而且magent還可以作為從繼續使用,但大體工作原理如下 1.magent每次寫資料都會寫到主memc...

CentOS環境搭建zookeeper集群篇

1,確定已安裝jdk環境 可看我的centos環境jdk安裝篇 2,解壓zookeeper 3.4.8.tar.gz root yandype home tar zxvf zookeeper 3.4.8.tar.gz 我的zookeeper包是在根目錄的home資料夾下面 解壓後變成zookeepe...

windows單機搭建RabbitMQ集群

1 先安裝erlang,安裝完成後,設定環境變數 變數名 erlang home 變數值 d erl9.1 2 安裝rabbitmq,安裝過程中會自動啟動rabbitmq服務 安裝之前,先設定環境變數 變數名 rabbitmq home 變數值 d rabbitmq server rabbitmq ...