LVS DR搭建
前期准备工作--ip规划
DR主:192.168.31.35 主调度器
DR从:192.168.31.38 从调度器
VIP:192.168.31.100 VIP地址
RS1:192.168.31.36 后端真实web服务器
RS2:192.168.31.37 后端真实web服务器
前期准备工作--应用安装
调度器:yum install -y ipvsadm keepalived
后台web: yum install -y httpd
前期准备工作--端口设置以及查询命令
systemctl stop firewalld 或者
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --reload
查看连接数和状态以及转发:ipvsadm -lnc
查看LVS设置:ipvsadm
由于keepalive中配置了VIP等,所以不需要再去重复配置VIP等。
keeplive主脚本:192.168.31.35
vi /etc/keepalived/keepalived.conf //配置keepalived和DR
global_defs {
router_id VIP #服务器名字
}
vrrp_instance VI_1 {
state MASTER #配置主备,备用机此配置项为BACKUP
interface ens192 #指定接口
virtual_router_id 51 #指定路由ID,主备必须一样
priority 101 #设置优先级,主略高于备份
advert_int 1 #设置检查时间
authentication {
auth_type PASS #设置验证加密方式
auth_type 1234 #设置验证密码
}
virtual_ipaddress {
192.168.31.100
}
}
virtual_server 192.168.31.100 80 {
delay_loop 15 #健康检查时间
lb_algo rr #LVS调度算法
lb_kind DR #LVS工作模式
!persistence 60 #是否保持连接,!不保持
protocol TCP #服务采用TCP协议
real_server 192.168.31.36 80 {
weight 1 #权重
TCP_CHECK { #TCP检查
connect_port 80 #检查端口80
connect_timeout 3 #超时时间3秒
nb_get_retry 3 #重试次数3次
delay_before_retry 4 #重试间隔4秒
}
}
real_server 192.168.31.37 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
}
keeplive从脚本:192.168.31.38
vi /etc/keepalived/keepalived.conf //配置keepalived和DR
global_defs {
router_id VIP2 #服务器名字
}
vrrp_instance VI_1 {
state BACKUP #配置主备,备用机此配置项为BACKUP
interface ens192 #指定接口
virtual_router_id 51 #指定路由ID,主备必须一样
priority 100 #设置优先级,主略高于备份
advert_int 1 #设置检查时间
authentication {
auth_type PASS #设置验证加密方式
auth_type 1234 #设置验证密码
}
virtual_ipaddress {
192.168.31.100
}
}
virtual_server 192.168.31.100 80 {
delay_loop 15 #健康检查时间
lb_algo rr #LVS调度算法
lb_kind DR #LVS工作模式
!persistence 60 #是否保持连接,!不保持
protocol TCP #服务采用TCP协议
real_server 192.168.31.36 80 {
weight 1 #权重
TCP_CHECK { #TCP检查
connect_port 80 #检查端口80
connect_timeout 3 #超时时间3秒
nb_get_retry 3 #重试次数3次
delay_before_retry 4 #重试间隔4秒
}
}
real_server 192.168.31.37 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
}
RS脚本:192.168.31.36/37 创建rs.sh 并写入以下内容
#!/bin/bash
#
# Script to start LVS DR real server.
# description: LVS DR real server
# . /etc/rc.d/init.d/functions
VIP=192.168.31.100
host=`/bin/hostname`
case "$1" in
start)
# 关闭 ARP 应答和响应
#arp_ignore: 定义接收到ARP请求时的响应级别;1表示仅在请求的目标地址配置请求到达的接口上的时候,才给予响应
#arp_announce:定义将自己地址向外通告时的通告级别:2表示仅向与本地接口上地址匹配的网络进行通告;
/sbin/ifconfig lo down
/sbin/ifconfig lo up
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
# 把 VIP 配置在 lo:0 接口 防止和其他主机沟通 掩码32 只广播给自己
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
# 配置路由,只要是到 VIP 的报文,就走 lo 网卡
/sbin/route add -host $VIP dev lo:0
;;
stop)
# Stop LVS-DR real server loopback device(s).
/sbin/ifconfig lo:0 down
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
;;
status)
# 恢复 ARP 应答和响应
islothere=`/sbin/ifconfig lo:0 | grep $VIP`
isrothere=`netstat -rn | grep "lo:0" | grep $VIP`
if [ ! "$islothere" -o ! "isrothere" ];then
# Either the route or the lo:0 device
# not found.
echo "LVS-DR real server Stopped."
else
echo "LVS-DR real server Running."
fi
;;
*)
# Invalid entry.
echo "$0: Usage: $0 {start|status|stop}"
exit 1
;; esac
分别执行脚本systemctl start keepalived 或 sh rs.sh start
以上便是同网段 LVS+keepalived集群搭建全部过程,请大家多多指教,如有错误请留言或私聊,每隔一天我会定时上线查看。