1、keepalived軟件簡介算法
keepalived是基於vrrp協議實現高可用功能的一種軟件,它能夠解決單點故障的問題,經過keepalived搭建一個高可用的LVS負載均衡集羣時,keepalived還能檢測後臺服務器的運行狀態。
vim
2、vrrp協議原理簡介bash
vrrp(虛擬路由器冗餘協議),是爲了解決網絡上靜態路由出現的單點故障的問題,舉個例子,以下圖服務器
主機A和B均在同一個局域網內,C和D均是該局域網的網關,即A和B想與外網通訊,需指網關到C或D,那究竟指向C好仍是指向D好呢?都很差!當指向C時,若是C出故障時,局域網內的主機就無法與外界通訊了,指向D問題也是同樣,vrrp這時候就有用了,在C和D之間運行vrrp協議,vrrp將C和D虛擬成一個設備E,對外提供一個虛擬ip地址,A和B將網關指向虛擬ip地址便可,在vrrp組內,將各成員分爲MASTER和BACKUP(一個組內只能有1個MASTER,能夠有多個BACKUP),MASTER就是實際上提供服務的節點,MASTER和BACKUP的選舉經過優先級選舉,優先級高的即爲MASTER,VRRP運行時MASTER定時發送VRRP通告信息,表示MASTER工做正常,BACKUP只接收VRRP數據,不發送數據,若是必定時間內沒有接收到MASTER的通告信息,各BACKUP將宣告本身成爲MASTER,發送通告信息,從新進行MASTER選舉狀態。網絡
3、實驗部分負載均衡
ip地址分配:ide
VIP:192.168.56.110
oop
Director Server1 IP:192.168.56.101
spa
Director Server2 IP:192.168.56.102orm
Realserver1 IP:192.168.56.103
Realserver2 IP:192.168.56.104
LVS相關配置方案:
模型:DR
調度算法:rr(輪循)
安裝配置過程:
經過keepalived搭建LVS高可用集羣配置很是簡單,lvs的配置和節點的監控均在keepalived配置文件中配置完成
一、安裝前先檢查/usr/src/kernels目錄下有沒有內核的源碼,後面keepalived編譯時要用到,若是沒有,則先安裝
yum install kernel-devel
二、編譯安裝keepalived
tar zxvf keepalived-1.2.23.tar.gz cd keepalived-1.2.23 ./configure --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.32-642.4.2.el6.x86_64/ make && make install ln -sv /usr/local/sbin/keepalived /sbin/keepalived #建立連接(不建立的話啓動/etc/init.d/keepalived腳本時會報錯)
三、修改配置文件/etc/keepalived/keepalived.conf
#全局定義部分 global_defs { notification_email { root@lzs.com zsgg@lzs.com } #設置發生異常時向哪一個郵箱發通知,能夠設>置多個郵箱,每一個一行,服務器上的sendmail服務必須開啓 notification_email_from keepalived@lzs.com #設置郵件的發送方 smtp_server 192.168.56.1 #設置smtp服務器的ip地址 smtp_connect_timeout 30 #設置鏈接smtp服務器的超時時間 router_id LVS_LZS #keepalived服務器的標識,將顯示在報警郵件的主題>中 } #定義vrrp實例 vrrp_instance VI_1 { state MASTER #指定此主機的角色是MASTER,注意要大寫 interface eth0 #指定綁定的接口,即配置虛擬ip地址的接口 virtual_router_id 51 #指定VRID,該標識爲一個數字,同一個vrrp實例中的MASTER和BACKUP的VRID必須一致 priority 100 #指定優先級,MASTER的優先級必須高於BACKUP advert_int 1 #指定MASTER發送通告信息的時間間隔 authentication { #設置同一個vrrp組中各節點的驗證類型和驗證密碼,>即同一vrrp組下,各節點的驗證類型和驗證密碼必須一致才能互相通訊 auth_type PASS #設置驗證類型,有PASS和HA兩種 auth_pass 1111 #設置驗證密碼, } virtual_ipaddress { #設置虛擬ip地址,可多個 192.168.56.110 192.168.56.120 } } #虛擬服務器定義(在這部分配置LVS) virtual_server 192.168.56.110 80 { #設置虛擬服務器的ip和端口,用空格隔開 delay_loop 6 #每隔6秒對realserver進行健康狀態檢查 lb_algo rr #設置調度算法 lb_kind DR #設置LVS的類型,有DR、NAT和TUN persistence_timeout 50 #設置會話保持時間,用戶在請求頁面後,若在50s內有操做時,請求會一直分發到同一服務節點上,並從新開始計時 protocol TCP #指定轉發協議類型,有UDP和TCP real_server 192.168.56.103 80 { #配置realserver的ip和端口,用空格隔開 weight 1 #設置權重 TCP_CHECK { #對realserver狀態檢查的設置 connect_timeout 3 #3秒無響應時超時 nb_get_retry 3 #表示重試的次數 delay_before_retry 3 #表示重試的時間間隔 } } real_server 192.168.56.104 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
注意要點:keepalived啓動時默認查找/etc/keepalived/keepalived.conf配置文件,若想指定配置文件,可」keepalived -f 配置文件 「啓動。
四、將MASTER的配置文件複製到BACKUP上,並修改配置文件中的state和priority
state BACKUP priority 70 #改得比MASTER小
五、配置realserver服務器
一、編寫啓動腳本
vim /etc/init.d/lvs_rs #! /bin/bash VIP=192.168.56.110 case $1 in start) 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 /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up ;; stop) /sbin/ifconfig lo:0 down 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 "usage:$0 {start|stop}" exit 1 ;; esac
二、添加執行權限
chmod +x /etc/init.d/lvs_rs
三、啓動腳本
./etc/init.d/lvs_rs
六、啓動MASTER和BACKUP上的keepalived服務
/etc/init.d/keepalived start
至此,搭建的LVS集羣系統已正常運行了~~~~