实验环境:四个虚拟机
主机 | 服务 |
---|---|
server1:172.25.63.1 | Keepalived:主调用器 |
server2:172.25.63.2 | apache:后端服务器 |
server3:172.25.63.3 | apache:后端服务器 |
server4:172.25.63.4 | Keepalived:备调用器 |
安装vm4的详细过程请看环境搭建那篇博客
1.配置更高级的yum源(server4),列出yum仓库
[root@server4 ~]# cd /etc/yum.repos.d
[root@server4 yum.repos.d]# vim rhel-source.repo
[root@server4 yum.repos.d]# yum clean all
[root@server4 yum.repos.d]# yum repolist
2.解压安装包
[root@server1 ~]# tar zxf keepalived-2.0.6.tar.gz
[root@server1 ~]# ls
bansys.zip keepalived-2.0.6.tar.gz varnish-3.0.5-1.el6.x86_64.rpm
keepalived-2.0.6 ldirectord-3.9.5-3.1.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm
3.切换到keepalived-2.0.6目录下,安装 keepalived的依赖包
[root@server1 ~]# cd keepalived-2.0.6
[root@server1 keepalived-2.0.6]# yum install openssl-devel -y
4.编译keepalived的源码包
[root@server1 keepalived-2.0.6]# ./configure --prefix=/usr/local/keepalived --with-init=SYSV
[root@server1 keepalived-2.0.6]# make && make install
5.将编译好的keepalived发送给备用机(server4)
[root@server1 ~]# cd /usr/local
[root@server1 local]# ls
bin etc games include keepalived lib lib64 libexec sbin share src
[root@server1 local]# scp -r keepalived/ server4:/usr/local
6.给脚本添加可执行权限
[root@server1 keepalived-2.0.6]# cd /usr/local/keepalived/将
[root@server1 keepalived]# ls
bin etc sbin share
[root@server1 keepalived]# cd etc/
[root@server1 etc]# ls
keepalived rc.d sysconfig
[root@server1 etc]# cd rc.d/
[root@server1 rc.d]# ls
init.d
[root@server1 rc.d]# cd init.d/
[root@server1 init.d]# chmod +x keepalived
[root@server1 init.d]# ls
keepalived
7.制作软连接,方便keepalived的管理(server1和server4都要制作软连接)
[root@server1 init.d]# pwd
/usr/local/keepalived/etc/rc.d/init.d
[root@server1 init.d]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[root@server1 etc]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/
[root@server1 etc]# ln -s /usr/local/keepalived/sbin/keepalived /sbin/
[root@server1 etc]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@server4 ~]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[root@server4 ~]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@server4 ~]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/
[root@server4 ~]# ln -s /usr/local/keepalived/sbin/keepalived /sbin/
8.关闭ldirectord 服务,并设定开机不启动
[root@server1 etc]# /etc/init.d/ldirectord stop
Stopping ldirectord... success
[root@server1 etc]# chkconfig ldirectord off
9.删除ip,因为当开启Keepalived服务时,会自动获得ip
[root@server1 etc]# ip addr del 172.25.63.100/24 dev eth0
[root@server1 etc]# ip a
10.编辑keepalived配置文件
[root@server1 sbin]# cd /etc/keepalived/
[root@server1 keepalived]# ls
keepalived.conf samples
[root@server1 keepalived]# vim keepalived.conf
! Configuration File for keepalived
##全局配置
global_defs { ##全局定义块
notification_email { ##邮件通知
root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc ##邮件发送地址
smtp_server 127:.0.0.1 ##设置smtp server地址
smtp_connect_timeout 30 ##设置smtp服务器超时时间
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
##VRRPD配置
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 63
priority 100 ##主机的优先级,主机的优先级一定要大于备机
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { ##指定漂移地址
172.25.63.100
}
}
##虚拟服务配置
virtual_server 172.25.63.100 80 { ##定义虚拟服务器
delay_loop 3
lb_algo rr ##使用轮询算法
lb_kind DR ##LVS是DR模式
#persistence_timeout 50 ##注释掉
protocol TCP ##指定转发协议类型
real_server 172.25.63.2 80 { ##配置服务节点
TCP_CHECK { #TCP的健康检查
weight 1
connect_timeout 3
retry 3 ##重试次数
delay_before_retry 3 ##重试间隔
}
}
real_server 172.25.63.3 80 {
TCP_CHECK {
weight 1
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
11.将配置好的keepalived文件发送给server4
[root@server1 keepalived]# scp keepalived.conf server4:/etc/keepalived/
12.修改server4的keepalived文件,只有两个地方需要修改
[root@server4 keepalived]# cd /etc/keepalived/
[root@server4 keepalived]# ls
keepalived.conf samples
[root@server4 keepalived]# vim keepalived.conf
! Configuration File for keepalived
##全局配置
global_defs { ##全局定义块
notification_email { ##邮件通知
root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc ##邮件发送地址
smtp_server 127:.0.0.1 ##设置smtp server地址
smtp_connect_timeout 30 ##设置smtp服务器超时时间
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
##VRRPD配置
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 63
priority 50 ##备机的优先级,主机的优先级一定要大于备机 ,所以设为50(修改的地方)
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { ##指定漂移地址
172.25.63.100
}
}
##虚拟服务配置
virtual_server 172.25.63.100 80 { ##定义虚拟服务器
delay_loop 3
lb_algo rr ##使用轮询算法
lb_kind DR ##LVS是DR模式
#persistence_timeout 50 ##注释掉
protocol TCP ##指定转发协议类型
real_server 172.25.63.2 80 { ##配置服务节点
TCP_CHECK { #TCP的健康检查
weight 1
connect_timeout 3
retry 3 ##重试次数
delay_before_retry 3 ##重试间隔
}
}
real_server 172.25.63.3 80 {
TCP_CHECK {
weight 1
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
13.给server4添加可执行权限
[root@server4 ~]# ll /etc/init.d/keepalived
lrwxrwxrwx 1 root root 48 Apr 19 05:11 /etc/init.d/keepalived -> /usr/local/keepalived/etc/rc.d/init.d/keepalived
[root@server4 ~]# ll /usr/local/keepalived/etc/rc.d/init.d/keepalived
[root@server4 ~]# chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
[root@server4 ~]# ll /usr/local/keepalived/etc/rc.d/init.d/keepalived
14.开启server1和server4keepalived服务
[root@server1 ~]# /etc/init.d/keepalived start
[root@server4 ~]# /etc/init.d/keepalived start
15.测试:
(1)开启服务后,server1会自动分配ip地址(172.25.63.100)
(2)将server1的keepalived服务关闭,地址漂移到server4
[root@server1 ~]# /etc/init.d/keepalived stop
[root@server4 ~]# ip a
server4中出现ip地址
- 高可用下实现健康检查
1.后端服务器都正常时,实行轮询
[root@foundation63 ~]# arp -d 172.25.63.100
[root@foundation63 ~]# curl 172.25.63.100
<h1>server3 - www.westos.org</h1>
[root@foundation63 ~]# curl 172.25.63.100
<h1>server2.example.com</h1>
[root@foundation63 ~]# curl 172.25.63.100
<h1>server3 - www.westos.org</h1>
2.将server2的httpd关掉,有一台服务器宕机
[root@server2 ~]# /etc/init.d/httpd stop
只调度server3服务器
[root@foundation63 ~]# arp -d 172.25.63.100
[root@foundation63 ~]# curl 172.25.63.100
<h1>server3 - www.westos.org</h1>
[root@foundation63 ~]# curl 172.25.63.100
<h1>server3 - www.westos.org</h1>
[root@foundation63 ~]# curl 172.25.63.100
<h1>server3 - www.westos.org</h1>
3.将两台服务器的httpd关掉
[root@server3 ~]# /etc/init.d/httpd stop
[root@foundation63 ~]# arp -d 172.25.63.100
[root@foundation63 ~]# curl 172.25.63.100
curl: (7) Failed connect to 172.25.63.100:80; Connection refused
[root@foundation63 ~]# curl 172.25.63.100
curl: (7) Failed connect to 172.25.63.100:80; Connection refused
[root@foundation63 ~]# curl 172.25.63.100
curl: (7) Failed connect to 172.25.63.100:80; Connection refused
[root@foundation63 ~]# curl 172.25.63.100
curl: (7) Failed connect to 172.25.63.100:80; Connection refused