1. 程式人生 > >Keepalived介紹及架設

Keepalived介紹及架設

結構 stat base 如果 負載均衡 避免 健康 中一 ops

一、 集群介紹。
LB集群:lvs,nginx
HA集群:keepalived,heartbeat,corosync,cman(紅帽自帶的集群rhcs)
HP集群(高性能集群):很少使用HP集群,HP集群一般用在超級計算機國家級的地方。
HP集群相關概念:

Keepalived是輕量級的高可用套件,剛開始實現的目的是為了實現ipvs的高可用。heartbeat,corosync是重量級的高可用套件。

二、 keepalived介紹。
兩種節點角色:Active/Passive(Backup)或者叫做Master/Slave
HA集群的資源(resource):ip,存儲(結構化存儲【即MySQL等數據庫存儲的】,非結構化存儲【即放在文件系統上的數據,例如應用程序】)。

Active和passive先通過ntp時間對時同步。像passive或active發送給對方的I am alive的信息就叫做heartbeat,做time sync。
HA主要通過資源配置實現的,例如HA一個director,高可用服務包括兩個資源,vip和ipvs規則。哪一個節點是活動節點(active),哪一個就需要配置兩個資源vip和ipvs規則。為了要對方不搶占資源,就需要一個解決方案,比如通過優先級實現。

三、 vrrp協議。
Vrrp(virtual route redundant protocol):虛擬路由冗余協議。

當vip轉移時,從master主機轉移到backup主機,vip對應的mac地址也隨之改變,如果客戶端之前已經緩存了vip的mac地址(即master的mac),vip轉移後會出現訪問問題,此時的解決方案有:

One:當vip從master轉移到backup後,backup的vip網卡就會自己廣播自己的vip的mac,然後自己回答自己的mac(backup的vip的mac)和vip地址信息,網段內的其他主機聽到後就會記錄此時的vip對應的mac地址。
Two:vmac(虛擬mac),vmac地址的格式為00-00-5E-00-01-{VRID},

Master需要不停地往backup發送vrrp報文(heartbeat)和優先級。

Vrrp認證。(簡單字符認證常見)

四、 對於lvs-nat模型,內網(dip)和外網(vip)的ip都需要流動,對於lvs-dr模型,只有外網(vip)的ip需要流動。原因是,lvs-nat的rip給cip響應時需要通過dip響應。Lvs-dr模型的rip給cip響應時,不經過director也就不需要經過dip,此時dr模型就只需要流動vip就可以。

五、 Keepalived介紹

Keepalived軟件的內部架構

Vrrp stack:主要是對vrrp協議的實現的進程。(實現keepalived的主要部分)
Checkers:健康狀態監測。
IPVS wrapper:根據配置文件生成ipvs規則。(與ipvs接觸)
WatchDog:進程自己檢查,監控vrrp進程,如果vrrp進程掛了,watchdog就會自己啟動vrrp進程來繼續使用。

六、 配置和使用keepalived。(linux是centos7作為實例進行演示)
對於centos6.4以後的版本,直接可以yum install keepalived來直接安裝keepalived(只要配置好yum源就可以)。或者下載keepalived的tar源文件去編譯和執行來安裝keepalived。不過沒必要這麽做,最好直接去yum install keepalived就可以。
Keepalived的配置文件內容。(/etc/keepalived/keepalived.conf)

HA Cluster配置前提:
1、 本機主機名與hosts中定義的主機名保持一致,還要與hostname(uname -n)命令獲得的名稱保持一致;
修改主機名centos 6: /etc/sysconfig/network
Centos 7:hostnamectl set-hostname HOSTNAME
各節點要能互相解析主機名,一般建議通過hosts文件進行解析;
2、 各節點時間同步;
3、 確保iptables和selinux不會成為服務的阻礙;

1 安裝keepalived
]~ yum install keepalived

2 查看安裝生成的文件。
]~ rpm –ql keepalived

七、 實例演示keepalived。(node1:172.16.100.67,node2:172.16.100.68)
1 查看主機的系統版本號。(各節點都要查看)
]~ cat /etc/centos-release

2 查看主機名。(各節點都要查看)
]~ hostname

3 查看主機名對應的地址。(各節點都要查看)
]~ cat /etc/hosts

4 同步各節點的時間。(各節點都要同步時間)同步可以用ntp進行同步。
]~ date

在node1節點上查看node2的時間。
]~ date; ssh node2 ‘date’

註意:上面的]~ date; ssh node2 ‘date’ 命令執行不需要密碼了,因為node1和node2已經做過基於秘鑰的認證方式,所以不需要輸入密碼執行命令就可以顯示出來。

Ntp同步(新能mes系統的ntp同步):

]~ vim /etc/crontab

客戶端執行ntpdate命令來與ntp服務器(10.191.130.130為富鴻網時間服務器)對時。
]~ ntpdate 10.191.130.130

5 安裝keepalived軟件。(各節點都要安裝)
]~ yum –y install keepalived

6 配置keepalived的配置文件。
配置之前需要先備份配置文件
/etc/keepalived/keepalived.conf備份為/etc/keepalived/keepalived.conf.backup
]~ cd /etc/keepalived

]~ cp keepalived.conf{,.backup}

編輯配置文件/etc/keepalived/keepalived.conf;(馬哥實例)
先配置node1(172.16.100.67)的keepalived配置文件。
]~ vim /etc/keepalived/keepalived.conf

先註釋掉virtual_server及以下的行,在vim編輯器裏面,先找到virtual_server這一行,然後執行:.,$s/^/#/g
以下是/etc/keepalived文件裏面執行註釋掉virtual_server行及以下行。

! Configuration File for keepalived

global_defs {
notification_email {root@localhost
br/>root@localhost
notification_email_from kaadmin@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1.magedu.com
vrrp_mcast_group4 224.18.0.100
}

vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 8ab998cd
}
virtual_ipaddress {
172.16.100.80/16
}
}

配置完node1的keepalived的配置文件後,配置node2的配置文件(在node1上執行scp復制配置文件給node2)。下面的node1上執行。
]~ scp /etc/keepalived/keepalived.conf node2:/etc/keepalived

在node2上修改keepalived的配置文件。(以下在node2上執行)
One:cd到keepalived目錄

Two:編輯node2的配置文件
]~ vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
notification_email {root@localhost
br/>root@localhost
notification_email_from kaadmin@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node2.magedu.com #修改
vrrp_mcast_group4 224.18.0.100
}

vrrp_instance VI_1 {
state BACKUP #修改
interface eno16777736
virtual_router_id 51
priority 99 #修改
advert_int 1
authentication {
auth_type PASS
auth_pass 8ab998cd
}
virtual_ipaddress {
172.16.100.80/16
}
}

以下是新能mes的HA架構的/etc/keepalived配置文件。(環境VIP:10.210.104.10:8100 , mes_ap1:10.210.104.80:8100,mes_ap2:10.210.104.85:8100)
! Configuration File for keepalived

global_defs {
notification_email {[email protected]
br/>[email protected]
br/>[email protected]
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}

vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 80
priority 150
advert_int 5
authentication {
auth_type PASS
auth_pass 12345678
}
virtual_ipaddress {
10.210.104.10
}
track_interface {
eth0
}
notify_master "/etc/keepalived/notify.sh del 10.210.104.10"
notify_backup "/etc/keepalived/notify.sh add 10.210.104.10"
notify_fault "/etc/keepalived/notify.sh add 10.210.104.10"
}

virtual_server 10.210.104.10 8100 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP

real_server <MES1 IP> 8100 {
    weight 5
    TCP_CHECK {
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 8100
    }

}

real_server <MES2 IP> 8100 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 8100
}
}

}

virtual_server 10.210.104.10 8102 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP

real_server <MES1 IP> 8102 {
    weight 5
    TCP_CHECK {
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 8102
    }

}

real_server <MES2 IP> 8102 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 8102
}
}

}

配置文件詳解:/etc/keepalived/keepalived.conf
global_defs { #做全局定義,如果任何一個node節點發生故障,或者因為其他原因導致的資源vip從一個節點轉移到另一個節點上,那我們要通知給管理員,說我們的服務器發生故障,global_defs裏面的定義主要是解決這樣的問題;
notification_email { #表示定義這些警告信息發送給以下三個郵箱;[email protected]
br/>[email protected]
br/>[email protected]
notification_email_from [email protected] #指明keepalived發送給上面三個郵箱的發件人名為[email protected]
smtp_server 192.168.200.1 #指明smtp郵件服務器的地址,由此服務器來發給上面三個郵箱;
smtp_connect_timeout 30 #keepalived與smtp服務器連線時可能會有沒辦法連接等的問題,這裏定義連線smtp服務器的超時時長;
router_id LVS_DEVEL #定義當前的物理設備的唯一標示(此處最好改成主機名)
vrrp_mcast_group4 224.0.0.18 #定義多播地址,如果同一網段內有多個ha架構就需要定義多播地址,防止各keepalived相互影響;
}
vrrp_instance VI_1 { #做vrrp實例,叫做虛擬路由實例;
state MASTER #自己的初始狀態,只有兩個,MASTER和BACKUP;
interface eth0 #定義節點之間流動的ip配置的網卡;
virtual_router_id 51 #虛擬路由器自己的id號,id要唯一;
priority 100 #定義優先級(註意MASTER的優先級要高於BACKUP);
advert_int 1 #主節點周期性向其他備用節點發送自己的心跳信息(包括自己的優先級,自己的狀態信息),此處定義發送心跳信息的時長為1秒;
authentication { #做認證,避免網段內有不是節點的充當節點來混亂集群(比如);
auth_type PASS #此處認證是簡單字符認證(認證方式有簡單字符認證和MD5認證);
auth_pass 1111 #認證的密碼(可以用openssl rand -hex 4命令自動生成字符串做密碼);
}
virtual_ipaddress { #定義虛擬ip地址;
172.16.100.80/16 dev eth0 label eth0:0 #配置虛擬ip地址,後面的/16和label可以不寫,不寫就默認為上面vrrp_instance VI_1裏面的interface eth0這個網卡上;
nopereempt #非槍戰模式,默認為搶占模式(搶占模式為當原來的master有問題資源給backup,當原來的master上線沒問題時,就會主動把資源搶過來);
}
}
下面為vrrp_ipaddress的man文檔

7 啟動keepalived服務
下面的centos7上在node1上執行來啟動兩個節點的keepalived服務。
Centos6:~] service keepalived start
Centos7:~] systemctl start keepalived.service; ssh node2 ‘systemctl start keepalived.service’

8 利用ps –aux查看keepalived是否啟動。
]~ ps –aux

9 啟動完keepalived後查看虛擬ip是否掛起。
]~ ip addr list (或ip addr show 或 ip addr命令都可)

10 此時發現keepalived的log文件沒有,就需要手動添加日誌文件(-S為指定日誌log-facility)(兩個節點都要修改/etc/sysconfig/keepalived文件)(此步驟僅僅是打開keepalived的日誌,不影響keepalived正常使用,此步驟不進行也可以)兩個節點都要修改。

編輯keepalived的環境配置文件

編輯/etc/rsyslog.conf文件
]~ vim /etc/rsyslog.conf
加上最後一行local3.* /var/log/keepalived.log

重啟rsyslog服務。(以下是centos7)
]~ systemctl restart rsyslog.service

利用status查看rsyslog的狀態(以下是沒問題)
]~ systemctl status rsyslog.service

重啟keepalived服務,讓keepalived讀取環境配置文件/etc/sysconfig/keepliaved
Centos7:~] systemctl start keepalived.service; ssh node2 ‘systemctl start keepalived.service’

查看keepalived的日誌文件。
]~ tail –f /var/log/keepalived.log

11 手動調度資源在master和backup轉移,重啟keepalived服務不合適。(此處不影響keepalived的正常使用),只要在master的/etc/keepalived目錄中touch一個down文件,master的weight就會-2,原來的master就會變為backup,因為master的weight為100,backup的weight為99。

在/etc/keepalived/keepalived.conf配置文件加入vrrp_script,還要在vrrp_instrance VI_1上調用此script(track_script)。

以下是script內容
vrrp_script chk_mantaince_down {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 1
weight -2
}

以下是track_script內容。
track_script {
chk_mantaince_down
}

修改完配置文件後重啟keepalived服務
Centos7:~] systemctl start keepalived.service; ssh node2 ‘systemctl start keepalived.service’

在node1(master)172.16.100.67上查看虛擬ip地址是否在node1上。

想手動不停keepalived的服務的情況下,把ip轉移到node2上,只需要在node1上創建/etc/keepalived/down文件。同時在node1上查看虛擬ip已經不在node1上了。

在node2上查看虛擬ip,發現虛擬ip已經轉移到node2上了。

如果把node1的down文件刪除(rm –f /etc/keepalived/down),此時node1就會把虛擬ip搶回來成為master,node2重新成為backup。

八、 Lvs-nat+keepalived架設
註意:lvs-nat配置的HA架構,需要VIP和dip的別名接口都要轉移,就需要兩個實例(vrrp instance),同一個vrrp同步組(vrrp synchronization group)。
以下是keepalived.conf的man文檔。vrrp synchronization group的文檔。

Lvs-nat+keepalived模型,當lvs的vip從master轉移到backup時,對應的dip也要從master轉移到backup。此時就需要vip的實例(vrrp_instance VI_1)和dip的實例(vrrp_instance VI_2)在一個同步組中(vrrp_sync_group VG_1)。只有在lvs-nat+keepalived模型下才會用到下面的同步組。
Vrrp_sync_group VG_1{
Group {
VI_1 #外網ip對應的實例
VI_2 #內網ip對應的實例
}
}
Vrrp_instance VI_1{
eth0
vip
}
Vrrp_instance VI_2{
eth1
dip
}

九、 配置lvs-nat+keepalived的雙主模型實例。(結合上面的node1和node2,在此基礎上進行修改)

註意,每個vrrp_instance需要專用的組播地址。做雙主模型時global_defs裏面不能加組播地址(vrrp_mcast_group4 224.18.0.100),因為其中一個實例(vrrp_instance)會默認一個組播地址224.0.0.22導致兩個vrrp_instance不在同一個組播地上內。出現啟動服務時只會啟動其中一個實例(即只有一個虛擬ip在node節點上找到)。
1、 雙主模型架構拓撲圖。

2、 在node1上編輯keepalived的配置文件。
]~ vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
notification_email {root@localhost
br/>root@localhost
notification_email_from kaadmin@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1.magedu.com
}

vrrp_script chk_mantaince_down {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 1
weight -2
}

vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 8ab998cd
}
virtual_ipaddress {
172.16.100.80/16
}
track_script {
chk_mantaince
}
}

vrrp_instance VI_2 { #實例2與實例1不同地方
state BACKUP #實例2與實例1不同地方
interface eno16777736
virtual_router_id 61 #實例2與實例1不同地方
priority 99 #實例2與實例1不同地方
advert_int 1
authentication {
auth_type PASS
auth_pass 7bb962df #實例2與實例1不同地方
}
virtual_ipaddress {
172.16.100.90/16 #實例2與實例1不同地方
}
track_script {
chk_mantaince
}
}

3、 把node1的配置文件scp給node2。
在node1上執行scp命令
]~ scp /etc/keepalived/keepalived.conf node2:/etc/keepalived/

4、 編輯node2上的keepalived配置文件。
]~ vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
notification_email {root@localhost
br/>root@localhost
notification_email_from kaadmin@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node2.magedu.com #node2與node1配置文件不同地方
}

vrrp_script chk_mantaince_down {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 1
weight -2
}

vrrp_instance VI_1 {
state BACKUP #node2與node1配置文件不同地方
interface eno16777736
virtual_router_id 51
priority 99 #node2與node1配置文件不同地方
advert_int 1
authentication {
auth_type PASS
auth_pass 8ab998cd
}
virtual_ipaddress {
172.16.100.80/16
}
track_script {
chk_mantaince
}
}

vrrp_instance VI_2 {
state MASTER #node2與node1配置文件不同地方
interface eno16777736
virtual_router_id 61
priority 100 #node2與node1配置文件不同地方
advert_int 1
authentication {
auth_type PASS
auth_pass 7bb962df
}
virtual_ipaddress {
172.16.100.90/16
}
track_script {
chk_mantaince
}
}

5、 重啟node1和node2的keepalived服務。(node1和node2是centos7)
下面的centos7上在node1上執行來啟動兩個節點的keepalived服務。
~] systemctl start keepalived.service; ssh node2 ‘systemctl start keepalived.service’

6、 查看node1的地址。(ip addr list)
Ip addr list命令後,會看到虛擬ip1(172.16100.80/16)的地址在node1的eno16777736網卡上。

7、 查看node2的地址。
ip addr list命令後,會看到虛擬ip2(172.16.100.90/16)的地址在node2的eno16777736網卡上。

如果以上的兩個虛擬ip有問題,可以使用tcpdunp命令抓包查看。
例如以下就是因為在global_defs裏面添加了vrrp_mcast_group4 224.18.0.100導致其中虛擬ip不能正常啟動。檢查方法:在node1(172.16.100.67)上執行tcpdump –I eno16777736 host 172.16.100.68。

8、 上面兩個node節點的keepalived的配置文件中配置的不關閉服務,手動轉移vip配置。配置vrrp_script chk_mantaince_down和兩個vrrp instance裏面的track_script {chk_mantaince}部分,測試方法。
One:在node1(172.16.100.67)上創建/etc/keepalived/down文件,讓node1的虛擬ip下線(期間要等待幾秒鐘,vip1的地址才能從node1下線)。

Two:在node2(172.16.100.68)上查看虛擬ip。此時可發現vip1和vip2都在node2節點上。
Keepalived.conf、notity文件講解
註意:lvs-nat配置的HA架構,需要VIP和dip的別名接口都要轉移,就需要兩個實例,同一個vrrp同步組,
以下是架設步驟
一、 在VI中的主機狀態發生改變時通過腳本(/etc/keepalived/notify.sh)的方式發送通知信息。
先自行寫notify scripts腳本(notify主要是發送警告信息),notify.sh腳本可以放置到/etc/keepalived目錄內(keepalived的配置文件目錄下)。

下面是一個notify.sh腳本的簡單示例:
#!/bin/bash

Author: MageEdu <[email protected]>

description: An example of notify script

vip=172.16.100.80
contact=‘root@localhost‘

notify() {
mailsubject="hostname to be $1: $vip floating"
mailbody="date ‘+%F %H:%M:%S‘: vrrp transition, hostname changed to be $1"
echo $mailbody | mail -s "$mailsubject" $contact
}

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

1、 notify腳本完成後,給予執行權限。

2、 測試notify功能,給notify一個參數master。(下面的172.16.100.1應該是172.16.100.80)

3、 檢測notify功能完善之後,把notify.sh腳本復制到另一個node節點的/etc/keepalived目錄下。

4、 在兩個node(172.16.100.67,172.16.100.68)節點上keepalived.conf配置文件中添加notify信息。

以下是node1(172.16.100.67)節點上keepalived.conf裏面的notify代碼信息。

! Configuration File for keepalived

global_defs {
notification_email {root@localhost
br/>root@localhost
notification_email_from kaadmin@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1.magedu.com
}

vrrp_script chk_mantaince_down {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 1
weight -2
}

vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 8ab998cd
}
virtual_ipaddress {
172.16.100.80/16
}
track_script {
chk_mantaince
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}

vrrp_instance VI_2 { #實例2與實例1不同地方
state BACKUP #實例2與實例1不同地方
interface eno16777736
virtual_router_id 61 #實例2與實例1不同地方
priority 99 #實例2與實例1不同地方
advert_int 1
authentication {
auth_type PASS
auth_pass 7bb962df #實例2與實例1不同地方
}
virtual_ipaddress {
172.16.100.90/16 #實例2與實例1不同地方
}
track_script {
chk_mantaince
}
}

5、 node2(172.16.100.68)的keepalived.conf中添加notify信息。
! Configuration File for keepalived

global_defs {
notification_email {root@localhost
br/>root@localhost
notification_email_from kaadmin@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node2.magedu.com #node2與node1配置文件不同地方
}

vrrp_script chk_mantaince_down {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 1
weight -2
}

vrrp_instance VI_1 {
state BACKUP #node2與node1配置文件不同地方
interface eno16777736
virtual_router_id 51
priority 99 #node2與node1配置文件不同地方
advert_int 1
authentication {
auth_type PASS
auth_pass 8ab998cd
}
virtual_ipaddress {
172.16.100.80/16
}
track_script {
chk_mantaince
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}

vrrp_instance VI_2 {
state MASTER #node2與node1配置文件不同地方
interface eno16777736
virtual_router_id 61
priority 100 #node2與node1配置文件不同地方
advert_int 1
authentication {
auth_type PASS
auth_pass 7bb962df
}
virtual_ipaddress {
172.16.100.90/16
}
track_script {
chk_mantaince
}
}

6、 重啟node1和node2的keepalived服務。(node1和node2是centos7)
下面的centos7上在node1上執行來啟動兩個節點的keepalived服務。
~] systemctl start keepalived.service; ssh node2 ‘systemctl start keepalived.service’

7、 利用mail查看notify是否通知。

此時發現notify沒有通知,只有發生轉移時才會轉移。此時在node1(172.16.100.67)節點上添加一個/etc/keepalived/down文件來手動轉移master到node2節點上。(vrrp_script chk_mantaince_down是控制添加down文件進行轉移master)

在node1上執行ip address list查看172.16.100.80是否轉移

Node1此時發現172.16.100.80內有轉移,在等幾秒執行ip addr list

Node1此時發現172.16.100.80已經轉移。

利用mail命令查看notify的通知信息是否到達。(兩個node節點上都會有郵件。)【因為此時是在node1上創建down文件,node1是master轉化為backup,node2是backup轉化為master,所以node1是notify backup, node2是notify master】

此時發現notify還沒到達。

8、
二、 在keepalived.conf配置如何實現ipvs規則。
在/etc/keepalived/keepalived.conf裏面設定lvs(LVS CONFIGURATION),lvs的設定分三種virtual server groups、virtual server(s)。
1、 virtual server groups先不管
2、 virtual server(s)
virtual server有兩種方式vip vport(套接字)、fwmark <int>(防火墻標記)。

vip vport指定:
delay_loop:說明每隔多久向real server發一次健康狀態檢查。
lb_algo:負載均衡的調度算法(支持rr|wrr|lc|wlc|lblc|sh|dh)。
lb_kind:lvs的類型(支持三種類型NAT|DR|TUN)。
persistence_timeout:持久時長(也就是ipvsadm –p的數值)。
protocol TCP:指定tcp(此命令只支持tcp協議,直接用ops才指定udp)。
ops:指定udp。
ha_suspend:如果vip不存在,將掛停healthchecker的activity。
virtualhost:定義哪些虛擬主機做HTTP_GET或SSL_GET。
sorry_server <IPADDR> <PORT>:當所有的real server都掛掉時,我們找一個主機能提示。
real server <IPADDR> <PORT>:定義一個虛擬服務當中有哪些real server。
real server {
weight:定義權重。
notify_up:每一個real server上線時通知。
notify_down:每一個real server下線時通知。

HTTP_GET|SSL_GET
    url {
path <STRING>:向哪個路徑指明url請求。
status_code <INT>:校驗的結果是200就認為是ok,否則失敗。

}
nb_get_retry <INT>:連接服務器重試次數
delay_before_retry <INT>:連接服務器超時時長。
connect_ip <IP ADDRESS>:指明向哪個主機做健康狀態檢查。
connect_port <PORT>:指明向哪個主機端口做健康狀態檢查。
bindto <IP ADDRESS>:指明自己主機通過哪個網卡ip發送健康狀態檢查。一般是dip所在的網卡ip。
bindto_port <PORT>:指明自己的主機port做健康狀態檢查。
connect_timeout <INTEGER>:連接超時時長。
}
TCP_CHECK
{
connect_ip <IP ADDRESS>:指明向哪個主機做健康狀態檢查。
connect_timeout <INTEGER>:連接超時時長。
}

Keepalived介紹及架設