(keepalived只是解決代理的單點和地址漂流問題,因此只能對本機服務進行的Nginx服務進行健康監控檢測)nginx
在部署站點規模不大的網站架構是通常一般使用keepalived+nginx來實現、從而實現輕量級的調度服務功能;用到lvs的場景不是不少,只有大規模的站點部署是纔有可能用到。Nginx實現高可用,經過DNS服務解析,編輯兩條A記錄,從而實現真正的高可用,可是須要兩個公網地址。雖然DNS調度效果不是很理想,可是有後端的nginx來爲其進行優化、填坑,從而達到最理想的部署。
web
http {}中配置 後端
upstream websrvs { #定義組 server 10.10.10.111:80 weight=1; #定義組內站點,權重都爲1 server 10.10.10.112:80 weight=1; #定義組內站點,權重都爲1 }
server {}中配置 服務器
location / { proxy_pass http://websrvs; #引用定義的組 } Keepalived配置文件#vrrp中
Server-1: 網絡
[root@keepalived-1 keepalived]# cat keepalived.conf ! Configuration File for keepalived #全局配置 global_defs { notification_email { root@loaclhost #定義收件人地址 } notification_email_from keepalived@localhost #郵件發件人地址 smtp_server 127.0.0.1 #發送郵件服務器地址 smtp_connect_timeout 10 #鏈接郵件服務器的超時時間 router_id 10.10.10.101 #當前路由的id信息網絡中的節點標識(物理IP地址或主機名) vrrp_mcast_group4 224.0.122.22 #組播地址 } #腳本實現本機nginx服務運行狀態監控 vrrp_script chk_ngx{ script "killall -0 nginx" #使用killall命令探測nginx服務運行是否正常,從而實現健康檢測。 interval 1 weight -5 } #vrrp1 vrrp_instance VI_1 { #一個虛擬路由器的標識, state MASTER #一個虛擬路由器的標識, interface ens33 # 綁定爲當前虛擬路由器使用的物理接口;通常爲網卡地址; virtual_router_id 11 #當前虛擬路由器的唯一標識(相同組的兩臺機器必須一致) priority 100 #當前主機在此虛擬路徑器中的優先級;範圍1-254; advert_int 1 #vrrp通告的時間間隔;心跳間隔時間。 authentication { #認證方式爲:域共享密鑰 auth_type PASS auth_pass 11112222 #最多不要超過8位 } virtual_ipaddress { 10.10.1.1/16 dev ens33 #(接口輔助地址,vip地址,虛擬地址) } #調用服務監控 track_script { #調用vrrp內部定義指令,跟蹤所指定執行腳本的健康狀態 chk_ngx #調用vrrp中定義的chk_ngx } #監控接口 track_interface { ens33 #追蹤/監控 接口 } #觸發通知腳本 notify_master "/etc/keepalived/keepmail.sh master" #當前節點成爲主節點時觸發的腳本; notify_backup "/etc/keepalived/keepmail.sh backup" #當前節點轉爲備節點時觸發的腳本; notify_fault "/etc/keepalived/keepmail.sh fault" #當前節點轉爲「失敗」狀態時觸發的腳本; } #vrrp2 vrrp_instance VI_2 { #一個虛擬路由器的標識, state BACKUP #重要選項,初始或狀態;只能有一個是MASTER,餘下的都應該爲BACKUP; interface ens33 # 綁定爲當前虛擬路由器使用的物理接口;通常爲網卡地址; virtual_router_id 22 #當前虛擬路由器的唯一標識(相同組的兩臺機器必須一致) priority 98 #當前主機在此虛擬路徑器中的優先級;範圍1-254; advert_int 1 #vrrp通告的時間間隔;心跳間隔時間。 authentication { auth_type PASS #認證方式爲:域共享密鑰 auth_pass 11112222 #最多不要超過8位 } virtual_ipaddress { 10.10.1.2/16 dev ens33 #(接口輔助地址,vip地址,虛擬地址) } #調用服務監控 track_script { #調用vrrp內部定義指令,跟蹤所指定執行腳本的健康狀態 chk_ngx #調用vrrp中定義的chk_ngx } #監控接口 track_interface { ens33 #追蹤/監控 接口 } #觸發通知腳本 notify_master "/etc/keepalived/keepmail.sh master" #當前節點成爲主節點時觸發的腳本; notify_backup "/etc/keepalived/keepmail.sh backup" #當前節點轉爲備節點時觸發的腳本; notify_fault "/etc/keepalived/keepmail.sh fault" #當前節點轉爲「失敗」狀態時觸發的腳本; }
Server-2: 架構
[root@keepalived-2 keepalived]# cat keepalived.conf ! Configuration File for keepalived #全局配置 global_defs { notification_email { #定義收件人地址 root@localhost } notification_email_from keepalived@localhost #郵件發件人地址 smtp_server 127.0.0.1 #發送郵件服務器地址 smtp_connect_timeout 10 #鏈接郵件服務器的超時時間 router_id 10.10.10.102 #當前路由的id信息網絡中的節點標識(物理IP地址或主機名) vrrp_mcast_group4 224.0.122.22 #組播地址 } #腳本實現本機nginx服務監控 vrrp_script chk_ngx { script "killall -0 nginx" interval 1 weight -5 } vrrp_instance VI_1 { #一個虛擬路由器的標識, state BACKUP #重要選項,初始或狀態;只能有一個是MASTER,餘下的都應該爲BACKUP; interface ens33 # 綁定爲當前虛擬路由器使用的物理接口;通常爲網卡地址; virtual_router_id 11 #當前虛擬路由器的唯一標識(相同組的兩臺機器必須一致) priority 98 #當前主機在此虛擬路徑器中的優先級;範圍1-254; advert_int 1 #vrrp通告的時間間隔;心跳間隔時間。 authentication { #認證方式爲:域共享密鑰 auth_type PASS auth_pass 11112222 #最多不要超過8位 } virtual_ipaddress { 10.10.1.1/16 dev ens33 #(接口輔助地址,vip地址,虛擬地址) #調用服務監控 track_script { #調用vrrp內部定義指令,跟蹤所指定執行腳本的健康狀態 chk_ngx #調用vrrp中定義的chk_ngx } #監控接口 track_interface { ens33 #追蹤/監控 接口 } #觸發通知腳本 notify_master "/etc/keepalived/keepmail.sh master" #當前節點成爲主節點時觸發的腳本; notify_backup "/etc/keepalived/keepmail.sh backup" #當前節點轉爲備節點時觸發的腳本; notify_fault "/etc/keepalived/keepmail.sh fault" #當前節點轉爲「失敗」狀態時觸發的腳本; } vrrp_instance VI_2 { #一個虛擬路由器的標識, state MASTER #重要選項,初始或狀態;只能有一個是MASTER,餘下的都應該爲BACKUP; interface ens33 # 綁定爲當前虛擬路由器使用的物理接口;通常爲網卡地址; virtual_router_id 22 #當前虛擬路由器的唯一標識(相同組的兩臺機器必須一致) priority 100 #當前主機在此虛擬路徑器中的優先級;範圍1-254; advert_int 1 #vrrp通告的時間間隔;心跳間隔時間。 authentication { auth_type PASS #認證方式爲:域共享密鑰 auth_pass 11112222 #最多不要超過8位 } virtual_ipaddress { 10.10.1.2/16 dev ens33 #(接口輔助地址,vip地址,虛擬地址) } #調用服務監控 track_script { #調用vrrp內部定義指令,跟蹤所指定執行腳本的健康狀態 chk_ngx #調用vrrp中定義的chk_ngx } #監控接口 track_interface { ens33 #追蹤/監控 接口 } #觸發通知腳本 notify_master "/etc/keepalived/keepmail.sh master" #當前節點成爲主節點時觸發的腳本; notify_backup "/etc/keepalived/keepmail.sh backup" #當前節點轉爲備節點時觸發的腳本; notify_fault "/etc/keepalived/keepmail.sh fault" #當前節點轉爲「失敗」狀態時觸發的腳本; }