天天看點

CentOS6.5高可用叢集LVS+Keepalived(DR模式)

環境介紹

CentOS6.5高可用叢集LVS+Keepalived(DR模式)

作業系統:centos6.5_x64 mini

負載均衡模式:dr(直接路由)

lvs與keepalived簡述:

lvs是linux virtual server的簡寫,意即linux虛拟伺服器,是一個虛拟的伺服器叢集系統。使用叢集技術和linux作業系統實作一個高性能、高可用的伺服器,很好的可伸縮性、可靠性和管理性。

lvs叢集采用ip負載均衡技術和基于内容請求分發技術。排程器具有很好的吞吐率,将請求均衡地轉移到不同的伺服器上執行,且排程器自動屏蔽掉伺服器的故障,進而将一組伺服器構成一個高性能的、高可用的虛拟伺服器。

keepalived采用vrrp(virtual router redundancy protocol,虛拟路由備援協定)熱備份協定,以軟體的方式實作linux伺服器的多機熱備功能。vrrp是針對路由器的一種備份解決方案-----由多台路由器組成一個熱備組。通過共用的虛拟ip位址對外提供服務;每個熱備組内同一時刻隻有一台主伺服器提供服務,其他伺服器處于備援狀态,若目前線上的伺服器失敗,其他伺服器會自動接替(優先級決定接替順序)虛拟ip位址,以繼續提供服務。

一、配置主從lvs伺服器

安裝依賴包: 

1

<code>[root@localhost ~]</code><code># yum install-y gcc gcc-c++ makepcre pcre-devel kernel-devel openssl-devel libnl-devel popt-devel</code>

1、安裝ipvsadm

2

3

4

<code>wget http:</code><code>//www</code><code>.linuxvirtualserver.org</code><code>/software/kernel-2</code><code>.6</code><code>/ipvsadm-1</code><code>.26.</code><code>tar</code><code>.gz</code>

<code>tar</code> <code>zxvf ipvsadm-1.26.</code><code>tar</code><code>.gz</code>

<code>cd</code> <code>ipvsadm-1.26</code>

<code>make</code> <code>&amp;&amp; </code><code>make</code> <code>install</code>

2、安裝keepalived 

5

<code>wget http:</code><code>//www</code><code>.keepalived.org</code><code>/software/keepalived-1</code><code>.2.7.</code><code>tar</code><code>.gz</code>

<code>tar</code> <code>zxvf keepalived-1.2.7.</code><code>tar</code><code>.gz</code>

<code>cd</code> <code>keepalived-1.2.7</code>

<code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/keepalived</code>

将keepalived配置成系統服務 

<code>cp</code> <code>/usr/local/keepalived/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/keepalived</code> <code>/etc/init</code><code>.d/</code>

<code>cp</code> <code>/usr/local/keepalived/etc/sysconfig/keepalived</code> <code>/etc/sysconfig/</code>

<code>mkdir</code> <code>/etc/keepalived/</code>

<code>cp</code> <code>/usr/local/keepalived/etc/keepalived/keepalived</code><code>.conf </code><code>/etc/keepalived/</code>

<code>cp</code> <code>/usr/local/keepalived/sbin/keepalived</code> <code>/usr/sbin/</code>

3、修改主keepalived配置檔案(備隻修改router_id、state和priority) 

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

<code>[root@localhost ~]</code><code># vi /etc/keepalived/keepalived.conf</code>

<code>! configuration file forkeepalived</code>

<code>global_defs {</code>

<code>notification_email {</code>

<code>test</code><code>@sina.com            </code><code>#故障接受聯系人</code>

<code> </code><code>}</code>

<code>notification_email_from admin@</code><code>test</code><code>.com   </code><code>#故障發送人</code>

<code>smtp_server 127.0.0.1    </code><code>#本機發送郵件</code>

<code>smtp_connect_timeout 30</code>

<code>router_id lvs_master     </code><code>#backup上修改為lvs_backup</code>

<code>vrrp_instance vi_1 {</code>

<code>state master             </code><code>#backup上修改為backup</code>

<code>interface eth0</code>

<code>virtual_router_id 51     </code><code>#虛拟路由辨別,主從相同</code>

<code>priority 100             </code><code>#backup上修改為90</code>

<code>advert_int 1</code>

<code>authentication {</code>

<code>auth_type pass</code>

<code>auth_pass 1111           </code><code>#主從認證密碼必須一緻</code>

<code>virtual_ipaddress {      </code><code>#web虛拟ip(vtp)</code>

<code>172.0.0.10</code>

<code>  </code><code>}</code>

<code>virtual_server 172.0.0.10 80 { </code><code>#定義虛拟ip和端口</code>

<code>delay_loop 6    </code><code>#檢查真實伺服器時間,機關秒</code>

<code>lb_algo rr      </code><code>#設定負載排程算法,rr為輪訓</code>

<code>lb_kind dr      </code><code>#設定lvs負載均衡dr模式</code>

<code>persistence_timeout 50 </code><code>#同一ip的連接配接60秒内被配置設定到同一台真實伺服器</code>

<code>protocol tcp    </code><code>#使用tcp協定檢查realserver狀态</code>

<code>real_server 172.0.0.13 80 {  </code><code>#第一個web伺服器</code>

<code>weight 3          </code><code>#節點權重值</code>

<code>tcp_check {       </code><code>#健康檢查方式</code>

<code>connect_timeout 3 </code><code>#連接配接逾時</code>

<code>nb_get_retry 3    </code><code>#重試次數</code>

<code>delay_before_retry 3  </code><code>#重試間隔/s</code>

<code>}</code>

<code>real_server 172.0.0.14 80 {  </code><code>#第二個web伺服器</code>

<code>weight 3</code>

<code>tcp_check {</code>

<code>connect_timeout 3</code>

<code>nb_get_retry 3</code>

<code>delay_before_retry 3</code>

<code>     </code><code>}</code>

<code>[root@localhost ~]</code><code># service keepalived restart #啟動keepalived</code>

二、分别在兩台web伺服器編寫腳本并啟動

<code>[root@localhost ~]</code><code># vi /etc/init.d/real.sh</code>

<code>#description : start realserver</code>

<code>vip=172.0.0.10</code>

<code>. </code><code>/etc/init</code><code>.d</code><code>/functions</code>

<code>case</code> <code>"$1"</code> <code>in</code>

<code>start)</code>

<code>/sbin/ifconfig</code> <code>lo:0 $vip broadcast $vip netmask 255.255.255.255 up</code>

<code>echo</code> <code>"1"</code> <code>&gt;</code><code>/proc/sys/net/ipv4/conf/lo/arp_ignore</code>

<code>echo</code> <code>"2"</code> <code>&gt;</code><code>/proc/sys/net/ipv4/conf/lo/arp_announce</code>

<code>echo</code> <code>"1"</code> <code>&gt;</code><code>/proc/sys/net/ipv4/conf/all/arp_ignore</code>

<code>echo</code> <code>"2"</code> <code>&gt;</code><code>/proc/sys/net/ipv4/conf/all/arp_announce</code>

<code>echo</code> <code>"lvs realserver start ok"</code>

<code>;;</code>

<code>stop)</code>

<code>/sbin/ifconfig</code> <code>lo:0 down</code>

<code>echo</code> <code>"0"</code> <code>&gt;</code><code>/proc/sys/net/ipv4/conf/lo/arp_ignore</code>

<code>echo</code> <code>"0"</code> <code>&gt;</code><code>/proc/sys/net/ipv4/conf/lo/arp_announce</code>

<code>echo</code> <code>"0"</code> <code>&gt;</code><code>/proc/sys/net/ipv4/conf/all/arp_ignore</code>

<code>echo</code> <code>"0"</code> <code>&gt;</code><code>/proc/sys/net/ipv4/conf/all/arp_announce</code>

<code>echo</code> <code>"lvs realserver stoped ok"</code>

<code>*)</code>

<code>echo</code> <code>"usage: $0 {start|stop}"</code>

<code>exit</code> <code>1</code>

<code>esac</code>

<code>[root@localhost ~]</code><code># chmod +x /etc/init.d/real.sh</code>

<code>[root@localhost ~]</code><code># /etc/init.d/real.sh start</code>

<code>lvs realserver start ok</code>

<code>[root@localhost ~]</code><code># echo "/etc/init.d/real.sh start" &gt;&gt; /etc/rc.local</code>

<code>[root@localhost ~]</code><code># service httpd start</code>

<code>[root@localhost ~]</code><code># echo “192.168.0.30″ &gt; /var/www/html/index.html</code>

<code>[root@localhost ~]</code><code># echo “192.168.0.40″ &gt; /var/www/html/index.html</code>

<code>[root@localhost ~]</code><code># service iptables stop  #關閉防火牆</code>

<code>[root@localhost ~]</code><code># setenforce 0  #臨時關閉selinux</code>

三、測試及常用指令

http://172.0.0.10 #通路一直重新整理會輪訓顯示172.0.0.13/14

模拟宕掉主lvs,伺服器照常工作,再宕掉web1,這時隻會顯示web2,這樣就實作ip負載均衡,高可用叢集。當主lvs恢複後,會切換成主動伺服器,如果keepalived監控子產品檢測web故障恢複後,恢複的主機又将此節點加入叢集系統中。

常用指令:

[root@localhost ~]# ipvsadm -ln #顯示叢集中伺服器ip資訊

[root@localhost ~]# ip addr #顯示vtp綁定在哪個伺服器上

[root@localhost ~]# tail -f /var/log/messges

(從日志中可知,主機出現故障後,備機立刻檢測到,此時備機變為master角色,并且接管了主機的虛拟ip資源,最後将虛拟ip綁定在etho裝置上)

繼續閱讀