Keepalived
keepalived是一個類似於layer3, 4 & 7交換機制的軟件,也就是我們平時說的第3層、第4層和第7層交換。Keepalived是自動完成,不需人工干涉。
簡介:
Keepalived的作用是檢測服務器的狀態,如果有一台web服務器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常后Keepalived自動將服務器加入到服務器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的服務器。
作用:
環境:
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、一些命令行的執行,少一些參數執行就可能會有一些問題。
.