LVS+Keepalived
为了保证DR的在线时间,所以我们要对DR做备份,两台DR分别安装Keepalived软件
让一台DR为Master,另一台DR为Slave
Keepalived不是红帽系统中的软件,把这款软件安装在红帽系统中,要用源码包安装
/usr/local/src 这个目录是红帽专门存放源码包的
注意:在上一个实验的基础上做,Realserver1和2配置一样,不过DR就不要做ipvsadm策略了,其它配置一样,因为Keepalived是基于IPVS模块的一个软件,你对Keepalived做配置其实就是在做ipvsadm策略,Keepalived在两台DR上都做配置,使两台DR有主次之分
前面的步骤我就省略了
DR Slave:192.168.0.50
DR Master:
[root@localhost yum.repos.d]# yum -y install gcc kernel-devel openssl-devel
要想安装源码包,需要你本地安装gcc、kernel-devel、openssl-devel三个软件包,才支持你有安装源码包的坏境,否则你安装不了源码包
kernel-devel软件包很重要,升级内核时需要这个软件包
[root@localhost student]# cd /usr/local/src/
[root@localhost src]# ls
keepalived-1.2.7.tar.gz keepalived-1.2.7.tar.gz是一个源码包
[root@localhost src]# tar zxvf keepalived-1.2.7.tar.gz
tar.gz结尾的源码包用tar zxvf来解压缩。tar.bz2结尾的源码包用tar jxvf来解压缩。tar cvf命令来对源码包来压缩。
[root@localhost src]# ls
keepalived-1.2.7 keepalived-1.2.7.tar.gz
[root@localhost src]# cd keepalived-1.2.7
[root@localhost keepalived-1.2.7]# ls
AUTHOR ChangeLog configure.in COPYING genhash install-sh keepalived.spec.in Makefile.in TODO
bin configure CONTRIBUTORS doc INSTALL keepalived lib README VERSION
每一个源码包都会有configure、install、readme,里面会有安装说明
[root@localhost keepalived-1.2.7]# ./configure --sysconf=/etc/ --with-kernel-dir=/usr/src/kernels/2.6.18-164.el5-i686/
./configure命令是检测当前坏境是否可以完成这次编译,如果./configure直接回车则表示在当前目录坏境下编译的。
--sysconf=/etc把编译的结果放在/etc目录下,源码包编译的结果一盘都会放在/etc/目录下
--with-kernel-dir=/usr/src/kernels/2.6.18-164.e15-i686在编译的时候要去匹配现有的内核
Keepalived configuration
------------------------
Keepalived version : 1.2.7
Compiler : gcc
Compiler flags : -g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib : -lpopt -lssl -lcrypto
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
IPVS use libnl : No
Use VRRP Framework : Yes
Use VRRP VMAC : No
SNMP support : No
Use Debug flags : No
IPVS Framework、IPVS sync、VRRP Framework三个一定要为yes,为no代表你之前的某个包或某个库不支持,不匹配
[root@localhost keepalived-1.2.7]# make && make install 安装源码包
;;两个分号代表前面的命令和后面的命令一起执行,即使前面的命令错了,后面的命令也会执行
&&代表前面的命令和后面的命令一起执行,在前面的命令执行成功后,后面的命令才能执行
[root@localhost keepalived-1.2.7]# ls /etc/keepalived/
keepalived.conf samples
/etc/keepalived/keepalived.conf就是源码包编译出来的结果
[root@localhost keepalived-1.2.7]# ln -s /usr/local/sbin/keepalived /sbin
链接开机脚本,让keepalived服务可以开机时自动启动
内核是在开机加载的一瞬间就被加载,系统启动完sysctl之后,才会执行/etc/rc.d/rc.local里的命令,/etc/rc.d/rc3.d/realserver开机时自动运行脚本
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vim keepalived.conf
rrp_instance VI_1 {
state MASTER
interface eth0
priority 100
virtual_ipaddress {
192.168.0.156
}
}
virtual_server 192.168.0.156 80 {
lb_algo wrr
lb_kind DR
real_server 192.168.0.11 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.0.12 80 {
weight 2
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
在keepalived做的配置其实不仅做了DR冗余的配置连带着也罢ipvsadm的策略也做了,所以你不用做ipvsadm策略
[root@localhost keepalived]# /etc/init.d/keepalived restart 启动keepalived服务
Stopping keepalived: [FAILED]
Starting keepalived: [ OK ]
[root@localhost keepalived]# chkconfig keepalived on
[root@localhost keepalived]# yum -y install ipvsadm
[root@localhost keepalived]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.156:http wrr persistent 50
-> 192.168.0.12:http Route 2 0 0
-> 192.168.0.11:http Route 1 0 0
DR Slave:
[root@localhost ~]# yum -y install gcc kernel-devel openssl-devel
[root@localhost src]# ls
keepalived-1.2.7.tar.gz
[root@localhost src]# pwd
/usr/local/src
[root@localhost src]# tar zxvf keepalived-1.2.7.tar.gz
[root@localhost src]# ls
keepalived-1.2.7 keepalived-1.2.7.tar.gz
[root@localhost src]# cd keepalived-1.2.7
[root@localhost keepalived-1.2.7]# ls
AUTHOR ChangeLog configure.in COPYING genhash install-sh keepalived.spec.in Makefile.in TODO
bin configure CONTRIBUTORS doc INSTALL keepalived lib README VERSION
[root@localhost keepalived-1.2.7]# ./configure --sysconf=/etc/ --with-kernel-dir=/usr/src/kernels/2.6.18-164.el5-i686/
Keepalived configuration
------------------------
Keepalived version :1.2.7
Compiler : gcc
Compiler flags : -g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib : -lpopt -lssl -lcrypto
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
IPVS use libnl : No
Use VRRP Framework : Yes
Use VRRP VMAC : No
SNMP support : No
Use Debug flags : No
[root@localhost keepalived-1.2.7]# make && make install
[root@localhost keepalived-1.2.7]# ln -s /usr/local/sbin/keepalived /sbin
[root@localhost keepalived-1.2.7]# cd /etc/keepalived/
[root@localhost keepalived]# ls
keepalived.conf samples
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vim keepalived.conf
rrp_instance VI_1 {
state SLAVE 由于是该台DR是做备份的,所以要写成SLAVE
interface eth0
priority 50 谁的优先级大,谁就是Master
virtual_ipaddress {
192.168.0.156
}
}
virtual_server 192.168.0.156 80 {
lb_algo wrr
lb_kind DR
real_server 192.168.0.11 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.0.12 80 {
weight 2
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
[root@localhost keepalived]# /etc/init.d/keepalived restart
Stopping keepalived: [FAILED]
Starting keepalived: [ OK ]
[root@localhost keepalived]# chkconfig keepalived on
[root@localhost keepalived]# yum -y install ipvsadm
[root@localhost keepalived]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.156:http wrr persistent 50
-> 192.168.0.12:http Route 2 0 0
-> 192.168.0.11:http Route 1 0 0
Realserver1、2:
两个节点上都要做,让两个节点机器重启后配置也一样
[root@localhost ~]# cd /tmp
[root@localhost tmp]# touch realserver.sh
[root@localhost tmp]# ls
realserver.sh
[root@localhost tmp]# cp realserver.sh /etc/init.d/realserver.sh
[root@localhost tmp]#/etc/init.d/realserver.sh start
[root@localhost tmp]# ln -s/etc/init.d/realserver.sh /etc/rc.d/rc3.d/S99realserver.sh
[root@localhost tmp]# ln -s/etc/init.d/realserver.sh /etc/rc.d/rc5.d/S99realserver.sh
客户端访问:
[root@localhost keepalived]# init 0 把DR Master机器关掉
依然可以访问