[Linux]-構建LVS-DR模式+Keepalived高可用群集
Keepalived
Keepalived是一款高可用軟件,它的功能主要包括兩方面:
1)通過IP漂移,實現服務的高可用:服務器集群共享一個虛擬IP,同一時間只有一個服務器占有虛擬IP並對外提供服務,若該服務器不可用,則虛擬IP漂移至另一臺服務器並對外提供服務;
2)對LVS應用服務層的應用服務器集群進行狀態監控:若應用服務器不可用,則keepalived將其從集群中摘除,若應用服務器恢復,則keepalived將其重新加入集群中。
Keepalived可以單獨使用,即通過IP漂移實現服務的高可用,也可以結合LVS使用,即一方面通過IP漂移實現LVS負載均衡層的高可用,另一方面實現LVS應用服務層的狀態監控,如圖所示:
Keepalived
的實現基於VRRP(Virtual Router Redundancy Protocol,虛擬路由器冗余協議),而VRRP是為了解決靜態路由的高可用。
安裝步驟大綱
客戶端:1.1.1.245/8
主LVS:1.1.1.2/8
從LVS:1.1.1.3/8
web服務器:1.1.1.5/8 lo : 1.1.1.1
web服務器:1.1.1.6/8 lo : 1.1.1.1
一、配置LVS服務器(主-從兩臺)
配置IP地址
調整響應參數(主從兩臺服務器都需要配置)
[[email protected] ~]# vim /etc/sysctl.conf
修改
# Controls IP packet forwarding net.ipv4.ip_forward= 1 #開啟路由轉發功能
添加
net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.eth0.send_redirects = 0
保存退出後執行該命令立即生效
[[email protected] ~]# sysctl -p
安裝並配置ipvsadm(主從配置一樣)
掛載光盤
[[email protected] ~]# rpm -ihv /mnt/Packages/ipvsadm-1.26-2.el6.x86_64.rpm
[[email protected] ~]# rpm -ivh /media/CentOS_6.5_Final/Packages/ipvsadm-1.26-2.el6.x86_64.rpm warning: /media/CentOS_6.5_Final/Packages/ipvsadm-1.26-2.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY Preparing... ########################################### [100%] 1:ipvsadm ########################################### [100%]
隨後啟動ipvsadm服務
service ipvsadm start
添加為系統服務
[[email protected] ~]# chkconfig --add ipvsadm
[[email protected] ~]# chkconfig ipvsadm on
配置Keepalived服務器(兩臺一樣)
先安裝Keepalive服務的依賴包(yum),後安裝Keepalived軟件(本地光盤),主從都有
yum步驟回顧
rm -rf /etc/yum.repos.d/* vim /etc/yum.repo.d/yum.repo # [yum] name=yum install baseurl=file:///mnt/ enabled=1 gpgcheck=0
依賴包安裝
yum -y install kernel-devel openssl-devel popt-devel
Keepalived解壓制定路徑為 -C /usr/src
tar -zxvf keepalived-1.2.13.tar.gz -C /usr/src/ cd /usr/src/keepalived-1.2.13/
執行命令安裝
[[email protected] keepalived-1.2.13]# ./configure --prefix=/ --with-kernel- dir=/usr/src/kernels/2.6.32-431.el6.x86_64 make && make install
[[email protected] ~]# /etc/init.d/keepalived start #開啟keepalived服務
[[email protected] ~]# netstat -anp | grep keepalived #查看進程
[[email protected] keepalived-1.2.13]# netstat -anp | grep keepalived raw 0 0 0.0.0.0:112 0.0.0.0:* 7 43771/keepalived raw 0 0 0.0.0.0:112 0.0.0.0:* 7 43771/keepalived raw 0 0 0.0.0.0:255 0.0.0.0:* 7 43770/keepalived raw 0 0 0.0.0.0:255 0.0.0.0:* 7 43770/keepalived unix 2 [ ] DGRAM 65282 43768/keepalived
添加為系統服務就可以用service keepalived start | restart | stop 來進行操作
chkconfig --add keepalived
chkconfig keepalived on
!----------------------------------------------------兩臺一樣的操作到此為止--------------------------------------------------!
Keepalived配置文件(主服務器)
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bak #備份一份,防止誤操作
打開 vim /etc/keepalived/keepalived.conf
更改和刪除(dd刪除,1000dd刪除一千行)
global_defs { router_id R1 #這個路由器的名稱 } vrrp_instance VI_1 { #定義VRRP熱備實例 state MASTER #熱備狀態,MASTER表示是主機 interface eth0 #承載VIP地址的物理接口 virtual_router_id 1 #虛擬路由器的ID號,每個熱備組保持在一組 priority 100 #優先級,數值越大優先級越高 advert_int 1 #通告間隔秒數(心跳頻值) authentication { #認證信息,熱備組保持一致 auth_type PASS #認證類型 auth_pass 1111 #密碼字串 } virtual_ipaddress { #制定飄逸IP地址(VIP,可以有多個) 1.1.1.1 } } virtual_server 1.1.1.1 80 { delay_loop 15 #檢查健康時間 lb_algo rr #定義調度算法 lb_kind DR #定義負載均衡群集的模式 protocol TCP real_server 1.1.1.5 80 { #指定的第一個WEB服務器地址 weight 1 #定義權重值 TCP_CHECK { connect_port 80 #檢查目標的端口 connect_timeout 3 #鏈接超時時間 nb_get_retry 3 #重復次數 delay_before_retry 4 #重試間隔時間 } } real_server 1.1.1.6 80 { #指定的第二個WEB服務器地址 weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 4 } } }
配置完後保存退出,使用 ip a 查看接口轉發狀態
[[email protected] ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 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:0e:05:36 brd ff:ff:ff:ff:ff:ff inet 1.1.1.2/8 brd 1.255.255.255 scope global eth0 inet 1.1.1.1/32 scope global eth0 inet6 fe80::20c:29ff:fe0e:536/64 scope link valid_lft forever preferred_lft forever
Keepalived配置文件(從服務器)
global_defs { router_id R2 #名稱更變 } vrrp_instance VI_1 { state BACKUP #從服務器 interface eth1 #我這個出去的網阿卡是eth1,一般是eth0 virtual_router_id 1 #保持一組 priority 99 #優先級要低於主服務器 advert_int 1 !-----其余於主服務器保持一致------! authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 1.1.1.1 } } virtual_server 1.1.1.1 80 { delay_loop 15 lb_algo rr lb_kind DR protocol TCP real_server 1.1.1.5 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 4 } } real_server 1.1.1.6 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 4 } } }
重啟keepalived服務,ip a 查看,沒有1.1.1.1漂移IP地址,因為在主服務器上
[[email protected] ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 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: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:45:59:3b brd ff:ff:ff:ff:ff:ff inet 1.1.1.3/8 brd 1.255.255.255 scope global eth1 inet6 fe80::20c:29ff:fe45:593b/64 scope link valid_lft forever preferred_lft forever
配置Web服務器
配置IP地址
略
設置VIP*
[[email protected] ~]# cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0 IPADDR=1.1.1.1 NETMASK=255.255.255.255 ONBOOT=yes
添加路由
[[email protected] ~]# route add -host 1.1.1.1 dev lo:0
添加到開機啟動項,註意是追加 >>是追加 >是覆蓋原有內容
[[email protected] ~]# echo "route add -host 1.1.1.1 dev lo:0" >> /etc/rc.local
調整響應參數
[[email protected] ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.default.arp_ignore = 1 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2
sysctl -p使其生效
配置http服務
Web 1
vim /etc/www/html/index.html <h1>我覺得OK,這裏是1</h1><br/> <br/> <h3>1111111111111111</h3>
Web 2
vim /etc/www/html/index.html
<h1>我覺得OK,這裏是2</h1><br/>
<br/>
<h3>2222222222222222</h3>
添加為系統服務
[[email protected] ~]# chkconfig --add httpd
[[email protected] ~]# chkconfig httpd on
客戶機驗證
ping -t 1.1.1.1 會通,當主服務器斷掉後會卡一下,延遲幾秒,這個時候從服務器會代替主服務器的工作,服務器比開許多臺VM的PC性能好很多。
漂移IP會在兩個keepalived服務器之間無縫切換,達到不間斷提供服務的目的性。
網頁訪問使用輪詢rr算法切換
完成,謝謝觀看
---恢復內容結束---
[Linux]-構建LVS-DR模式+Keepalived高可用群集