搭建lvs+keepalived+nginx
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
更多推荐
所有评论(0)