摘要
html
簡述lvs keepalived做用linux
安裝ios
記錄錯誤c++
keepalived配置文件詳解web
LVS全稱爲Linux Virtual Server,工做在ISO模型中的第四層,因爲其工做在第四層,所以與iptables相似,必須工做在內核空間上。所以lvs與iptables同樣,是直接工做在內核中的,叫ipvs,主流的linux發行版默認都已經集成了ipvs,所以用戶只需安裝一個管理工具ipvsadm便可。
算法
Keepalived的做用是檢測服務器的狀態和提供虛IP(VIP),若是有一臺web服務器死機,或工做出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其餘服務器代替該服務器的工做,當服務器工做正常後Keepalived自動將服務器加入到服務器羣中,這些工做所有自動完成,不須要人工干涉,須要人工作的只是修復故障的服務器。bash
安裝lvs(ipvsadm)服務器
安裝依賴負載均衡
yum install -y gcc gcc-c++ makepcre pcre-devel kernel-devel openssl-devel libnl-devel popt-develtcp
下載源碼包
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
tar fvxz ipvsadm-1.26.tar.gz
make&&make install
執行make報錯 undefined reference to `poptGetContext'
緣由缺乏依賴包執行yum install popt-devel popt popt-static -y
安裝keepalived
安裝依賴
yum install openssl-devel popt-devel libnl libnl-devel kernel ipvsadm libnfnetlink* -y
下載源碼包
wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
tar fvxz keepalived-1.2.7.tar.gz
./configure --prefix=/usr/local/ccdt/keepalived
make&&make install
ln -s /usr/local/ccdt/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/ccdt/keepalived/etc/keepalived/ /etc
ln -s /usr/local/ccdt/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/ccdt/keepalived/sbin/keepalived /usr/bin/
lvs keepalived 安裝完成
real_server配置禁止ARP相應的請求,較好比下加到開機啓動便可
注意 修改變量VIP
啓動ipvsadm報錯
Applying IPVS configuration: /etc/init.d/ipvsadm: line 62: /etc/sysconfig/ipvsadm: No such file or directory
解決辦法:遇到這個錯誤,先運行service ipvsadm save。以後再執行service ipvsadm start便可!
命令添加ipvsadm代理
1096 ipvsadm -A -u 192.167.1.105:9966 -s wrr 添加集羣
1097 ipvsadm -a -u 192.167.1.105:9966 -r 192.167.1.2:9966 -g -w 3 添加主機
1099 ipvsadm -a -u 192.167.1.105:9966 -r 192.167.1.6:9966 -g -w 3 添加主機
更多命令示例http://www.toxingwang.com/linux-unix/haorlb/1604.html
配置文件
摘自http://www.cnblogs.com/linuxliu/p/5825108.html
keepalived.conf
一個功能比較完整的keepalived 的配置文件,其配置文件keepalived.conf 能夠包含三個文本塊:全局定義塊、VRRP 實例定義塊及虛擬服務器定義塊。全局定義塊和虛擬服務器定義塊是必須的,若是在只有一個負載均衡器的場合,就不須VRRP 實例定義塊。
#全局定義模塊 ! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc #郵件報警,能夠不設置,後期nagios統一監控。 } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL #此處注意router_id爲負載均衡標識,在局域網內應該是惟一的。 vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } ++++++++++++++++我是分隔符++++++++++++++++++++++ #VRRP實例定義塊 vrrp_instance VI_1 { state MASTER #狀態只有MASTER和BACKUP兩種,而且要大寫,MASTER爲工做狀態,BACKUP是備用狀態。 interface eth0 lvs_sync_daemon_inteface eth0 #這個默認沒有,至關於心跳線接口,DR模式用的和上面的接口同樣,也能夠用機器上的其餘網卡eth1,用來防止腦裂。 virtual_router_id 51 #虛擬路由標識,同一個vrrp_instance的MASTER和BACKUP的vitrual_router_id 是一致的。 priority 100 #優先級,同一個vrrp_instance的MASTER優先級必須比BACKUP高。 advert_int 1 #MASTER 與BACKUP 負載均衡器之間同步檢查的時間間隔,單位爲秒。 authentication { auth_type PASS #驗證authentication。包含驗證類型和驗證密碼。類型主要有PASS、AH 兩種,一般使用的類型爲PASS,\ auth_pass 1111 聽說AH 使用時有問題。驗證密碼爲明文,同一vrrp 實例MASTER 與BACKUP 使用相同的密碼才能正常通訊。 } virtual_ipaddress { #虛擬ip地址,能夠有多個地址,每一個地址佔一行,不須要子網掩碼,同時這個ip 必須與咱們在lvs 客戶端設定的vip 相一致! 192.168.200.100 192.168.200.101 192.168.200.102 } } ++++++++++++++++我是分隔符++++++++++++++++++++++ #虛擬服務器定義塊 virtual_server 192.168.200.100 443 { #虛擬IP,來源與上面的虛擬IP地址,後面加空格加端口號 delay_loop 6 #健康檢查間隔,單位爲秒 lb_algo rr #負載均衡調度算法,通常用wrr、rr、wlc lb_kind NAT #負載均衡轉發規則。通常包括DR,NAT,TUN 3種。 persistence_timeout 50 #會話保持時間,會話保持,就是把用戶請求轉發給同一個服務器,否則剛在1上提交完賬號密碼,就跳轉到另外一臺服務器2上了。 protocol TCP #轉發協議,有TCP和UDP兩種,通常用TCP,沒用過UDP。 real_server 192.168.201.100 80 { #真實服務器,包括IP和端口號 weight 1 #權重,數值越大,權重越高 TCP_CHECK { #經過tcpcheck判斷RealServer的健康狀態 connect_timeout 3 #鏈接超時時間 nb_get_retry 3 #重連次數 delay_before_retry 3 #重連時間間隔 connect_port 80 #檢測端口 } } }
其實配置文件中主要要修改的選項沒有不少,有三個參數要注意
route_id XXX #MASTER和BACKUP不一樣
virtual_router_id 51 #同一個實例下,MASTER和BACKUP相同
priority 100 #優先級,同一個實例下,MASTER高於BACKUP
一直在學習...... 歡迎「吐槽」