LVS+Keepalived负载均衡高可用如此简单?

时间:2022-12-22 17:23:45

     今天简单写下lvs+keepalive实现负载均衡和高可用的功能,仅供参考!关于它们的详细介绍这里就不描述了,大家可以自行搜索下!

     lvs+keepalived网络拓扑图:

 LVS+Keepalived负载均衡高可用如此简单?

一、准备一个vip和4台虚拟机:

 

vip:192.168.1.100 向外提供服务的ip,一般是绑定域名的
192.168.1.10 LB1_master调度器IP
192.168.1.13  LB2_slave调度器IP
192.168.1.11 nginx服务器IP
192.168.1.12  apache服务器IP

 

二、安装准备工作

lsmod|grep ip_vscat /etc/redhat-release
uname �Crm
ln �Cs /usr/src/kernels/内核版本  /usr/src/linux
ln -s /usr/src/kernels/2.6.32-504.12.2.el6.x86_64/ /usr/src/linux
#若tab没有内核版本号出来,安装kernel-devel
yum install kernel-devel  libnl* popt* �Cy

#ipvsadm下载地址(注意版本)

http://www.linuxvirtualserver.org/software/ipvs.html

#安装LVS命令

tar zxvf ipvsadm-1.26.tar.gzcd ipvsadm-1.26make && make install#将ipvsadm加入内核模块的方法有以下两种modprobe ip_vs/sbin/ipvsadm#查看下是否加载成功,若有以下内容表示安装成功[root@php ipvsadm-1.26]# lsmod |grep ip_vsip_vs                 125694  0 libcrc32c               1246  1 ip_vsipv6                  334932  25 ip_vs

三、LB添加LVS转发

1.如果有域名的话,将域名解析到公网IP

2.配置LVS虚拟IP,就是我们所谓的VIP

ifconfig eth0:0 192.168.1.100/24 uproute add -host 192.168.1.100 dev eth0

3.检查结果

ifconfigeth0:0    Link encap:Ethernet  HWaddr 08:00:27:03:F9:0D  inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

4.配置添加LVS服务并添加RS

  在这里,有必要介绍下添加集群服务的规则:

  格式: ipvsadm -A|E -t|u|f service-address [-s scheduler]

  参数:

[-p [timeout]] [-M netmask]

-A:                  表示添加一个新的集群服务(add)

-E:                  编辑一个集群服务(edit)

-t:                  表示tcp协议(tcp)

-u:                  表示udp协议(udp)

-f:                  表示firewall-Mark,防火墙标记(firewall)

service-address:     集群服务的IP地址,即VIP

-s                    指定调度算法

-p                    持久连接时长,如#ipvsadm -Lcn ,查看持久连接状态

-M                    定义掩码(netmask)

ipvsadm -D -t|u|f service-address      删除一个集群服务(delete)

ipvsadm -C                             清空所有的规则(clean)

ipvsadm -R                             重新载入规则(reload)

ipvsadm -S [-n]                        保存规则(save)

 

 

向集群服务添加RealServer规则:

  添加RealServer规则

  格式:ipvsadm -a|e -t|u|f service-address -r server-address

  参数:

  [-g|i|m] [-w weight]

-a                 添加一个新的realserver规则

-e                 编辑realserver规则

-t                 tcp协议

-u                 udp协议

-f                 firewall-Mark,防火墙标记

service-address    realserver的IP地址(真实服务器的IP)

-g                表示定义为LVS-DR模型

-i                 表示定义为LVS-TUN模型

-m               表示定义为LVS-NAT模型

-w                定义权重,后面跟具体的权值

ipvsadm -d -t|u|f service-address -r server-address          --删除一个realserver

 

#设置超时(可选)ipvsadm --set 30 5 60#添加一个实例(类似虚拟主机)用-Aipvsadm -A -t 192.168.1.100:80 -s wrr �Cp 20ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11 -g -w 1ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12 -g -w 1

5.检查结果

ipvsadm -L

四、LB删除LVS方法

#删除virtual server用ipvsadm �CDipvsadm �CD �Ct 192.168.1.10 �Cs wrr#删除节点用ipvsadm -dipvsadm -d -t 192.168.1.100:80 -r 192.168.1.12:80

五、RS配置lo,并且绑定vip

ifconfig lo:0 192.168.1.100/32 uproute add �Chost 192.168.1.100 dev lo

 1.RS端抑制arp广播

echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/lo/arp_announceecho "1" > /proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/all/arp_announce

 

六、KeepAlived服务高可用

安装方法一:yum install openssl* -yyum install kernel-devel  libnl* popt* �Cyln -s /usr/src/kernels/2.6.32-504.8.1.el6.x86_64/ /usr/src/linuxtar zxvf keepalived-1.1.19.tar.gzcd keepalived-1.1.19./configuremake && make install

 

安装方法二:tar zxvf keepalived-1.1.19.tar.gzcd keepalived-1.1.19./configure \--mandir=/usr/loacl/share/man \--with-kernel-dir=/usr/src/kernels/2.6.32-504.8.1.el6.x86_64/make && make install

操作命令:

/bin/cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d//bin/cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/mkdir /etc/keepalived �Cp/bin/cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived//bin/cp /usr/local/sbin/keepalived /usr/sbin//etc/init.d/keepalived start[root@apache ~]# /etc/init.d/keepalived startStarting keepalived:                                       [  OK  ][root@apache ~]#ps -ef|grep keeproot      2864     1  0 07:58 ?        00:00:00 keepalived -Droot      2866  2864  0 07:58 ?        00:00:00 keepalived -Droot      2867  2864  0 07:58 ?        00:00:00 keepalived -Droot      2871  1101  0 07:58 pts/0    00:00:00 grep keep[root@apache ~]# /etc/init.d/keepalived stop  =è成功后停止keepalived服务Stopping keepalived:                                       [  OK  ]

七、在主(master)keepalived配置keepalived.conf配置文件

 

! Configuration File for keepalived global_defs {   notification_email {   291406980@qq.com   }   notification_email_from Alexandre.Cassen@firewall.loc   smtp_server 10.0.0.1   smtp_connect_timeout 30   router_id LVS_7} vrrp_instance VI_1 {    state MASTER  #因为这里是主,所以选用MASTER                        interface eth0    virtual_router_id 55    priority 150  #这个值一定要比从(slave)的大    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {         192.168.1.100/24  #vip    }}

八、在从(slave)的keepalived配置keepalived.conf文件

 

! Configuration File for keepalivedglobal_defs {   notification_email {   291406980@qq.com   }   notification_email_from Alexandre.Cassen@firewall.loc   smtp_server 10.0.0.1   smtp_connect_timeout 30   router_id LVS_2}vrrp_instance VI_1 {    state BACKUP     #这里是从(slave),选用BACKUP    interface eth0    virtual_router_id 55    priority 100     #这个值小于主(master)的150    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.1.100/24  #vip    }}

 九、最后主从都需重启keepalived

/etc/init.d/keepalived start

    我这里分别是两个站点:apache和nginx!在输入192.168.1.100这个vip的时候,会调度到不同的站点上面!以下是截图:

LVS+Keepalived负载均衡高可用如此简单?

 

LVS+Keepalived负载均衡高可用如此简单?

十、LVS集群分发请求RS负载不均的问题

主要有以下几点:

  1.会话保持的原因,尽量不要在负载均衡器上做会话保持

  2.LVS自身的会话保持参数设置问题,要优化,尽量用cookies或者session替代

  3.LVS调度算法设置问题,例如rr wrr wlc lc 算法

  4.后端RS节点的会话保持参数,例如apache的keealive参数

  5.访问量少的情况,不均衡的现象比较明显

  6.用户发送的请求时间长短,和请求资源多少有关

本文出自 “9527” 博客,请务必保留此出处http://liangey.blog.51cto.com/9097868/1631056