參考部落格: http://pmghong.blog.51cto.com/3221425/1264947/
第一步:配置NGINX負載均衡 http://www.cnblogs.com/carbon3/p/5853590.html
第二步:配置 keepalived 的高可用
二、安裝配置keepalived(node2配置參考node1,大體上一樣)
1、安裝配置keepalived
[root@node1 src]# yum -y install popt popt-devel popt-static openssl-devel kernel-devel libnl libnl-devel
[root@node1 src]# wget http://www.keepalived.org/software/keepalived-1.2.23.tar.gz
[root@node1 src]# tar -zxvf keepalived-1.2.23.tar.gz
[root@node1 src]# cd keepalived-1.2.23
[root@node1 keepalived-1.2.23]# ./configure --prefix=/usr/local/keepalived
configure: error:
!!! Please install libnfnetlink headers.
解決辦法:
yum install -y libnfnetlink-devel
安裝成功後顯示:
Keepalived configuration
------------------------
Keepalived version : 1.2.23
Compiler : gcc
Compiler flags : -g -O2 -DFALLBACK_LIBNL1
Extra Lib : -lssl -lcrypto -lcrypt -lnl
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
IPVS use libnl : Yes
fwmark socket support : Yes
Use VRRP Framework : Yes
Use VRRP VMAC : Yes
Use VRRP authentication : Yes
SNMP keepalived support : No
SNMP checker support : No
SNMP RFCv2 support : No
SNMP RFCv3 support : No
SHA1 support : No
Use Debug flags : No
Memory alloc check : No
libnl version : 1
Use IPv4 devconf : No
Use libiptc : No
Use libipset : No
接着
[root@node1 keepalived-1.2.4]# make && make install
[root@node1 keepalived-1.2.4]# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[root@node1 keepalived-1.2.4]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
[root@node1 keepalived-1.2.4]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@node1 keepalived-1.2.4]# mkdir -p /etc/keepalived
[root@node1 keepalived-1.2.4]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
[root@node1 keepalived-1.2.4]# chmod +x /etc/init.d/keepalived
配置
[root@node1 keepalived-1.2.4]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
}
notification_email_from [email protected]
smtp_server 192.168.128.128 # node2上改為192.168.128.129
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_script chk_nginx { # 定義監控腳本
script "/etc/keepalived/checkNginx.sh"
interval 2
weight 2
vrrp_instance VI_1 {
state MASTER # node2 修改為BACKUP
interface eth0 #node2 可能是eth1 我在虛拟測試的時候就是 系統是克隆過來的。
virtual_router_id 51
priority 120 # node2上的數值應低于這個值,例如100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
virtual_ipaddress {
192.168.128.120
track_script { # 執行監控腳本,這段代碼一定要加!!否則不會調用上面的腳本
chk_nginx
2、建立檢測腳本
[root@node1 keepalived-1.2.4]# vim /etc/keepalived/checkNginx.sh
#!/bin/bash
#auto check nginx process
killall -0 nginx
if [[ $? -ne 0 ]];then
/etc/init.d/keepalived stop
fi
[root@node1 keepalived-1.2.4]# chmod +x /etc/keepalived/checkNginx.sh
3、啟動服務
[root@node1 ~]# service keepalived start
Starting keepalived: [ OK ]
[root@node2 ~]# service keepalived start
主伺服器:
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:1c:5b:83 brd ff:ff:ff:ff:ff:ff
inet 192.168.128.128/24 brd 192.168.128.255 scope global eth0
inet 192.168.128.120/32 scope global eth0
inet6 fe80::20c:29ff:fe1c:5b83/64 scope link
valid_lft forever preferred_lft forever
從伺服器
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:b1:0a:0b brd ff:ff:ff:ff:ff:ff
inet 192.168.128.129/24 brd 192.168.128.255 scope global eth1
inet6 fe80::20c:29ff:feb1:a0b/64 scope link
valid_lft forever preferred_lft forever
當主伺服器挂了的話,從伺服器就會接管VIP 用ip addr 檢視的時候 就會出現 192.168.128.120 。當主伺服器恢複的時候 VIP雙會被主伺服器接管。
擴充閱讀:http://zkchang.blog.51cto.com/10574636/1706998
keepalived的 主從 和雙主模式
雙主的話 需要在域名供應商裡 給那個域名設定兩個IP 這樣可以輪詢 。這樣 keepalived的兩個VIP就起做用了。
http://www.cnblogs.com/holbrook/archive/2012/10/25/2738475.html