LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统

keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived是自动完成,不需人工干涉。

主机1

10.10.2.103

Keepalived Master

主机2

10.10.2.104

Keepalived Backup

主机3

10.10.2.101

Nginx1

主机4

10.10.2.102

Nginx2

10.10.2.99

虚拟IP(VIP)

一、安装ipvsadm

1、用于查看lvs转发及代理情况的工具

只需要在keepalived上安装即可

yum install ipvsadm -y

2、查看当前配置的虚拟服务和各个RS的权重

ipvsadm -Ln

3、查看当前ipvs模块中记录的连接(可用于观察转发情况)

ipvsadm -lnc

4、查看ipvs模块的转发情况统计

ipvsadm -Ln --stats | --rate

二、keepalived

yum install -y keepalived

主机:10.10.2.103

vim /etc/keepalived/keepalived.conf 

global_defs {
   notification_email {
         edisonchou@hotmail.com
   }
   notification_email_from sns-lvs@gmail.com
   smtp_server 192.168.80.1
   smtp_connection_timeout 30
   router_id LVS_DEVEL  # 设置lvs的id,在一个网络内应该是唯一的
}
vrrp_instance VI_1 {
    state MASTER   #指定Keepalived的角色,MASTER为主,BACKUP为备 记得大写
    interface ens192  #网卡id 不同的电脑网卡id会有区别 可以使用:ip a查看
    virtual_router_id 51  #虚拟路由编号,主备要一致
    priority 100  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
    advert_int 1  #检查间隔,默认为1s
    authentication {   #这里配置的密码最多为8位,主备要一致,否则无法正常通讯
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.2.99  #定义虚拟IP(VIP)为10.10.2.99,可多设,每行一个
    }
}
# 定义对外提供服务的LVS的VIP以及port
virtual_server 10.10.2.99 80 {
    delay_loop 6 # 设置健康检查时间,单位是秒
    lb_algo rr # 设置负载调度的算法为wlc
    lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
    nat_mask 255.255.255.0
    persistence_timeout 0
    protocol TCP
    real_server 10.10.2.101 80 {  # 指定real server1的IP地址
        weight 3   # 配置节点权值,数字越大权重越高
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 10.10.2.102 80 {  # 指定real server2的IP地址
        weight 3  # 配置节点权值,数字越大权重越高
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

主机:10.10.2.103

vim /etc/keepalived/keepalived.conf 

global_defs {
   notification_email {
         edisonchou@hotmail.com
   }
   notification_email_from sns-lvs@gmail.com
   smtp_server 192.168.80.1
   smtp_connection_timeout 30
   router_id LVS_DEVEL  # 设置lvs的id,在一个网络内应该是唯一的
}
vrrp_instance VI_1 {
    state BACKUP #指定Keepalived的角色,MASTER为主,BACKUP为备 记得大写
    interface ens192  #网卡id 不同的电脑网卡id会有区别 可以使用:ip a查看
    virtual_router_id 51  #虚拟路由编号,主备要一致
    priority 50  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
    advert_int 1  #检查间隔,默认为1s
    authentication {   #这里配置的密码最多为8位,主备要一致,否则无法正常通讯
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
       10.10.2.99  #定义虚拟IP(VIP)为10.10.2.99,可多设,每行一个
    }
}
# 定义对外提供服务的LVS的VIP以及port
virtual_server 10.10.2.99 80 {
    delay_loop 6 # 设置健康检查时间,单位是秒
    lb_algo rr # 设置负载调度的算法为wlc
    lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
    nat_mask 255.255.255.0
    persistence_timeout 0
    protocol TCP
    real_server 10.10.2.101 80 {  # 指定real server1的IP地址
        weight 3   # 配置节点权值,数字越大权重越高
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 10.10.2.102 80 {  # 指定real server2的IP地址
        weight 3  # 配置节点权值,数字越大权重越高
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

1、router_id

后面跟的自定义的ID在同一个网络下是一致的

2、state

state后跟的MASTER和BACKUP必须是大写;否则会造成配置无法生效的问题

3、interface

网卡ID;这个值不能完全拷贝我的配置,要根据自己的实际情况来看,可以使用以下方式查询

ip a

4、priority

主备优先级

MASTER中配置的priority必须比BACKUP大;差值最好>=50

5、authentication

主备之间的认证方式

一般使用PASS即可;主备的配置必须一致;否则无法通讯,会导致裂脑;密码不能大于8位

6、virtual_ipaddress

配置的VIP;允许配置多个

三、启动keepalived

/etc/init.d/keepalived start

1、备服务器的网卡下没有出现192.168.1.200(VIP)的ip,说明备服务正常

注:如果这里也出现了VIP,那么说明裂脑了,需要检查防火墙是否配置正确;是否允许了vrrp的多播通讯

2、优化连接超时时间

ipvsadm --set 1 10 300

四、nginx

1、/App/scripts/rs.sh 编写nginx连接lvs文件,需要在两台keepalive都要加

#!/bin/bash

#Description : Real Server vip configuration

#此文件用于配置lvs vip,请勿删除。

VIP=10.10.2.99

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

case "$1" in

start)

echo "Start LVS of Real Server"

echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore



echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up

;;

stop)

echo "Stop LVS of Real Server"

echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore

echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce

echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce

/sbin/ifconfig lo:0 down

;;

*)

echo "Usage:$0 {start|stop}"

exit 1

esac

2、vim /etc/rc.d/rc.local加入开机启动

#LVS Real Server vip configuration

/bin/bash /App/scripts/rs.sh start

GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐