一、簡介
Keepalived是一個免費開源的,用C編寫的類似於layer3, 4 & 7交換機制軟件,具備我們平時說的第3層、第4層和第7層交換機的功能。主要提供loadbalancing(負載均衡)和 high-availability(高可用)功能,負載均衡實現需要依賴Linux的虛擬服務內核模塊(ipvs),而高可用是通過VRRP協議實現多台機器之間的故障轉移服務。
上圖是Keepalived的功能體系結構,大致分兩層:用戶空間(user space)和內核空間(kernel space)。
內核空間:主要包括IPVS(IP虛擬服務器,用於實現網絡服務的負載均衡)和NETLINK(提供高級路由及其他相關的網絡功能)兩個部份。
用戶空間:
- WatchDog:負載監控checkers和VRRP進程的狀況
- VRRP Stack:負載負載均衡器之間的失敗切換FailOver,如果只用一個負載均稀器,則VRRP不是必須的。
- Checkers:負責真實服務器的健康檢查healthchecking,是keepalived最主要的功能。換言之,可以沒有VRRP Stack,但健康檢查healthchecking是一定要有的。
- IPVS wrapper:用戶發送設定的規則到內核ipvs代碼
- Netlink Reflector:用來設定vrrp的vip地址等。
Keepalived的所有功能是配置keepalived.conf文件來實現的。
二、安裝與配置
從官網下載keepalived,本文以版本1.2.24為例。
2.1 安裝
[root@keepalived-nginx1 ~]# wget http://www.keepalived.org/software/keepalived-1.2.24.tar.gz [root@keepalived-nginx1 ~]# tar -xzvf keepalived-1.2.24.tar.gz [root@keepalived-nginx1 ~]# cd keepalived-1.2.24
[root@keepalived-nginx1 keepalived-1.2.24]# ./configure --prefix=/usr/local/keepalived [root@keepalived-nginx1 keepalived-1.2.24]# make && make install
2.2 配置
安裝完成后,進入安裝目錄的etc目錄下,將keepalived相應的配置文件拷貝到系統相應的目錄當中。keepalived啟動時會從/etc/keepalived目錄下查找keepalived.conf配置文件,如果沒有找到則使用默認的配置。/etc/keepalived目錄安裝時默認是沒有安裝的,需要手動創建。配置文件目錄結構如下所示:
[root@keepalived-nginx1 ~]# tree -l /usr/local/keepalived/etc/ /usr/local/keepalived/etc/ ├── keepalived │ ├── keepalived.conf │ └── samples │ ├── client.pem │ ├── dh1024.pem │ ├── keepalived.conf.fwmark │ ├── keepalived.conf.HTTP_GET.port │ ├── keepalived.conf.inhibit │ ├── keepalived.conf.IPv6 │ ├── keepalived.conf.misc_check │ ├── keepalived.conf.misc_check_arg │ ├── keepalived.conf.quorum │ ├── keepalived.conf.sample │ ├── keepalived.conf.SMTP_CHECK │ ├── keepalived.conf.SSL_GET │ ├── keepalived.conf.status_code │ ├── keepalived.conf.track_interface │ ├── keepalived.conf.virtualhost │ ├── keepalived.conf.virtual_server_group │ ├── keepalived.conf.vrrp │ ├── keepalived.conf.vrrp.localcheck │ ├── keepalived.conf.vrrp.lvs_syncd │ ├── keepalived.conf.vrrp.routes │ ├── keepalived.conf.vrrp.rules │ ├── keepalived.conf.vrrp.scripts │ ├── keepalived.conf.vrrp.static_ipaddress │ ├── keepalived.conf.vrrp.sync │ ├── root.pem │ └── sample.misccheck.smbcheck.sh ├── rc.d │ └── init.d │ └── keepalived └── sysconfig └── keepalived
分別對應系統目錄(忽略samples目錄):
/etc/keepalived/keepalived.conf /etc/rc.d/init.d/keepalived /etc/sysconfig/keepalived
將配置文件拷貝到系統對應的目錄下:
[root@keepalived-nginx1 ~]# mkdir /etc/keepalived [root@keepalived-nginx1 ~]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf [root@keepalived-nginx1 ~]# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/keepalived [root@keepalived-nginx1 ~]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
[root@keepalived-nginx1 ~]# cd /etc/init.d/ [root@keepalived-nginx1 init.d]# chmod +x keepalived [root@keepalived-nginx1 init.d]# service keepalived start Starting keepalived: /bin/bash: keepalived: command not found [FAILED] [root@keepalived-nginx1 init.d]# ln -s /usr/local/keepalived/sbin/keepalived /usr/bin/ [root@keepalived-nginx1 init.d]# service keepalived start Starting keepalived: [ OK ]
http://www.mamicode.com/info-detail-1181951.html
http://blog.csdn.net/xyang81/article/details/52554398