LVS+Keepalived负载均衡配置部署

来源:互联网 发布:逻辑回归算法概念 编辑:程序博客网 时间:2024/05/29 14:06

http://www.ituring.com.cn/article/179806


相关概念

  • 维基百科-LVS
  • 百度百科-LVS
  • LVS中文站点
  • LVS中文手册

一、准备工作
1. 服务器、操作系统(当前CentOS6.6 x86_64)、网络环境(服务期间网络互通) ;

# 操作系统:CentOS6.6 x86_64# 服务器 (LVS主备各1台,WEB服务器3台,图片服务器2台)WEBServer负载虚拟IP192.168.0.20IMGServer负载虚拟IP192.168.0.30LVS主:192.168.0.11LVS备:192.168.0.12WebServer1 192.168.0.21WebServer2 192.168.0.22WebServer3 192.168.0.23IMGServer1 192.168.0.31IMGServer2 192.168.0.32 

2. 关闭SELinux(改完需重启服务器)

# 关闭SELinuxsed -i 's#^SELINUX=.*#SELINUX=disabled#' /etc/sysconfig/selinux   # 重启服务器reboot  

3. Iptables开启需要端口,如80;

# Iptables 开启相应端口iptables -A INPUT -p tcp -s 0/0 --dport 80 -j ACCEPT   iptables -A OUTPUT  -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT  

二、LVS主机安装Keepalived,ipvsadm
1. 安装依赖包

yum -y install wget popt popt-devel popt-static libnl libnl-devel kernel-devel;  ln -s /usr/src/kernels/$(uname -r)/ /usr/src/linux;  

2. 安装 Keepalived,ipvsadm(YUM安装或TarBall安装)

# YUM安装 Keepalived,ipvsadmyum -y install  keepalived ipvsadm;# TarBall安装Keepalivedwget http://www.keepalived.org/software/keepalived-1.2.15.tar.gz;tar xvf keepalived-1.2.15.tar.gz -C /usr/local/src/;cd /usr/local/src/keepalived-1.2.15/;./configure \--bindir=/usr/bin \--sbindir=/usr/sbin \--sysconf=/etc \--with-kernel-dir=/usr/src/kernels/$(uname -r)/;make;make install;# TarBall安装ipvsadmwget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz;  tar xvf ipvsadm-1.26.tar.gz -C /usr/local/src/;cd /usr/local/src/ipvsadm-1.26/;make;make install;

3. 创建ipvsadm配置文件,启动并加入开机启动

/etc/init.d/ipvsadm save;  /etc/init.d/ipvsadm start;chkconfig ipvsadm on;

4. 配置并启动keepalived

# 备份keepalived配置文件cd /etc/keepalived/;[ -f "keepalived.conf" -a ! -f "keepalived.conf.default" ] && mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.default;[ -f "keepalived.conf" ] && mv keepalived.conf keepalived.conf.$(date +%F_%T);# 创建 Keepalived 配置文件(需先修改 virtual_ipaddress,virtual_server,real_server 配置的IP)cat >> /etc/keepalived/keepalived.conf <<KEEPALIVED! Configuration File for keepalivedglobal_defs {    notification_email {        mr@mruse.cn    }    notification_email_from xxx@163.com    smtp_server smtp@163.com    smtp_connect_timeout 30    router_id LVS_1}vrrp_instance VI_1 {    state MASTER    interface eth0    virtual_router_id 60    priority 100    advert_int 1    authentication {        auth_type PASS        auth_pass MrUse    }    virtual_ipaddress {        192.168.0.20        192.168.0.30    }}virtual_server 192.168.0.21 80 {    delay_loop 3    lb_algo rr    lb_kind DR    persistence_timeout 3    protocol TCP    real_server 192.168.0.22 80 {        weight 3        TCP_CHECK {            connect_timeout 10            nb_get_retry 3            delay_before_retry 3            connect_port 80        }    }    real_server 192.168.0.23 80 {        weight 3        TCP_CHECK {            connect_timeout 10            nb_get_retry 3            delay_before_retry 3            connect_port 80        }    }}virtual_server 172.16.100.130 80 {    delay_loop 3    lb_algo rr    lb_kind DR    persistence_timeout 3    protocol TCP    real_server 192.168.0.31 80 {        weight 3        TCP_CHECK {            connect_timeout 10            nb_get_retry 3            delay_before_retry 3            connect_port 80        }    }    real_server 192.168.0.32 80 {        weight 3        TCP_CHECK {            connect_timeout 10            nb_get_retry 3            delay_before_retry 3            connect_port 80        }    }}KEEPALIVED# 启动Keepalived并加入开机启动/etc/init.d/keepalived restart;chkconfig keepalived on;

5. 记录Keepalived日志

# 注释Keepalived默认配置grep ^KEEPALIVED_OPTIONS /etc/sysconfig/keepalived && sed -i 's#^KEEPALIVED_OPTIONS#\#KEEPALIVED_OPTIONS#g' /etc/sysconfig/keepalived;# 更新keepalived配置echo 'KEEPALIVED_OPTIONS="-D -d -S 0"' >> /etc/sysconfig/keepalived;/etc/init.d/keepalived restartgrep "# CmsTop Keepalived" /etc/rsyslog.conf||cat >> /etc/rsyslog.conf <<SYSLOG# CmsTop Keepalived $(date +%F)# keepalived -D -d -S 0local0.*                    /var/log/keepalived.logSYSLOG/etc/init.d/rsyslog restart

6. 为真实服务器 WebServer, IMGServe创建配置启动脚本(需修改IP地址)

[ -f "/etc/init.d/lvsr" ] && mv /etc/init.d/lvsr /etc/init.d/lvsr.$(date +%F_%T)cat >> /etc/init.d/lvsr <<LVSR#!/bin/bashSNS_VIP=172.16.100.120/etc/rc.d/init.d/functionsstart(){    /sbin/ifconfig lo:0 \$SNS_VIP netmask 255.255.255.255 broadcast \$SNS_VIP up    /sbin/route add -host \$SNS_VIP dev lo:0    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore    echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce    sysctl -p >/dev/null 2>&1    echo "LVS RealServer Start OK"}stop(){    /sbin/ifconfig lo:0 down    /sbin/route del \$SNS_VIP >/dev/null 2>&1    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce    echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore    echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce    echo "LVS RealServer Stoped"}case "\$1" in    start)        start;    ;;    stop)        stop;    ;;    restart)        stop;        start;    ;;    status)        /sbin/ifconfig|tail -5    ;;    *)        echo "Usage: \$0 {start|stop|restart|status}"        exit 1esacexit 0LVSR# 修改依赖文件及启动脚本权限并启动chmod +x /etc/init.d/lvsr;chmod +x /etc/rc.d/init.d/functions;/etc/init.d/lvsr start# 加入开机启动grep ^/etc/init.d/lvsr /etc/rc.local || echo '/etc/init.d/lvsr start' >> /etc/rc.local

三、查看状态、测试排错
1. 重启Keepalived,在LVS服务器上查看状态

/etc/init.d/keepalived restart;/etc/init.d/ipvsadm status;

2. 测试排查思路

# 查看配置文件,查看ip# 查看Iptables是否开启相应端口# 查看网络,服务器间及与虚拟IP是否可以通信# 查看Keepalived,ipvsadm是否正常启动# 查看错误日志

0 0
原创粉丝点击