keepalived+lvs+nginx高可用

筅森魡賤 提交于 2020-03-05 06:41:20

环境说明:

IP地址 部署应用
192.168.10.100 VIP0
192.168.10.101 VIP1
192.168.10.17 keepalived+lvs
192.168.10.16 keepalived+lvs
192.168.10.15 nginx
192.168.10.14 nginx

keepalived+lvs机器上配置

#1.安装keepalived

yum install keepalived –y

#2.配置keepalived

global_defs {
    router_id  LVS
}
vrrp_instance LVS_1 {
    state MASTER    #备改为 BACKUP
    interface ens33
    virtual_router_id 100
    priority 100    #备改为 90
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.100
        192.168.10.101
    }
}

virtual_server 192.168.10.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 120
    protocol TCP
    real_server 192.168.10.15 80 {
        TCP_CHECK {
            weight 1
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
    real_server 192.168.10.10 80 {
        TCP_CHECK {
            weight 1
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}

virtual_server 192.168.10.101 81 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP
    real_server 192.168.10.15 81 {
        TCP_CHECK {
            weight 1
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 81
        }
    }
    real_server 192.168.10.10 81 {
        TCP_CHECK {
            weight 1
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 81
        }
    }
}

#3.检查是否支持安装lvs
find /lib/modules/$(uname -r)/ -iname "**.ko*" | cut -d/ -f5-

yum install ipvsadm –y  #yum安装lvs

#4.开启转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward

sysctl -p   # 重新载入sysctl变量

nginx机器配置

#1.yum安装nginx或者编译安装

yum install nginx -y

service nginx start #启动nginx

#2.修改nginx.conf,配置81的端口
vim /etc/nginx/nginx.conf

echo '192.168.10.15:80' > /usr/share/nginx/html/index.html  #设置web的标志内容

#3.lvs脚本

#!/bin/bash
# Script to start LVS DR real server. 
# chkconfig: - 90 10 
# description: LVS DR real server

VIP0=192.168.10.100
VIP1=192.168.10.101

. /etc/rc.d/init.d/functions

case "$1" in
start)
    ifconfig lo:0 $VIP0 broadcast $VIP0 netmask 255.255.255.255 up
    route add -host $VIP0 dev lo:0

    ifconfig lo:1 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up
    route add -host $VIP1 dev lo:1

    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 "RealServer Start OK"
;;
stop)
    ifconfig lo:0 down
    route del $VIP0 > /dev/null 2>&1
    ifconfig lo:1 down
    route del $VIP1 > /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 "RealServer Stoped"
;;
*)
    echo "$0: Usage:$0 {start|stop}"
    exit 1
;;
esac

#4.添加开机自启动
hmod +x /etc/init.d/lvs-rs
chkconfig --add lvs-rs
chkconfig lvs-rs on
/etc/init.d/lvs-rs start

验证

访问VIP的网址,看是否每次访问的站点内容都是不同的。windows中的浏览器有缓存功能,如果站点内容有时候是相同的,那么不一定是自己配错了,可能是缓存的原因,避免的办法就是使用Linux的curl命令去访问站点的内容

ipvsadm -ln     #查看连接数
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!