lvs配置祥解2

 一、部署keepalived

使用: #wget http://www.keepalived.org/software/keepalived-1.1.20.tar.gz

下载keepalived软件,解压,安装

#tar -zxvf keepalived-1.1.20.tar.gz

# cd keepalived-1.1.20

# ./configure

不加参数可以编制只包含VRRP框架,用来搭建HA,加上--with-kernel-dir=可以编制IPVS框架,用于配合LVS,组建高可用的load balancing.

前提要安装好ipvsadm

# ./configure --with-kernel-dir=/usr/src/kernels/2.6.18-194.8.1.el5-i686/

#make &&make install

 

二、配置

1. 全局配置  这里的配置对整个keepalived都有用。 

1.  global_defs  

2.  {  

3.  notification_email  

4.  {  

5.  admin@example.com  

6.  }  

7.  notification_email_from admin@example.com  

8.  smtp_server 127.0.0.1  

9.  stmp_connect_timeout 30  

10. router_id my_hostname  

11. }  

####解释####

     notification_email指定keepalived在发生事情的时候,发送邮件告知,可以有多个地址,每行一个。

     smtp_*指定发生email的smtp服务器地址和超时

     router_id运行keepalived的机器的一个标识

 

2. VRRPD配置

这里是keepalived的核心,LVS配置只在要使用keepalived来配置和管理LVS时需要使用,如果仅仅使用keepalived做HA的话就可以完全不用配置LVS。

VRRPD配置分2部分:VRRP Sync Groups和VRRP Instance

2.1 VRRP Sync Groups

将需要监控的多个实例放入sync group,这样可以保证在任意实例出错的时候都能切换,继续提供服务。 

1.  vrrp_sync_group VG_1 {  

2.  group {  

3.  inside_network    

4.  outside_network  

5.      }  

6.  notify_master /path/to/to_master.sh  

7.  notify_backup /path_to/to_backup.sh  

8.  notify_fault "/path/fault.sh VG_1"  

9.  notify /path/to/notify.sh  

10. smtp_alert  

11. }  

####解释####

·         group里面就是vrrp的实例

·         notify_master指定当切换到master时,执行的脚本,可以向脚本传递参数,其他2个类推。

·         Nofity指令有3个参数,$1(GROUP—INSTANCE),$2(group或instance的名字),$3(MASTER—BACKUP—FAULT)

·         smtp_alter使用global_defs里面定义的邮件地址和smtp服务器在切换后发送邮件通知

 

2.2 VRRP Instance

VRRP instance主要是对实例的一些特性的描述。可以为每个网卡开启一个实例。 

1.  vrrp_instance inside_network {  

2.  state MASTER  

3.  interface eth0  

4.  dont_track_primary  

5.  track_interface {  

6.  eth0  

7.  eth1  

8.  }  

9.  mcast_src_ip <IPADDR> 

10. garp_master_delay 10  

11. virtual_router_id 51  

12. priority 100  

13. advert_int 1  

14. authentication {  

15. auth_type PASS  

16. autp_pass 1234  

17. }  

18. virtual_ipaddress {  

19. #<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPT> label <LABEL> 

20. 192.168.200.17/24 dev eth1  

21. 192.168.200.18/24 dev eth2 label eth2:1  

22. }  

23. nopreempt  

24. preemtp_delay 300  

25. debug  

26. }  

 ####解释####

·         state指定实例初始化的状态,如果都是backup,那么就按照priority的值来确定谁是master。Priority最好相差50

·         interface 就是实例绑定的网卡,对外提供服务的网口

·         track_interface设置额外的监控,里面的任意一个网卡出错,都会进入FAULT状态。

·         mcast_src_ip发送多播包的地址,如果不设置,默认使用绑定的网卡的primary IP。

·         virtual_router_id VRID标记(0-255)

·         priority 高优先级的为master,最好相差大于50

·         advert_int 检查间隔时间,默认1s

·         virtual_ipaddress 里面指定VIP,也就是切换到master时,这些IP会被添加,切换到backup时,就删除这些VIP。通过ip addr show 可以看到这些VIP。

·         lvs_sync_daemon_interface lvs syncd绑定的网卡,类似发送心跳

·         authentication 这一段设置认证

·         auth_type 认证方式,支持PASS和HA(据说HA有问题)

·         auth_pass 认证密码

·         nopreempt 设置不抢占,注意这个设置只能设置在backup状态主机上,而且这个主机的priority必须比另外的主机高

·         preempt_delay 抢占延迟,默认5分钟

 

2.3 LVS配置

LVS的配置也包括2个部分:virtual server group和virtual server。

2.3.1 virtual server group

这一配置段是可选的,目的是为了让一台Real Server上的某个service可以属于多个Virtual Server,并且只做一次健康检查。

virtual_server_group <STRING> {

# VIP port

          <IPADDR> <PORT>

          <IPADDR> <PORT>

          fwmark <INT>

}

2.3.2 virtual server

virtual server可以以3种方式中的任意一种配置:

1. virtual server IP port

2. virtual server fwmark int

3. virtual server group string

例如:

virtual_server 192.168.1.199 80 { #设置一个virtual server VIP VPORT

    delay_loop 6 #服务投票的延迟

    lb_algo rr|wrr|lc|wlc|lblc|sh|dh #LVS调度算法

    lb_kind NAT|DR|TUN #LVS集群方式

   nat_mask 255.255.255.0 #nat子网掩码

   persistence_timeout 10 #会话保持时间(秒)

   protocol TCP #使用的协议TCP

   sorry_server <IP> <PORT> #备用机,所有的realserver失效后启用

   real_server 192.168.1.13 80 { #真实服务器的地址和端口

    weight 1 #权重,默认为1,0为失效

   inhibit_on_failure #在服务器健康检查失败时,将其权重设置为0,而不是直接从IPVS表里删除。

   TCP_CHECK { #健康检查方式,这里使用tcp方式

           connect_timeout 3 #连接超时3秒

            nb_get_retry 3 #重连次数3次

           delay_before_retry 3 #重新连接间隔时间3秒

           connect_port 80 #连接端口80

          }

    }

}

2.3.3 健康检查方式

健康检查方式有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK

可以参考安装keepalived后的sample目录下的模板

·         HTTP_GET|SSL_GET {

             url { #HTTP|SSL检查的URL ,这里可以指定多个URL

             path / #URL后的路径

             digest <STRING> #SSL检查后的摘要信息(通过genhash算出)

               }

         connect_port 444 #检查的端口

         connect_timeout 3 #连接超时3秒

         nb_get_retry 3 #重连次数3次

         delay_before_retry 3 #重新连接间隔时间3秒

     }

·      SMTP_CHECK { #使用SMTP_CHECK方式检查

             connect_timeout 10 #连接超时3秒

             retry 2 #重连次数3次

             delay_before_retry 5 #重新连接间隔时间3秒

            helo_name "foo.bar.com" #“smtp HELO”请求命令的参数,可选。

            host {

                     connect_ip 172.16.1.12 #需要检查的IP

                     connect_port 25 #需要检查的端口

                     bindto 172.16.1.2 #以此地址发送请求对服务器进行健康检查

                 }

         }

·         MISC_CHECK { #使用MISC_CHECK方式检查

             misc_path “/usr/local/bin/script.sh arg1 arg2” #外部程序或者脚本的路径和参数

             misc_timeout 5 #脚本或程序超时时间

             misc_dynamic   #这个参数的设置,将利用healthchecker程序的退出状态码来动态调整服务器的权重。返回0:健康检查OK,权重保持。返回1:健康检查失败,权重设为0。返回2-255:健康检查OK,权重设置为:退出状态码-2。如返回255,那么权重为255-2=253

            }

三、配置基于keepalived的LVS

将LD和realserver合并了。2台服务器:www和web,web主用,www备用,分发器上需要先安装ipvsadm。

[root@web ~]# more /etc/keepalived/keepalived.conf 

1.  global_defs {  

2.     lvs_id LVS_www  

3.  }  

4.   

5.  vrrp_sync_groups VG1 {  

6.      group {  

7.             VI_1  

8.      }  

9.  }  

10.  

11. vrrp_instance VI_1 {  

12.     state BACKUP  

13.     interface eth0  

14.     virtual_router_id 51  

15.     priority 100  

16.     nopreempt  

17.     advert_int 1  

18.     authentication {  

19.         auth_type PASS  

20.         auth_pass 123456  

21.     }  

22.     virtual_ipaddress {  

23.         192.168.1.199/24  

24.     }  

25. }  

26.  

27. virtual_server 192.168.1.199 80 {  

28.     delay_loop 6  

29.     lb_algo rr  

30.     lb_kind NAT  

31.     nat_mask 255.255.255.0  

32.     persistence_timeout 10  

33.     protocol TCP  

34.  

35.     real_server 192.168.1.13 80 {  

36.         weight 1  

37.         TCP_CHECK {  

38.             connect_timeout 3  

39.             nb_get_retry 3  

40.             delay_before_retry 3  

41.             connect_port 80  

42.         }  

43.     }  

44.  

45.     real_server 192.168.1.14 80 {  

46.         weight 1  

47.         TCP_CHECK {  

48.             connect_timeout 3  

49.             nb_get_retry 3  

50.             delay_before_retry 3  

51.             connect_port 80  

52.         }  

53.     }  

54. }  

www服务器上仅仅修改如下:

Global_defs字段的:

lvs_id LVS_www

vrrp_instance字段的:

priority 100 #修改为50

nopreempt #删除此行

realserver上先启动httpd服务,然后再启动负载均衡器上的keepalived服务,还有请务必在负载均衡服务器上开启数据包的转发

#echo "1" > /proc/sys/net/ipv4/ip_forward

#service keepalived start

通过ipvsadm –ln查看lvs架构是否正确

通过ip add show查看VIP是否正确添加

可以看出VIP已经在web服务器上正确添加,现在可以访问服务了。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值