5-2企業高可用方案-keepalived入門及模塊講解

物理路由器:
        master:主設備
        backup:備用設備
        priority:優先級
    VIP:Virtual IP
    VMAC:Virtual MAC(00-00-5e-00-01-VRID)
        GraciousARP

通告:心跳,優先級等;週期性;

搶佔式,非搶佔式;

安全工做:
    認證:
        無認證
        簡單字符認證
        MD5

工做模式:
    主/備:單虛擬路徑器;
    主/主:主/備(虛擬路徑器1),備/主(虛擬路徑器2)

keepalived:
vrrp協議的軟件實現,原生設計的目的爲了高可用ipvs服務;
基於vrrp協議完成地址流動;
爲全部ipvs節點生成ipvs規則(在配置文件中預先定義);
爲ipvs集羣的各RS作健康狀態檢測,基於檢測結果完成節點管理;
基於腳本調用接口經過執行腳本完成腳本中定義的功能,進而影響集羣事務(這裏說的是完成其餘服務的高可用);node

組件:
    核心組件:
        vrrp stack
        ipvs wrapper
        checkers
    控制組件:配置文件分析器
    IO複用器
    內存管理組件

HA Cluster的配置前提:
(1)各節點時間必須同步;
ntp,chrony
(2)確保iptables及selinux不會成爲阻礙;
(3)各節點之間可經過主機名互相通訊(對KeepAlived並不是必須);
(4)確保各節點的用於集羣服務的接口支持MULTICAST通訊;
D類:224.0.0.0~239.255.255.255
(5)各節點之間的root用戶能夠基於密鑰認證的ssh服務完成互相通訊;(並不是必須)linux

keepalived安裝配置:
CentOS6.4+隨base倉庫提供;vim

程序環境:
    主配置文件:/etc/keepalived/keepalived.conf
    主程序文件:/usr/sbin/keepalived
    Unit File:keepalived.service
    Unit File的環境配置文件:/etc/sysconfig/keepalived
配置文件組件部分:---有三個配置段
    TOP HIERACHY---頂級配置段
        GLOBAL CONFIGURATION
            Global definitions---全局定義
            Static routes/addresses---靜態路由
        VRRP CONFIGURATION
            VRRP synchronization group(s):vrrp同步組;(同進同退,兩臺路由器對外提供虛擬IP,對內也提供虛擬IP,可是vip1在哪臺路由器上,vip2也應該在哪一個節點上,nat集羣須要同步組)
            VRRP instance(s)(實例):每一個vrrp instance 即一個vrrp路由器;
        LVS CONFIGURATION
            Virtual server group(s)
            Virtual server(s):ipvs集羣的vs和rs;

單主配置示例:
    !Configuration File forkeepalived

    global_defs {
        notification_email {
            root@localhost
        }
        notification_email_from keepalived@localhost
        smtp_server 127.0.0.1
        smtp_connect_timeout 30
        router_id node1
        vrrp_mcast_group4 224.0.100.19
    }

    vrrp_instance VI_1 {
        state BACKUP
        interface eno16777736
        virtual_router_id 14
        priority 98
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 571f97b2
        }
        virtual_ipaddress {
            10.1.0.91/16 dev eno16777736
        }
    }

配置語法:
    配置虛擬路由器:
     vrrp_instance <STRING> {
        ......
     }

     專用參數:
        state MASTER|BACKUP:當前節點在此虛擬路由器上的初始狀態;只能有一個是MASTER,餘下的都應該爲BACKUP;
        interface IFACE_NAME:綁定爲當前虛擬路由器使用的物理接口;
        virtual_router_id VRID:當前虛擬路由器的惟一標識,範圍是0-255;
        priority 100:當前主機在此虛擬路由器中的優先級;範圍1-254;
        advert_int 1:vrrp通告的時間間隔;
        authentication {
            auth_type AH|PASS
            auth_pass <PASSWORD>
        }
        virtual_ipaddress {
            <IPADDR>/<MASK>brd<IPADDR>dev<STRING>scpoe<SCOPE>label<LABEL>
            192.168.200.17/24 dev eth1
            192.168.200.18/24 dev eth2 label eth2:1
        }
        track_interface {
            eth0
            eth1
            ...
        }
        配置要監控的網絡接口,一旦接口出現故障,則轉爲FAULT狀態;
        nopreempt:定義工做模式爲非搶佔模式;
        preempt_delay 300:搶佔模式下,節點上線後觸發新選舉操做的延遲時長;

        定義通知腳本:
            notify_master<STRING>|<QUOTED-STRING>:當前節點成爲主節點時觸發的腳本;
            notify_backup<STRING>|<QUOTED-STRING>:當前節點轉爲備節點時觸發的腳本;
            notify_fault<STRING>|<QUOTED-STRING>:當前節點轉爲"失敗"狀態時觸發的腳本;
            notify<STRING>|<QUOTED-STRING>:通用格式的通知觸發機制,一個腳本可完成以上三種狀態的轉換時的通知

視頻中的配置:集羣中各節點是經過多播通訊,要保證多播功能是打開的
node1:
ntpdate 172.16.0.1---同步時間
vim /etc/chrony.conf---chronyd服務的配置文件,把其中的server能夠指向本地主機測試用
systemctl restart chronyd.service---重啓服務
systemctl enable chronyd.service---設置成開機自動啓動
iptables -vnL---查看有沒有規則,沒有就能夠,若是有,不能清空能夠添加一條放行重啓iptables服務
yum info iptables-services---查看iptables服務安裝包信息
cat /etc/hosts---查看域名解析
ifconfig---網卡信息中要包含MULTICAST這個信息,才表示支持多播功能
ip link set multicast on dev eno16777736---開啓網卡的多播功能安全

yum -y install keepalived
rpm -ql keepalived---查看包服務器

視頻中keepalived.conf
!Configuration File for keepalived網絡

global_defs {
notification_email {---收郵件地址,要在互聯網上真正能接收br/>root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc---發郵件地址,能夠假裝源地址,可是有的服務器不容許假裝,要經過下面的smtp_server的檢查
smtp_server 127.0.0.1---通常是本機,可使用ss -tnl查看25號端口始終是開啓的,能夠很容易的從本機發送郵件到本機,例如:echo "hello" | mail -s "hi" root@localhost---s能夠給上郵件的標題,收郵件的命令是mail,就能夠看到收到的郵件,按提示的數字就能夠打開查看郵件
smtp_connect_timeout 30
router_id nide1---用來標識當前主機
vrrp_mcast group4 224.1.101.33---224.0.0.18是默認的,可是有可能會衝突,能夠本身隨便寫一個
}app

vrrp_instance VI_1 {---第一個實例就是第一個路由器,VI_1是名稱隨便定義
state MASTER---配置爲主設備,可是還須要設置優先級
priority 100---優先級是100
interface eno167777736---把vip綁定到哪一個網卡設備
virtual_router_id 33---0到255之間使用哪個都行,可是兩個設備之間要統一
advert_int 1---每隔多長時間向外通告一次
authentication {---要不要認證
auth_type PASS---簡單字符串認證
auth_pass RT3SKUI2---這裏不要使用默認的1111,能夠用openssl rand -base64 7生成一個隨機的字符串
}
virtual_ipaddress {---指定IP地址的格式爲ip、掩碼、設備、別名
172.16.0.99/16 dev eno16777736 label eno16777736:0
}
}ssh

scp keepalived.conf node2:/etc/keepalived/---複製到node2節點
systemctl start keepalived.service---此時啓動keepalived,就會搶佔成爲主節點
systemctl status keepalived
ifconfig---就能夠看到ip地址配置上去了,若是此時停掉服務,node2節點仍然會搶回去
tcpdump -i eno16777736 -nn host 224.1.101.33---監聽網卡上指向224.1.101.33的信息包,能夠看到一秒鐘發送一個包tcp


雙主模型的配置:
視頻中keepalived.conf
!Configuration File for keepalivedide

global_defs {
notification_email {---收郵件地址,要在互聯網上真正能接收br/>root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc---發郵件地址,能夠假裝源地址,可是有的服務器不容許假裝,要經過下面的smtp_server的檢查
smtp_server 127.0.0.1---通常是本機,可使用ss -tnl查看25號端口始終是開啓的,能夠很容易的從本機發送郵件到本機,例如:echo "hello" | mail -s "hi" root@localhost---s能夠給上郵件的標題,收郵件的命令是mail,就能夠看到收到的郵件,按提示的數字就能夠打開查看郵件
smtp_connect_timeout 30
router_id nide1---用來標識當前主機
vrrp_mcast group4 224.1.101.33---224.0.0.18是默認的,可是有可能會衝突,能夠本身隨便寫一個
}

vrrp_instance VI_1 {---第一個實例就是第一個路由器,VI_1是名稱隨便定義
state MASTER---配置爲主設備,可是還須要設置優先級
priority 100---優先級是100
interface eno167777736---把vip綁定到哪一個網卡設備
virtual_router_id 33---0到255之間使用哪個都行,可是兩個設備之間要統一
advert_int 1---每隔多長時間向外通告一次
authentication {---要不要認證
auth_type PASS---簡單字符串認證
auth_pass RT3SKUI2---這裏不要使用默認的1111,能夠用openssl rand -base64 7生成一個隨機的字符串
}
virtual_ipaddress {---指定IP地址的格式爲ip、掩碼、設備、別名
172.16.0.99/16 dev eno16777736
}
}

vrrp_instance VI_2 {---第一個實例就是第一個路由器,VI_1是名稱隨便定義
state BACKUP---配置爲主設備,可是還須要設置優先級
priority 96---優先級是100
interface eno167777736---把vip綁定到哪一個網卡設備
virtual_router_id 34---0到255之間使用哪個都行,可是兩個設備之間要統一
advert_int 1---每隔多長時間向外通告一次
authentication {---要不要認證
auth_type PASS---簡單字符串認證
auth_pass Ra3S7Uy2---這裏不要使用默認的1111,能夠用openssl rand -base64 7生成一個隨機的字符串
}
virtual_ipaddress {---指定IP地址的格式爲ip、掩碼、設備、別名
172.16.0.98/16 dev eno16777736
}
}

systemctl stop keepalived.service---有時候不支持重載配置,因此須要重啓服務
systemctl start keepalived.service
tcpdump -i eno16777736 -nn host 224.1.101.33
ip a l---列出網卡上的ip地址---能夠看到同一個網卡有多個ip地址

node2:
ntpdate 172.16.0.1---同步時間
systemctl restart chronyd.service---重啓服務
systemctl enable chronyd.service---設置成開機自動啓動
systemctl status chronyd.service---查看狀態若是顯示enabled就表示已經開機自動啓動

視頻中keepalived.conf
!Configuration File for keepalived

global_defs {
notification_email {---收郵件地址,要在互聯網上真正能接收br/>root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc---發郵件地址,能夠假裝源地址,可是有的服務器不容許假裝,要經過下面的smtp_server的檢查
smtp_server 127.0.0.1---通常是本機,可使用ss -tnl查看25號端口始終是開啓的,能夠很容易的從本機發送郵件到本機,例如:echo "hello" | mail -s "hi" root@localhost---s能夠給上郵件的標題,收郵件的命令是mail,就能夠看到收到的郵件,按提示的數字就能夠打開查看郵件
smtp_connect_timeout 30
router_id nide2---用來標識當前主機
vrrp_mcast group4 224.1.101.33---224.0.0.18是默認的,可是有可能會衝突,能夠本身隨便寫一個
}

vrrp_instance VI_1 {---第一個實例就是第一個路由器,VI_1是名稱隨便定義
state BACKUP---配置爲從設備,可是還須要設置優先級
priority 96---優先級應該比master低
interface eno167777736---把vip綁定到哪一個網卡設備
virtual_router_id 33---0到255之間使用哪個都行,可是兩個設備之間要統一
advert_int 1---每隔多長時間向外通告一次
authentication {---要不要認證
auth_type PASS---簡單字符串認證
auth_pass RT3SKUI2---這裏不要使用默認的1111,能夠用openssl rand -base64 7生成一個隨機的字符串
}
virtual_ipaddress {---指定IP地址的格式爲ip、掩碼、設備、別名
172.16.0.99/16 dev eno16777736 label eno16777736:0
}
}

systemctl start keepalived.service---node2節點啓動,此時node2節點優先級最高,因此把本身配置爲master
systemctl status keepalived.service---會顯示狀態信息,進入主節點模式,而且ip地址也配置上去了


雙主模型的配置:
視頻中keepalived.conf
!Configuration File for keepalived

global_defs {
notification_email {---收郵件地址,要在互聯網上真正能接收br/>root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc---發郵件地址,能夠假裝源地址,可是有的服務器不容許假裝,要經過下面的smtp_server的檢查
smtp_server 127.0.0.1---通常是本機,可使用ss -tnl查看25號端口始終是開啓的,能夠很容易的從本機發送郵件到本機,例如:echo "hello" | mail -s "hi" root@localhost---s能夠給上郵件的標題,收郵件的命令是mail,就能夠看到收到的郵件,按提示的數字就能夠打開查看郵件
smtp_connect_timeout 30
router_id nide1---用來標識當前主機
vrrp_mcast group4 224.1.101.33---224.0.0.18是默認的,可是有可能會衝突,能夠本身隨便寫一個
}

vrrp_instance VI_1 {---第一個實例就是第一個路由器,VI_1是名稱隨便定義
state MASTER---配置爲主設備,可是還須要設置優先級
priority 100---優先級是100
interface eno167777736---把vip綁定到哪一個網卡設備
virtual_router_id 33---0到255之間使用哪個都行,可是兩個設備之間要統一
advert_int 1---每隔多長時間向外通告一次
authentication {---要不要認證
auth_type PASS---簡單字符串認證
auth_pass RT3SKUI2---這裏不要使用默認的1111,能夠用openssl rand -base64 7生成一個隨機的字符串
}
virtual_ipaddress {---指定IP地址的格式爲ip、掩碼、設備、別名
172.16.0.99/16 dev eno16777736
}
}

vrrp_instance VI_2 {---第一個實例就是第一個路由器,VI_1是名稱隨便定義state MASTER---配置爲主設備,可是還須要設置優先級priority 100---優先級是100interface eno167777736---把vip綁定到哪一個網卡設備virtual_router_id 34---0到255之間使用哪個都行,可是兩個設備之間要統一advert_int 1---每隔多長時間向外通告一次authentication {---要不要認證auth_type PASS---簡單字符串認證auth_pass Ra3S7Uy2---這裏不要使用默認的1111,能夠用openssl rand -base64 7生成一個隨機的字符串}virtual_ipaddress {---指定IP地址的格式爲ip、掩碼、設備、別名172.16.0.98/16 dev eno16777736}}

相關文章
相關標籤/搜索