為什么要用Keepalived來實現負載均衡器高可用,這里只拿HaProxy負載均衡器來進行說明:
對于所有懂運維的小伙伴來說,都應該知道,無論后端的服務器都強大,這里的后端服務器說的是真正提供服務的主機,負載均衡器后面有緩存服務器,緩存服務器后面才是真正提供服務的服務器。而這個服務器小編稱它為"后端服務器",而在這后端服務器后面是我們的數據緩存服務器,之后是數據庫,也是整個企業的命脈。這整個架構是非常龐大的,其中的每一個角色都很重要而且必不可少,所以,這里的每一個角色都不可能只是一臺服務器,它們會是多臺服務器組成的集群,通過集群技術可以在付出較低成本的情況下獲得在性能、可靠性、靈活性方面的相對較高的收益。
當集群組成之后,它們不可能一臺一臺的開放給用戶,若真要這么做,那么每一臺后端服務器都要配一個公網地址,并且拿web網站來說,用戶訪問網站要么是輸入網站的域名跳轉進來,要么就是通過點擊其他頁面中的內容跳轉進來,而為每一臺主機配置一個公網地址,要在DNS解析上把這些公網地址都配置成一個域名,這操作是非常非常可怕的,公網地址是有限的并且是收費的;我們且不談DNS解析及公網地址費用,就拿某貓、某云來說,他們的后端服務器可不僅僅只有上萬臺,甚至多達千萬臺,這讓每臺提供服務的機器都有一個公網IP是不現實的。
因此,在這種情況下,我們可以想象,若是能有一臺服務器只負責轉發用戶的訪問請求,而轉發的時候通過一定的算法來判斷用哪個后端server來提供服務,而后端的所有機器全部用私有IP,并且真正提供服務的后端機器只需要處理請求就可以,無需與用戶直接交互,也減少了服務器的壓力,一方面也能提升性能。那么這臺服務器就是
我們的負載均衡器
而這個負載均衡器只需要負責接收請求并轉發即可,所以,通常一個負載均衡器所能處理的并發請求已經足以滿足絕大部分企業的要求。但是,若這個負載均衡器宕機了呢?即便負載均衡器后面的服務器再強大,緩存命中率再高,web服務器(就是小編說的后端服務器)處理能力再強、性能再好,數據緩存命中再高,數據庫的讀寫、并發等...哪怕后面的服務器能上天都將無法繼續提供服務。所以,基于這種問題,我們勢必要對負載均衡器來做高可用。
簡單來講,指由兩臺服務器運行某種同樣的應用,為用戶提供服務,當某一臺出現問題時,用戶的請求將由另一臺服務器繼續提供,從而實現高可用性。
HA的三種工作方式
(1)主從模式(主機和備機)
(2)雙機雙工
(3)集群模式
keepalived
(1)keepalived 基于vrrp協議來實現HA 的。
vrrp 協議,可以實現服務的切換。
(2)keepalived 啟動后會有三個進程:
父進程: 內存管理,子進程管理等等
子進程:VRRP 子進程
子進程:healthchecker 子進程
注:healthchecker 子進程負責檢查各主機間的主機狀態,當發現某臺主機上的
服務不可用時,將通知vrrp 子進程,由vrrp 子進程來完成服務的切換。
keepalived+lvs
網絡拓撲
五臺虛擬機在同一網絡段
安裝軟件
client:yum install elinks -y
lvs1 和lvs2:yum install keepalived ipvsadm -y
web1 和web2:yum install httpd -y
在lvs1 上編輯配置文件
(1)vim /etc/keepalived/keepalived.conf
global_defs {
notification_email { ? ? ? ? ? ? ? ?#發郵件給誰
eroot@localhost
}
notification_email_from root@localhost ? ? ? ?#誰發郵件
smtp_server 127.0.0.1 ? ? ? ? ? #簡單郵件傳輸協議服務器IP
smtp_connect_timeout 30
router_id node1 ? ? ? ? ? ? ? ? ? #服務器路由標識
}
vrrp_instance VI_1 { ? ? ? ? ? #實例(instance)
state MASTER ? ? ? ? ? ? ? ? ? #狀態:主機
interface eno33554976 ? ?#虛擬IP 使用的網卡
virtual_router_id 51 ? ? ? ? ? ?#虛擬路由ID 標識
priority 100 ? ? ? ? ? ? ? ? ? ? ? ?#優先級
advert_int 1 ? ? ? ? ? ? ? ? ? #組播信息發送間隔
authentication { ? ? ? ? ? ? ? ?#驗證信息
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { ? ? ? ? ? ? ?#虛擬IP(VIP)
192.168.0.254
}
}
(1)vim dr.sh(LVS 采用DR 模式)
#!/bin/bash
ipvsadm -C
ipvsadm -A -t 192.168.0.254:80 -s rr
ipvsadm -a -t 192.168.0.254:80 -r 192.168.0.2:80 -g
ipvsadm -a -t 192.168.0.254:80 -r 192.168.0.4:80 -g
在lvs2 上編輯配置文件
(1)vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
root@localhost
}
notification_email_from root@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node2
}
vrrp_instance VI_1 {
state BACKUP
interface eno33554976
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.254
}
}
(2)vim dr.sh(LVS 采用DR 模式)
#!/bin/bash
ipvsadm -C
ipvsadm -A -t 192.168.0.254:80 -s rr
ipvsadm -a -t 192.168.0.254:80 -r 192.168.0.2:80 -g
ipvsadm -a -t 192.168.0.254:80 -r 192.168.0.4:80 -g
在web1、web2 上
(1)配置httpd
(2)編輯web.sh 腳本:
vim web.sh
#!/bin/bash
ifconfig lo:0 192.168.0.254 netmask 255.255.255.255 up
route add -host 192.168.0.254 dev lo:0
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
在lvs1 和lvs2 上運行:systemctl restart keepalived
bash dr.sh
在web1 和web2 上:systemctl restart httpd
bash web.sh
客戶端測試:elinks http://192.168.0.254
可以看到web1 和web2 上的網頁交替出現。
互動區
* 你對以上內容有什么看法?你最關注云計算哪個趨勢?如果你還有想了解的技術話題,歡迎留言分享。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/5884.html
摘要:在協議實現里,虛擬路由器使用作為虛擬地址,就是唯一的,這個地址同一時間只有一個物理路由器占用。在虛擬路由器里面的物理路由器組里面通過多播地址來定時發送通告消息。負責健康檢查,包括常見的各種檢查方式。 公司內部 OA 系統要做線上高可用,避免單點故障,所以計劃使用2臺虛擬機通過 Keepalived 工具來實現 nginx 的高可用(High Avaiability),達到一臺nginx...
摘要:雙主是一個比較簡單的高可用架構,適用于中小集群,今天就說說怎么用做的高可用。缺點也比較明顯,就是增加從節點的情況下,從節點不會主動切換同步對象,而且腳本需要自己實現,有一定風險。 雙主 + keepalived 是一個比較簡單的 MySQL 高可用架構,適用于中小 MySQL 集群,今天就說說怎么用 keepalived 做 MySQL 的高可用。 1 概述 1.1 keepalive...
閱讀 741·2021-11-23 09:51
閱讀 2443·2021-10-11 11:10
閱讀 1313·2021-09-23 11:21
閱讀 1098·2021-09-10 10:50
閱讀 894·2019-08-30 15:54
閱讀 3335·2019-08-30 15:53
閱讀 3294·2019-08-30 15:53
閱讀 3194·2019-08-29 17:23