Centos6.8 搭建Lvs+Keepalived


 

 

Keepalived

  keepalived是一個類似於layer3, 4 & 7交換機制的軟件,也就是我們平時說的第3層、第4層和第7層交換。Keepalived是自動完成,不需人工干涉。

簡介:

  Keepalived的作用是檢測服務器的狀態,如果有一台web服務器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常后Keepalived自動將服務器加入到服務器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的服務器。

作用:

  主要用作RealServer的健康狀態檢查以及LoadBalance主機和BackUP主機之間failover的實現。
  高可用web架構: LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可選 可不選)
 

環境:

 Keepalived-Master:Centos6.8   192.168.126.129

 Keepalived-Slave:  Centos6.8   192.168.126.136

 Web-Server:Centos6.8    192.168.126.135

 Web-Server:Centos6.8    192.168.126.134

 

 事先已經搭建好Lvs,如果是全新環境,請參考:配置Lvs

 

1、安裝編譯環境、關閉防火牆

[root@localhost /]# service iptables stop
[root@localhost /]#yum -y install openssl-devel kernel-devel make gcc openssl-devel libnl* popt*

2、下載安裝包

[root@localhost /]#wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
[root@localhost /]#http://mirror.centos.org/centos/6/os/x86_64/Packages/popt-static-1.13-7.el6.x86_64.rpm
[root@localhost /]#yum -y install popt-static-1.13-7.el6.x86_64.rpm

3、解壓安裝Keepalived

[root@localhost /]#ln -s /usr/src/kernels/2.6.32-220.13.1.el6.x86_64/ /usr/src/linux  #設置軟連接
[root@localhost /]#tar zxvf keepalived-1.2.7.tar.gz
[root@localhost /]#cd keepalived-1.2.7
[root@localhost keepalived-1.2.7]# ./configure --with-kernel-dir=/usr/src/kernels/2.6.32-358.2.1.el6.x86_64/

執行完上條命令,看是否和下圖紅色框中一致

繼續執行

4、編譯

[root@localhost keepalived-1.2.7]# make && make install


[root@localhost keepalived-1.2.7]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
[root@localhost keepalived-1.2.7]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
[root@localhost keepalived-1.2.7]# mkdir /etc/keepalived
[root@localhost keepalived-1.2.7]# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
[root@localhost keepalived-1.2.7]# cp /usr/local/sbin/keepalived /usr/sbin/

5、The First:打開IP Forward功能,如不打開此功能下面的配置都無濟於事

[root@localhost keepalived-1.2.7]# vim /etc/sysctl.conf 
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.
#
# Use '/sbin/sysctl -a' to list all possible parameters.

# Controls IP packet forwarding

net.ipv4.ip_forward = 1      #此處原本是0,一定要修改為1,一定要為1.
[root@localhost keepalived-1.2.7]# sysctl -p   #使配置立即生效

以上配置,需要在Master和Slave進行配置,以下配置請看清楚Master和Slave服務器

Master服務器進行Keepalived配置  -  Keepalived-Master

1、修改Keepalived配置

[root@localhost keepalived-1.2.7]# vim /etc/keepalived/keepalived.conf 


具體的參數詳情請參考:http://zhumeng8337797.blog.163.com/blog/static/100768914201191762253640/
下面是我配置好的文件內容
(可以刪除原先的配置,把下面的配置進行修改然后粘貼進去,郵箱我這邊沒有配置,如果你有需求可以進行配置)
global_defs {
   notification_email {
    willam@cn.accommate.com   #設置報警郵件單個或多個地址
   }
   notification_email_from server@laiwojia.la #郵件的發送地址
   smtp_server 192.168.138.10 #smtp 地址
   smtp_connect_timeout 30 #連接smtp服務器超時的實際
   router_id LVS_MASTER  #路由ID兩台機器不能相同。LVS2更改為不同
}
#vrrp 實例定義部分
vrrp_instance VI_1 {
    state MASTER  #keepalived 的角色 MASTER 表示主服務器。LVS2更改為:BACKUP
    interface eth0 #指定監測網卡
    virtual_router_id 51 #虛擬路由標示,相同實例,需相同標示。
    priority 150 #優先級 數字越大 優先級越高 MASTER的優先級高於BACKUP優先級(如master 150,backup 100)
    advert_int 1 #設定主備之間檢查時間 單位s
    authentication {  #設定驗證類型和密碼
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress { #設定虛擬IP地址 可以設置多個 每行一個
       192.168.126.100
    }
}
#虛擬服務器部分
virtual_server 192.168.126.100 80 {
    delay_loop 6 #設定運行情況檢查時間 單位s
    lb_algo rr #負載調度算法 rr即輪叫算法
    lb_kind DR #設置LVS負載機制 NAT TUN DR 三種模式可選
    persistence_timeout 0  #會話時間
                            #會話保持在某個服務節點
                            #用戶在動態頁面50s內沒有任何動作,那么后面就會被分發到其他節點
                            #用戶一直動作,不受50s限制
    protocol TCP  #使用協議
    #以下為real_server部分
    real_server 192.168.126.135 80 {
        weight 1  #服務節點權值,數字越大,權值越高
                  #權值的大小可以為不同性能的服務器分配不同的負載
                  #這樣才能有效合理的利用服務器資源
        TCP_CHECK {  #狀態檢查部分
          connect_timeout 3 #3s無響應超時
          nb_get_retry 3  #重試次數
          delay_before_retry 3   #重試間隔
          connect_port 80 #連接端口
        }
    }
    real_server 192.168.126.134 80 {
        weight 1  #服務節點權值,數字越大,權值越高
                  #權值的大小可以為不同性能的服務器分配不同的負載
                  #這樣才能有效合理的利用服務器資源
        TCP_CHECK {  #狀態檢查部分
          connect_timeout 3 #3s無響應超時
          nb_get_retry 3  #重試次數
          delay_before_retry 3   #重試間隔
          connect_port 80 #連接端口
        }
    }
}

2、重啟服務

[root@localhost keepalived-1.2.7]# chkconfig keepalived on
[root@localhost keepalived-1.2.7]# service keepalived start

3、查看進程

[root@localhost keepalived-1.2.7]# ps aux | grep keepalived

結果如下
Keepalived正常運行時,共啟動3個進程,其中一個進程是父進程,負責監控其子進程;一個是vrrp子進程;另外一個是checkers子進程。
如果此時只看到2個進程,請從安裝keepalived的步驟重新執行。

root       5082  0.0  0.1  42172  1008 ?        Ss   07:02   0:00 keepalived -D   #進程1
root       5084  0.1  0.2  44400  2312 ?        S    07:02   0:00 keepalived -D   #進程2
root       5085  0.2  0.1  44276  1640 ?        S    07:02   0:00 keepalived -D   #進程3
root       5087  0.0  0.0 103324   892 pts/2    S+   07:03   0:00 grep keepalived

4、查看虛擬IP(重要

[root@localhost keepalived-1.2.7]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:27:22:3f brd ff:ff:ff:ff:ff:ff
    inet 192.168.126.129/24 brd 192.168.126.255 scope global eth0
    inet 192.168.126.100/32 brd 192.168.126.100 scope global eth0:0     #如果看到此條信息,說明虛擬IP已經自動配置上了
    inet6 fe80::20c:29ff:fe27:223f/64 scope link 
       valid_lft forever preferred_lft forever

還有3個命令在先列示下,並不用執行

顯示集群中服務器ip信息:ipvsadm -ln

查看日志:tail -f /var/log/messages

查看請求轉發情況:ipvsadm -lcn | grep 虛擬IP

至此,Keepalived_MASTER服務器已經配置好並啟動了

------------------------------------------------------------------------------------------------

Slave服務器進行Keepalived配置  -  Keepalived-Slave

1、修改Keepalived配置文件

[root@localhost keepalived-1.2.7]# vim /etc/keepalived/keepalived.conf 

(注:相比keepalived-master,只有三處不同global_defs中的router_id、vrrp_instance中的state、priority
(注意keepAlived的配置文件中有一個網卡設備,虛擬機的網卡設備可能是不一樣的,有的是eth0,有的是eth1,所以也是要改動的,否則從服務器的服務器很有可能服務不正常)
)

! Configuration File for keepalived
global_defs {
        notification_email {
                willam@cn.accommate.com
        }
        notification_email_from admin@test.com
        smtp_server 127.0.0.1
        smtp_connect_timeout 30
        router_id LVS_BACKUP     #BACKUP
}

vrrp_instance VI_1 {
    state BACKUP    #BACKUP
    interface eth1
    virtual_router_id 51   #此數值兩邊保持一致
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.126.100
    }
}

virtual_server 192.168.126.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 192.168.126.135 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
             delay_before_retry 3
        }
    }

    real_server 192.168.126.134 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
     

2、重啟服務

[root@localhost keepalived-1.2.7]# chkconfig keepalived on
[root@localhost keepalived-1.2.7]# service keepalived start

測試LVS層

1、執行ip a主服務器

LVS_Master中的IP信息

LVS_Backup中的IP信息

現在停掉LVS_Master的Keepalived服務,看看LVS_Backup中是否可以自動家長虛擬IP地址,並且轉發請求

LVS_Master

LVS_Backup:

切換成功,訪問網頁:http://192.168.126.100 看看是否能正常顯示

測試WEB服務器,斷掉web2訪問網頁

斷掉web1開啟web2訪問網頁

 

 

經過不斷的測試,終於完成了,望大家能夠指正。還有一點就是很多時候都是配置文件中的一些小毛病造成的,比如:

1、keepAlived中的通知郵箱好像必須要寫,否則不正確;

2、keepAlived中的網卡設備要注意,按照服務器的實際情況填寫;

3、使用時,必要的端口要打開,或者關掉防火牆。否則有事不提供服務;

4、一些命令行的執行,少一些參數執行就可能會有一些問題。

.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM