91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Keepalive基礎(chǔ)知識(shí)

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 2024-12-19 09:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Keepalive

1 keepalived介紹

官網(wǎng):http://keepalived.org/

功能:

基于vrrp協(xié)議完成地址流動(dòng)

為vip地址所在的節(jié)點(diǎn)生成ipvs規(guī)則(在配置文件中預(yù)先定義)

為ipvs集群的各RS做健康狀態(tài)檢測(cè)

基于腳本調(diào)用接口完成腳本中定義的功能,進(jìn)而影響集群事務(wù),以此支持nginx、haproxy等服務(wù)

2 Keepalived 架構(gòu)

官方文檔:

https://keepalived.org/doc/
http://keepalived.org/documentation.html

83afe822-bc5a-11ef-8732-92fbcf53809c.png

用戶(hù)空間核心組件:

vrrp stack:VIP消息通告 虛擬ip

checkers:監(jiān)測(cè)real server(簡(jiǎn)單來(lái)說(shuō) 就是監(jiān)控后端真實(shí)服務(wù)器的服務(wù))是否存活

system call:實(shí)現(xiàn) vrrp 協(xié)議狀態(tài)轉(zhuǎn)換時(shí)調(diào)用腳本的功能

SMTP:郵件組件(報(bào)警郵件)

IPVS wrapper:生成IPVS規(guī)則(直接生成ipvsadm)

Netlink Reflector:網(wǎng)絡(luò)接口(將虛擬地址ip(vip)地址飄動(dòng))

WatchDog:監(jiān)控進(jìn)程(整個(gè)架構(gòu)是否有問(wèn)題)

控制組件:提供keepalived.conf 的解析器,完成Keepalived配置

IO復(fù)用器:針對(duì)網(wǎng)絡(luò)目的而優(yōu)化的自己的線程抽象

內(nèi)存管理組件:為某些通用的內(nèi)存管理功能(例如分配,重新分配,發(fā)布等)提供訪問(wèn)權(quán)限

keeplive可以配合ngnix等軟件,反向代理

83befb5a-bc5a-11ef-8732-92fbcf53809c.png

3安裝keepalive

yum  install   keepalived  -y

3.1 編譯安裝 keepalived

yum install gcc curl openssl-devel libnl3-devel net-snmp-devel  -y
# 安裝依賴(lài)包環(huán)境

https://keepalived.org/download.html
# 官網(wǎng)下載安裝包
wget https://keepalived.org/software/keepalived-2.2.2.tar.gz


tar  xf   keepalived-2.2.2.tar.gz
cd   keepalived-2.2.2/


./configure --prefix=/usr/local/keepalived
make   &&  make  install

自動(dòng)生成service文件

#生成怕并修改配置文件
mkdir    /etc/keepalived 
cp /usr/local/keepalived/etc/keepalived/keepalived.conf  /etc/keepalived/keepalived.conf 

需要修改配置文件的21行  網(wǎng)卡名稱(chēng), 否則起不來(lái)

sed  -i   's/eth0/ens33/'       

4 Keepalived 相關(guān)文件

軟件包名:keepalived

主程序文件:/usr/sbin/keepalived

主配置文件:/etc/keepalived/keepalived.conf

配置文件示例:/usr/share/doc/keepalived/

Unit File:/lib/systemd/system/keepalived.service

Unit File的環(huán)境配置文件:

/etc/sysconfig/keepalived CentOS

4.1配置組成

/etc/keepalived/keepalived.conf 配置組成

GLOBAL CONFIGURATION

Global definitions(全局配置):定義郵件配置,route_id ,vrrp配置,組播地址 等

VRRP CONFIGURATION

VRRP instance(s):定義vrrp協(xié)議中的每個(gè)vrrp虛擬路由器的規(guī)則,基本信息

LVS CONFIGURATION(lvs調(diào)度服務(wù)器的規(guī)則設(shè)置)

Virtual server group(s)

Virtual server(s):LVS集群的VS和RS

4.2全局配置

#/etc/keepalived/keepalived.conf 
global_defs {
 notification_email {
 root@localhost
 #keepalived 發(fā)生故障切換時(shí)郵件發(fā)送的目標(biāo)郵箱,可以按行區(qū)分寫(xiě)多個(gè)
 root@localhost
 360601212@qq.com 
 }
 notification_email_from keepalived@localhost  #發(fā)郵件的地址
 smtp_server 127.0.0.1   #郵件服務(wù)器地址
 smtp_connect_timeout 30   #郵件服務(wù)器連接timeout
 router_id   LVS01
 #每個(gè)keepalived主機(jī)唯一標(biāo)識(shí),建議使用當(dāng)前主機(jī)名,但多節(jié)點(diǎn)重名不影響
 vrrp_skip_check_adv_addr 
 #對(duì)所有通告報(bào)文都檢查,會(huì)比較消耗性能,啟用此配置后,如果收到的通告報(bào)文和上一個(gè)報(bào)文是同一個(gè)路由器,則跳過(guò)檢查,默認(rèn)值為全檢查
vrrp_strict 
#嚴(yán)格遵守VRRP協(xié)議,啟用此項(xiàng)后以下?tīng)顩r將無(wú)法啟動(dòng)服務(wù):1.無(wú)VIP地址 2.配置了單播鄰居 3.在VRRP版本2中有IPv6地址,開(kāi)啟動(dòng)此項(xiàng)并且沒(méi)有配置vrrp_iptables時(shí)會(huì)自動(dòng)開(kāi)啟iptables防火墻規(guī)則,默認(rèn)導(dǎo)致VIP無(wú)法訪問(wèn),建議不加此項(xiàng)配置。
 vrrp_garp_interval 0 
 #gratuitous ARP messages 免費(fèi)ARP報(bào)文發(fā)送延遲,0表示不延遲
 vrrp_gna_interval 0 
 #unsolicited NA messages (不請(qǐng)自來(lái))消息發(fā)送延遲
 vrrp_mcast_group4 225.0.0.18
 #指定組播IP地址范圍:224.0.0.0到239.255.255.255,默認(rèn)值:224.0.0.18 
 vrrp_iptables    
 #此項(xiàng)和vrrp_strict同時(shí)開(kāi)啟時(shí),則不會(huì)添加防火墻規(guī)則,如果無(wú)配置vrrp_strict項(xiàng),則無(wú)需啟用此項(xiàng)配置
}

4.3配置虛擬路由器

vrrp_instance  {
#為vrrp的實(shí)例名,一般為業(yè)務(wù)名稱(chēng)
 配置參數(shù)
 ......
 }
#配置參數(shù):
state MASTER|BACKUP
#當(dāng)前節(jié)點(diǎn)在此虛擬路由器上的初始狀態(tài),狀態(tài)為MASTER或者BACKUP
interface IFACE_NAME 
#綁定為當(dāng)前虛擬路由器使用的物理接口,如:eth0,bond0,br0,可以和VIP不在一個(gè)網(wǎng)卡
virtual_router_id VRID 
#每個(gè)虛擬路由器惟一標(biāo)識(shí),范圍:0-255,每個(gè)虛擬路由器此值必須唯一,否則服務(wù)無(wú)法啟動(dòng),同屬一個(gè)虛擬路由器的多個(gè)keepalived節(jié)點(diǎn)必須相同,務(wù)必要確認(rèn)在同一網(wǎng)絡(luò)中此值必須唯一
priority 100 
#當(dāng)前物理節(jié)點(diǎn)在此虛擬路由器的優(yōu)先級(jí),范圍:1-254,值越大優(yōu)先級(jí)越高,每個(gè)keepalived主機(jī)節(jié)點(diǎn)此值不同

advert_int 1
#vrrp通告的時(shí)間間隔,默認(rèn)1s


authentication { 
#認(rèn)證機(jī)制
 auth_type AH|PASS  
 #AH為IPSEC認(rèn)證(不推薦),PASS為簡(jiǎn)單密碼(建議使用)
 auth_pass  
 #預(yù)共享密鑰,僅前8位有效,同一個(gè)虛擬路由器的多個(gè)keepalived節(jié)點(diǎn)必須一樣
}
include    /etc/keealived/conf.d/*.conf
virtual_ipaddress { 
#虛擬IP,生產(chǎn)環(huán)境可能指定上百個(gè)IP地址
 / brd  dev  scope  label 

范例:

[root@localhost keepalived]#vim keepalived.conf
global_defs {
   notification_email {
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1  #郵箱地址寫(xiě)成自己
   smtp_connect_timeout 30
   router_id lvs_01   #修改成主機(jī)名
   vrrp_skip_check_adv_addr
   #vrrp_strict   注釋嚴(yán)格模式
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
include   /etc/keepalived/conf.d/*.conf  #添加子配置文件


[root@localhost keepalived]#mkdir  conf.d
[root@localhost conf.d]# vim  conf.d/test.conf
vrrp_instance VI_1 {
    state MASTER
    interface ens33   #修改網(wǎng)卡
    virtual_router_id 51  #路由器id 需要主從保持一致
    priority 100   
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    192.168.91.188/24   #設(shè)置虛擬ip
    }
}


將配置文件復(fù)制到從節(jié)點(diǎn)
scp  keepalived.conf    192.168.91.11:/etc/keepalived/
scp  keepalived.conf    192.168.91.11:/etc/conf.d/test.conf


修改配置文件
global_defs {
   notification_email {
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1  
   smtp_connect_timeout 30
   router_id lvs_02  #修改成主機(jī)名
   vrrp_skip_check_adv_addr
   #vrrp_strict   注釋嚴(yán)格模式
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
include   /etc/keepalived/conf.d/*.conf  #添加子配置文件


vrrp_instance VI_1 {
    state BACKUP       #修改類(lèi)型為備節(jié)點(diǎn)
    interface ens33  
    virtual_router_id 51  #路由器id 需要主從保持一致   不用修改
    priority 80           #優(yōu)先級(jí)調(diào)小
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    192.168.91.188/24   #設(shè)置虛擬ip
    }
}

4.3.1各種模式實(shí)驗(yàn)(依托于大實(shí)驗(yàn)成功后)

搶占模式,非搶占模式,延遲搶占模式

[root@localhost keepalived]#tcpdump -i ens33 -nn host 224.0.0.18
#啟動(dòng)服務(wù)可以抓包查看 
[root@localhost ~]#ping 192.168.91.10
#真實(shí)服務(wù)器ping是可以通的
可以做實(shí)驗(yàn) 一直抓包

#非搶占模式
默認(rèn)模式 使用的 搶占式
主節(jié)點(diǎn)會(huì)搶占回來(lái),會(huì)造成 兩次網(wǎng)絡(luò)動(dòng)蕩。
#注意:要關(guān)閉 VIP搶占,必須將各 keepalived 服務(wù)器state配置為BACKUP
#非搶占式
#1主機(jī)配置
vrrp_instance VI_1 {
 state BACKUP   #都為BACKUP
 interface ens33
 virtual_router_id 66
 priority 100  #優(yōu)先級(jí)高
 advert_int 1
 nopreempt     #添加此行,都為nopreempt
#2主機(jī)配置
vrrp_instance VI_1 {
 state BACKUP     #都為BACKUP
 interface ens33
 virtual_router_id 66
 priority 80    #優(yōu)先級(jí)低
 advert_int 1
 nopreempt  #添加此行,都為nopreempt
 
#延遲搶占
preempt_delay #   #指定搶占延遲時(shí)間為#s,默認(rèn)延遲300s
#注意:需要各keepalived服務(wù)器state為BACKUP,并且不要啟用 vrrp_strict
#1主機(jī)配置
vrrp_instance VI_1 {
 state BACKUP   #都為BACKUP
 interface eth0
 virtual_router_id 66
 
 priority 100     #優(yōu)先級(jí)高
 advert_int 1 
 preempt_delay 30 #搶占延遲模式,默認(rèn)延遲300s
 
 #2主機(jī)配置
vrrp_instance VI_1 {
 state BACKUP    #都為BACKUP
 interface eth0
 virtual_router_id 66:
 priority 80     #優(yōu)先級(jí)低
 advert_int 1 
 
 priority 80   #優(yōu)先級(jí)高
 advert_int 1 
 preempt_delay 30  #搶占延遲模式,默認(rèn)延遲300s

4.3.2 單播多播地址

修改多播:

#兩邊都要加主從

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_R1
   vrrp_mcast_group4 234.6.6.6
   #添加此行
   0-127
   128-191
   192-223
   
   224-239
   
}
[root@localhost ~]# tcpdump -i ens33 -nn host 234.6.6.6
#抓包查看查看
[root@localhost keepalived]#systemctl stop keepalived.service
#模擬故障,可以正常切換

修改單播:

#在所有節(jié)點(diǎn)vrrp_instance語(yǔ)句塊中設(shè)置對(duì)方主機(jī)的IP,建議設(shè)置為專(zhuān)用于對(duì)應(yīng)心跳線網(wǎng)絡(luò)的地址,而非
使用業(yè)務(wù)網(wǎng)絡(luò)
unicast_src_ip  #指定發(fā)送單播的源IP
unicast_peer {
     #指定接收單播的對(duì)方目標(biāo)主機(jī)IP
  ......
}

#主服務(wù)器
vrrp_instance VI_1 {
  state MASRER
  interface eth0
  virtual_router_id 66
  priority 100
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 123456
  }
  virtual_ipaddress {
    10.0.0.10/24 dev eth0 label eth0:1
  }
  unicast_src_ip 192.168.91.100   #本機(jī)IP     master 100   backup101
  unicast_peer{
  192.168.91.101 #指向?qū)Ψ街鳈C(jī)IP 如果有多個(gè)keepalived,再下面加其它節(jié)點(diǎn)的I
  }
}


vrrp_instance VI_2 {
  state BACKUP
  interface eth0
  virtual_router_id 66
  priority 80
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 123456
  }
  virtual_ipaddress {
    10.0.0.11/24 dev eth0 label eth0:1
  }
  unicast_src_ip 192.168.91.100   #本機(jī)IP
  unicast_peer {
  192.168.91.101 #指向?qū)Ψ街鳈C(jī)IP 如果有多個(gè)keepalived,再下面加其它節(jié)點(diǎn)的IP
  }
}


備服務(wù)器
vrrp_instance VI_1 {
  state BACKUP
  interface eth0
  virtual_router_id 66
  priority 100
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 123456
  }
  virtual_ipaddress {
    10.0.0.10/24 dev eth0 label eth0:1
  }
}


vrrp_instance VI_2 {
  state MASTER
  interface eth0
  virtual_router_id 66
  priority 80
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 123456
  }
  virtual_ipaddress {
    10.0.0.11/24 dev eth0 label eth0:1
  }
  
}



#復(fù)制段
unicast_src_ip 192.168.91.100   
  unicast_peer {
   192.168.91.101
 }

unicast_src_ip 192.168.91.101   
  unicast_peer {
   192.168.91.100  
 }
 
[root@localhost ~]#tcpdump -i ens33 host -nn 192.168.91.100
#在從節(jié)點(diǎn)抓包驗(yàn)證

#復(fù)制有問(wèn)題試試這段
unicast_src_ip 192.168.91.100
    unicast_peer {
    192.168.91.101
    }

4.3.3 通知腳本

當(dāng)前節(jié)點(diǎn)成為主節(jié)點(diǎn)時(shí)觸發(fā)的腳本

notify_master |

當(dāng)前節(jié)點(diǎn)轉(zhuǎn)為備節(jié)點(diǎn)時(shí)觸發(fā)的腳本

notify_backup |

當(dāng)前節(jié)點(diǎn)轉(zhuǎn)為“失敗”狀態(tài)時(shí)觸發(fā)的腳本

notify_fault |

通用格式的通知觸發(fā)機(jī)制,一個(gè)腳本可完成以上三種狀態(tài)的轉(zhuǎn)換時(shí)的通知

notify |

當(dāng)停止VRRP時(shí)觸發(fā)的腳本

notify_stop |
#配置郵箱
[root@localhost opt]#vim /etc/mail.rc 
set from=940132245@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=940132245@qq.com
set smtp-auth-password=
[root@localhost opt]#vim keepalive.sh 
#!/bin/bash
#
contact='940132245@qq.com'
notify() {
 mailsubject="$(hostname) to be $1, vip floating"
 mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"
 echo "$mailbody" | mail -s "$mailsubject" $contact:
}
case $1 in

master)
 notify master
 ;;
backup)
 notify backup
 ;;
fault)
 notify fault
 ;;
*)
 echo "Usage: $(basename $0) {master|backup|fault}"
 exit 1
 ;;
esac

[root@localhost opt]#vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 100
    preempt_delay 30
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.91.16
    }
   notify_master "/opt/keepalive.sh master"
   notify_backup "/opt/keepalive.sh backup"
   notify_fault "/opt/keepalive.sh fault"
}


[root@ka1-centos7 ~]#chmod +x   /etc/keepalived/keepalived.conf
#模擬master故障
[root@ka1-centos7 ~]#killall keepalived  

4.3.4 日志功能

開(kāi)啟單獨(dú)日志功能

[root@localhost opt]#keepalived --help
#查看幫助
[root@localhost opt]#ps aux |grep keep
root      25326  0.0  0.0 118616  1372 ?        Ss   11月20   0:00 /usr/sbin/keepalived -D
root      25327  0.0  0.1 127480  3336 ?        S    11月20   0:01 /usr/sbin/keepalived -D
root      25328  0.0  0.1 129500  2852 ?        S    11月20   0:01 /usr/sbin/keepalived -D
root      26877  0.0  0.0 112676   980 pts/0    S+   00:37   0:00 grep --color=auto keep
[root@localhost opt]#vim /lib/systemd/system/keepalived.service 
EnvironmentFile=-/etc/sysconfig/keepalived
ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS
[root@localhost opt]#vim /etc/sysconfig/keepalived
KEEPALIVED_OPTIONS="-D -S 6"

[root@localhost opt]#vim /etc/rsyslog.conf 
# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log
local6.*                                                /var/log/keepalived.log

[root@localhost opt]#systemctl restart keepalived.service rsyslog.service 
[root@localhost opt]#cat /var/log/keepalived.log
#查看日志文件

83cf7b60-bc5a-11ef-8732-92fbcf53809c.png

實(shí)際操作:

LVS + Keepalived 高可用群集

環(huán)境

主keepalived:192.168.91.100     lvs
備keepalived:192.168.91.101     lvs
web1:192.168.91.102
web2:192.168.91.103    
vip:192.168.91.188
客戶(hù)機(jī)訪問(wèn)
systemctl stop firewalld.service 
setenforce 0
[root@localhost ~]#systemctl stop firewalld.service 
[root@localhost ~]#setenforce 0
[root@localhost ~]#yum install ipvsadm keepalived -y
[root@localhost ~]#modprobe ip_vs
[root@localhost ~]#cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@localhost keepalived]#ipvsadm-save > /etc/sysconfig/ipvsadm
[root@localhost keepalived]#systemctl start ipvsadm.service
[root@localhost keepalived]#cd /etc/keepalived/
[root@localhost keepalived]#cp keepalived.conf keepalived.conf.bak
#復(fù)制一份

[root@localhost keepalived]#vim keepalived.conf
global_defs {
   router_id HA_TEST_R2                  ####本路由器的服務(wù)器名稱(chēng) HA_TEST_R2
}
vrrp_instance VI_1 {                     ####定義VRRP熱備實(shí)列
   state BACKUP                          ####熱備狀態(tài),backup表示輔服務(wù)器
   interface ens33                       ####表示承載VIP地址的物理接口
   virtual_router_id 1                   ####虛擬路由器的ID號(hào),每個(gè)熱備組保持一致
   priority 99                           ####優(yōu)先級(jí),優(yōu)先級(jí)越大優(yōu)先級(jí)越高
   advert_int 1                          ####通告間隔秒數(shù)(心跳頻率)
   authentication {                      ####認(rèn)證信息,每個(gè)熱備組保持一致
      auth_type PASS                     ####認(rèn)證類(lèi)型
      auth_pass 123456                   ####認(rèn)證密碼
   }
   virtual_ipaddress {                   ####漂移地址(VIP),可以是多個(gè)
      192.168.100.10
   }
}




#需要修改項(xiàng)

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   #修改郵箱指向自己(10行)
   smtp_connect_timeout 30
   router_id LVS_01
   #指定服務(wù)器名稱(chēng)主備需要不一樣(12行)
   vrrp_skip_check_adv_addr
   #vrrp_strict
   #14行需要注釋否則服務(wù)啟動(dòng)有問(wèn)題
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    #指定服務(wù)器類(lèi)型MASTER為主 BACKUP為備(20行)
    interface ens33
    #修改網(wǎng)卡名稱(chēng)為ens33(21)
    virtual_router_id 10
    #指定虛擬路由器的ID號(hào)主備需要一致
    #nopreempt 
    #非搶占模式兩個(gè)節(jié)點(diǎn)都需要配置去掉注釋
    priority 100
    #設(shè)定優(yōu)先級(jí)數(shù)字越大優(yōu)先級(jí)越高,準(zhǔn)備需要不一樣
    advert_int 1
    #通告間隔(查看是否存活)
    authentication {
        auth_type PASS
        #認(rèn)證類(lèi)型
        auth_pass 123456
        #修改驗(yàn)證密碼,主備需要一樣(27行)
    }
    virtual_ipaddress {
        192.168.91.188
        #指定群集vip地址
    }
}
virtual_server 192.168.91.188 80 {
    delay_loop 6
    #健康間隔時(shí)間6秒
    lb_algo rr
    #調(diào)度算法輪詢(xún)
    lb_kind DR
    #lvs模式為DR 
    persistence_timeout 0
    #連接保持時(shí)間改為0 否則 無(wú)法體現(xiàn)效果
    protocol TCP
    #采用協(xié)議
    
 real_server 192.168.91.103 80 {
 #43行修改地址為真實(shí)主機(jī)地址
        weight 1
        #45行刪除
        #節(jié)點(diǎn)權(quán)重
        TCP_CHECK {
            connect_port 80
            #檢查目標(biāo)端口
            connect_timeout 3
            #連接超時(shí) 
            nb_get_retry 3
            #重試次數(shù)
            delay_before_retry 3
            #重試間隔時(shí)間
        }
    }
 real_server 192.168.91.105 80 {
 #第二個(gè)
        weight 1
        TCP_CHECK{
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }



#從服務(wù)器配置
systemctl stop firewalld.service 
setenforce 0
[root@localhost ~]#systemctl stop firewalld.service 
[root@localhost ~]#setenforce 0
[root@localhost ~]#yum install ipvsadm keepalived -y
[root@localhost keepalived]#scp keepalived.conf root@192.168.91.101:/etc/keepalived/
#將配置文件拷入 從服務(wù)器
[root@localhost keepalived]#systemctl start keepalived.service 
[root@localhost keepalived]#ip a
[root@localhost keepalived]#vim /etc/sysctl.conf 
[root@localhost keepalived]#sysctl -p
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0 




[root@localhost keepalived]#vim keepalived.conf
#備份keepalive
12    router_id LVS_02
20     state BACKUP
23     priority 99
[root@localhost keepalived]#systemctl start keepalived.service 
[root@localhost keepalived]#ipvsadm
[root@localhost keepalived]#ipvsadm -ln
[root@localhost keepalived]#vim /etc/sysctl.conf 
[root@localhost keepalived]#sysctl -p
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

節(jié)點(diǎn)模式

[root@localhost ~]#systemctl stop firewalld

[root@localhost ~]#systemctl start httpd
[root@localhost ~]#yum install httpd -y
[root@localhost html]#ifconfig lo:0 192.168.91.188 netmask 255.255.255.255
[root@localhost html]#vim /etc/sysctl.conf 
[root@localhost html]#sysctl -p
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
[root@localhost network-scripts]#route add -host 192.168.91.188 dev lo:0
#設(shè)置路由

5 面試重點(diǎn) keepalived 主上也有188 從188

#模擬腦裂
[root@localhost keepalived]#iptables -A INPUT -s 192.168.91.100 -j REJECT 
#在備份主機(jī)中加入此項(xiàng)
[root@localhost keepalived]#ip a
#可以在主備上都發(fā)現(xiàn)vip地址

腦裂解釋

什么是腦裂?
在高可用(HA)系統(tǒng)中,當(dāng)聯(lián)系2個(gè)節(jié)點(diǎn)的“心跳線”斷開(kāi)時(shí),本來(lái)為一整體、動(dòng)作協(xié)調(diào)的HA系統(tǒng),就分裂成為2個(gè)獨(dú)立的個(gè)體。
由于相互失去了聯(lián)系,都以為是對(duì)方出了故障。兩個(gè)節(jié)點(diǎn)上的HA軟件像“裂腦人”一樣,爭(zhēng)搶“共享
資源”、爭(zhēng)起“應(yīng)用服務(wù)”,就會(huì)發(fā)生嚴(yán)重后果。共享資源被瓜分、兩邊“服務(wù)”都起不來(lái)了;或者兩邊
“服務(wù)”都起來(lái)了,但同時(shí)讀寫(xiě)“共享存儲(chǔ)”,導(dǎo)致數(shù)據(jù)損壞


都有哪些原因?qū)е履X裂?
高可用服務(wù)器對(duì)之間心跳線鏈路發(fā)生故障,導(dǎo)致無(wú)法正常通信。
因心跳線壞了(包括斷了,老化)。
因網(wǎng)卡及相關(guān)驅(qū)動(dòng)壞了,ip配置及沖突問(wèn)題(網(wǎng)卡直連)
因心跳線間連接的設(shè)備故障(網(wǎng)卡及交換機(jī))
高可用服務(wù)器上開(kāi)啟了 iptables防火墻阻擋了心跳消息傳輸。
高可用服務(wù)器上心跳網(wǎng)卡地址等信息配置不正確,導(dǎo)致發(fā)送心跳失敗
其他服務(wù)配置不當(dāng)?shù)仍?,如心跳方式不同,心跳廣插沖突、軟件Bug等。
多組keepalive服務(wù)器造成   組播沖突    1.換組播地址   2.改成單播          
默認(rèn): 
單播:
組播: 
廣播:
A   1 -127
B   128-191
C   192-223
D   224-239          224.0.0.18    


20. 如何解決keepalived腦裂問(wèn)題?
在實(shí)際生產(chǎn)環(huán)境中,我們從以下方面防止腦裂:
#同時(shí)使用串行電纜和以太網(wǎng)電纜連接、同時(shí)使用兩條心跳線路,這樣一條線路斷了,另外一條還是好的,依然能傳送心跳消息
#當(dāng)檢查腦裂時(shí)強(qiáng)行關(guān)閉一個(gè)心跳節(jié)點(diǎn)(這個(gè)功能需要特殊設(shè)備支持,如stonith、fence)相當(dāng)于備節(jié)點(diǎn)接收不到心跳消息,通過(guò)單獨(dú)的線路發(fā)送關(guān)機(jī)命令關(guān)閉主節(jié)點(diǎn)的電源

rsyslog   分割日志

#做好對(duì)腦裂的監(jiān)控報(bào)警解決常見(jiàn)方案:
如果開(kāi)啟防火墻,一定要讓心跳消息通過(guò),一般通過(guò)允許IP段的形式解決
可以拉一條以太網(wǎng)網(wǎng)線或者串口線作為主被節(jié)點(diǎn)心跳線路的冗余
開(kāi)發(fā)檢測(cè)程序通過(guò)監(jiān)控軟件檢測(cè)腦裂



keepalived      lvs      負(fù)載均衡  反向代理
lvs   高可用
后端服務(wù)器的 健康性檢查問(wèn)題


正向代理作用:    加快訪問(wèn)速度     可以繞過(guò)防火墻
代理的客戶(hù)端
我要訪問(wèn)   google       正向代理服務(wù)器             google 服務(wù)器



反向代理:   負(fù)載均衡     優(yōu)化資源    
代理的服務(wù)端的

客戶(hù)端 不需要知道服務(wù)端到底是什么樣子的,只要能訪問(wèn)就行


keepalived  腦裂
vrrp  協(xié)議  心跳線收不到

6.實(shí)現(xiàn)其它應(yīng)用的高可用性VRRP Script

keepalived利用 VRRP Script 技術(shù),可以調(diào)用外部的輔助腳本進(jìn)行資源監(jiān)控,并根據(jù)監(jiān)控的結(jié)果實(shí)現(xiàn)優(yōu)先動(dòng)態(tài)調(diào)整,從而實(shí)現(xiàn)其它應(yīng)用的高可用性功能

任何軟件組合 形成 高科用的 架構(gòu)

vrrp script

手動(dòng)編寫(xiě)腳本 , 來(lái)實(shí)現(xiàn) 故障的切換

參考配置文件:

/usr/share/doc/keepalived/keepalived.conf.vrrp.localcheck

6.1VRRP Script配置

分兩步實(shí)現(xiàn):

定義腳本

vrrp_script:自定義資源監(jiān)控腳本,vrrp實(shí)例根據(jù)腳本返回值,公共定義,可被多個(gè)實(shí)例調(diào)用,定義在vrrp實(shí)例之外的獨(dú)立配置塊,一般放在global_defs設(shè)置塊之后。通常此腳本用于監(jiān)控指定應(yīng)用的狀態(tài)。一旦發(fā)現(xiàn)應(yīng)用的狀態(tài)異常,則觸發(fā)對(duì)MASTER節(jié)點(diǎn)的權(quán)重減至低于SLAVE節(jié)點(diǎn),從而實(shí)現(xiàn) VIP 切換到 SLAVE 節(jié)點(diǎn)

vrrp_script