在实验之前,
- 安装vm4虚拟机(修改ip为172.25.83.4,修改主机名为server4)
- 在server1上,将之前设置的健康检查对应的服务(ldirectored)关掉,并设置为开机不自启
[root@server1 ~]# /etc/init.d/ldirectord stop
Stopping ldirectord... success
[root@server1 ~]# chkconfig ldirectord off
- 在server1上,将之前在网卡eth0上添加的虚拟ip(172.25.83.100)删除
[root@server1 ~]# ip addr del 172.25.83.100/24 dev eth0
一.keepalived简介
- Keepalived是基于vrrp协议的一款高可用软件。Keepailived有一台主服务器和多台备份服务器,在主服务器和备份服务器上面部署相同的服务配置,使用一个虚拟IP地址对外提供服务,当主服务器出现故障时,虚拟IP地址会自动漂移到备份服务器。
vrrp协议:
- VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议),VRRP是为了解决静态路由的高可用。VRRP的基本架构虚拟路由器由多个路由器组成,每个路由器都有各自的IP和共同的VRID(0-255),其中一个VRRP路由器通过竞选成为MASTER,占有VIP,对外提供路由服务,其他成为BACKUP,MASTER以IP组播(组播地址:224.0.0.18)形式发送VRRP协议包,与BACKUP保持心跳连接,若MASTER不可用(或BACKUP接收不到VRRP协议包),则BACKUP通过竞选产生新的MASTER并继续对外提供路由服务,从而实现高可用。
二.实验环境(rhel6.5版本)
主机名 | IP |
server1(主调度器):LVS MASTER | 172.25.83.1 |
server2(真实服务器):Realserver1 | 172.25.83.2 |
server3(真实服务器):Realserver2 | 172.25.83.3 |
server4(副调度器):LVS BACKUP | 172.25.83.4 |
(备用master:当主master在工作时,它是处于休眠状态,一旦原来的master挂掉,立马成为新的主master)
Virtual IP:172.25.83.100
三.高可用的部署
1.配置server1
<1>添加负载均衡和高可用yum源
[root@server1 ~]# vim /etc/yum.repos.d/rhel-source.repo #在原来的yum源的基础上添加如下内容
[LoadBalancer] //负载均衡
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.83.83/rhel6.5/LoadBalancer
enabled=1
gpgcheck=0[HighAvailability] //高可用
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.83.83/rhel6.5/HighAvailability
enabled=1
gpgcheck=0
<2>下载keepalived安装包并解压
[root@server1 ~]# tar zxf keepalived-2.0.6.tar.gz
<3>安装keepalived的依赖包 :openssl-devel
[root@server1 keepalived-2.0.6]# ./configure --prefix=/usr/local/keepalived --with-init=SYSV ##源码预编译;
<4>进入keepavilved解压目录进行编译
[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脚本可执行权限
[root@server1 keepalived-2.0.6]# cd /usr/local/keepalived/etc/rc.d/init.d/
[root@server1 init.d]# ls
keepalived
[root@server1 init.d]# chmod +x keepalived
<6>做软连接方便管理keepalived
[root@server1 init.d]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[root@server1 init.d]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@server1 init.d]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/
[root@server1 init.d]# ln -s /usr/local/keepalived/sbin/keepalived /sbin/
<7>编辑配置文件
[root@server1 init.d]# cd /etc/keepalived/
[root@server1 keepalived]# ls
keepalived.conf samples
[root@server1 keepalived]# vim keepalived.conf
1 ! Configuration File for keepalived
2
3 global_defs {
4 notification_email { #发送报警邮件收件地址
5 root@localhost
6 }
7 notification_email_from keepalived@localhost #指明报警邮件的发送地址
8 smtp_server 127.0.0.1 #邮件服务器地址
9 smtp_connect_timeout 30 #smtp的超时时间
10 router_id LVS_DEVEL #物理服务器的主机名
11 vrrp_skip_check_adv_addr
12 #vrrp_strict #此处要注释
13 vrrp_garp_interval 0
14 vrrp_gna_interval 0
15 }
16
17 vrrp_instance VI_1 {
18 state MASTER #当前节点在此虚拟路由器上的初始状态:主机是MASTER,余下的备机应该是BACKUP(由优先级决定)
19 interface eth0 #绑定为当前虚拟路由器使用的物理接口;
20 virtual_router_id 83 #当前虚拟路由器的唯一标识,范围是0-255(主,备机一致)
21 priority 100 #当前主机在此虚拟路由器的优先级(主机大于备机);范围是1-253;
22 advert_int 1 #通告发送间隔,包含主机优先级,心跳。
23 authentication {
24 auth_type PASS #认证类型,PASS表示简单字符串认证
25 auth_pass 1111 #认证密码,PASS密码最长为8位
26 }
27 virtual_ipaddress { #虚拟路由IP地址,以辅助地址方式设置
28 172.25.83.100
29 }
30 }
31
32 virtual_server 172.25.83.100 80 { #LVS配置段,设置LVS的VIP地址和端口
33 delay_loop 6 #服务轮循的时间间隔;检测RS服务器的状态
34 lb_algo rr #调度算法(rr为轮循)
35 lb_kind DR #集群类型
36 #persistence_timeout 50 #是否启用持久连接,连接保存时长,此处要将其注释掉
37 protocol TCP #协议,只支持TCP协议
38 real_server 172.25.83.2 80 { #配置RS服务器的地址和端口
39 weight 1 #权重
40 connect_timeout 3 #连接超时时间
41 retry 3 #重试次数
42 delay_before_retry 3 #重试间隔
43 }
44 real_server 172.25.83.3 80 {
45 weight 1
46 connect_timeout 3
47 retry 3
48 delay_before_retry 3
49 }
50 }
51 }
<8>将配置好的keepalived发送给server4(备用调度器)
[root@server1 keepalived]# cd /usr/local/
[root@server1 local]# ls
bin etc games include keepalived lib lib64 libexec sbin share src
[root@server1 local]# scp -r keepalived/ root@server4:/usr/local
[root@server1 keepalived]# cd /usr/local/
[root@server1 local]# ls
bin etc games include keepalived lib lib64 libexec sbin share src
[root@server1 local]# scp -r keepalived/ root@server4:/usr/local
2.配置server4
<1>添加负载均衡和高可用yum源
[root@server1 ~]# vim /etc/yum.repos.d/rhel-source.repo #在原来的yum源的基础上添加如下内容
[LoadBalancer] //负载均衡
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.83.83/rhel6.5/LoadBalancer
enabled=1
gpgcheck=0[HighAvailability] //高可用
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.83.83/rhel6.5/HighAvailability
enabled=1
gpgcheck=0
<2>同样做软链接
[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/
<3>修改keepalived配置文件,将本机改为备用调度器(修改两个地方)
[root@server4 ~]# cd /etc/keepalived/
[root@server4 keepalived]# ls
keepalived.conf samples
[root@server4 keepalived]# vim keepalived.conf
1 ! Configuration File for keepalived
2
3 global_defs {
4 notification_email {
5 root@localhost
6 }
7 notification_email_from keepalived@localhost
8 smtp_server 127.0.0.1
9 smtp_connect_timeout 30
10 router_id LVS_DEVEL
11 vrrp_skip_check_adv_addr
12 #vrrp_strict
13 vrrp_garp_interval 0
14 vrrp_gna_interval 0
15 }
16
17 vrrp_instance VI_1 {
18 state BACKUP #将此处该为BACKUP,作为备机
19 interface eth0
20 virtual_router_id 83
21 priority 50 #将优先级改为50,一定要小于主机的优先级
22 advert_int 1
23 authentication {
24 auth_type PASS
25 auth_pass 1111
26 }
27 virtual_ipaddress {
28 172.25.83.100
29 }
30 }
31
32 virtual_server 172.25.83.100 80 {
33 delay_loop 6
34 lb_algo rr
35 lb_kind DR
36 #persistence_timeout 50
37 protocol TCP
38 real_server 172.25.83.2 80 {
39 weight 1
40 connect_timeout 3
41 retry 3
42 delay_before_retry 3
43 }
44 real_server 172.25.83.3 80 {
45 weight 1
46 connect_timeout 3
47 retry 3
48 delay_before_retry 3
49 }
50 }
51 }
测试:
<1>开启server1(主机)与server4(备机)的keepalived
[root@server1 ~]# /etc/init.d/keepalived start
Starting keepalived: [ OK ][root@server4 ~]# /etc/init.d/keepalived start
Starting keepalived: [ OK ]
此时,会自动分配vip(172.25.83.100)给主机,因为主,备机同时开启时,主机的优先级高
可以看到日志
<2>当关掉主机的keepalived服务时,vip地址会自动漂移到备机(server4)上
可以看到日志
高可用下测试健康检查:(在物理机上测试——IP为172.25.83.83)
- 值的注意的是:因为只有server1上配置了健康检查,所以必须使高可用服务得到的虚拟ip放在server1上。
打开server1上的健康检查对应的服务(ldirectored)
<1>两台realserver都正常时(开启http服务)
<2>当有一台realserver出现故障时(关掉server2的http服务)
此时调度器中剩下的真实的服务器只剩下server3。
<3>当两台realserver都出现故障时(server2与server3同时关掉http服务)
此时调度器中已经没有真实服务器