keepalived+lvs基础配置
#以下过程使用root用户操作。
一、安装keepalived
#下载keepalived安装文件
cd /app/tmp
wget http://10.0.73.93/soft/haproxy/keepalived-1.2.1.tar.gz
tar -zxvf keepalived-1.2.1.tar.gz
cd /app/tmp/keepalived-1.2.1
#ln -s /usr/src/kernels/<kernel-version> /usr/src/linux
#安装openssl和popt
yum -y install openssl-devel.x86_64
yum -y install popt-devel.x86_64
./configure
make && make install
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
chkconfig --add keepalived
chkconfig keepalived on
二、安装ipvsadm
1)安装
yum -y install kernel
yum -y install popt-devel.x86_64 popt.x86_64 libnl-devel libnl popt-static
yum -y install ipvsadm
2)配置 keepalived
# vim /etc/keepalived/keepalived
! Configuration File for keepalived
global_defs {
notification_email {
itop_mw@sf-express.com
}
notification_email_from itop_mw@sf-express.com
smtp_server mail.sf-express.com
smtp_connect_timeout 30
router_id TEST # router_id 按照系统代码来命名以便于区分
}
vrrp_instance VI_1 {
state BACKUP # 状态:DIR上用MASTER,RS2备用服务器上用BACKUP
interface eth0
virtual_router_id 83
priority 99 # 优先级别:DIR上用100,RS2用99
advert_int 1
authentication {
auth_type PASS
auth_pass 2222
}
virtual_ipaddress {
10.203.13.83
}
}
# 启用80端口
virtual_server 10.203.13.83 80 {
delay_loop 6 # 每隔6秒查询real server的状态
lb_algo rr # lvs算法
lb_kind DR # Driect Route
#nat_mask 255.255.255.252
persistence_timeout 60 # 同一ip的连接60秒内被分配到同一台real server
protocol TCP # 用tcp协议查询real server状态
real_server 10.203.13.37 80 { # 节点IP
weight 100 # 权重为100
TCP_CHECK {
connect_timeout 3 # 3秒无反应超时
nb_get_retry 3
delay_before_retry 3
connet_port 80
}
}
real_server 10.203.13.46 80 {
weight 100
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connet_port 80
}
}
}
# 启用443端口
virtual_server 10.203.13.83 443 {
delay_loop 6 # 每隔6秒查询real server的状态
lb_algo rr # lvs算法RR
lb_kind DR # Driect Route
#nat_mask 255.255.255.252
persistence_timeout 60 # 同一ip的连接60秒内被分配到同一台real server
protocol TCP # 用tcp协议查询real server状态
real_server 10.203.13.37 443 {
weight 100 # 权重为100
TCP_CHECK {
connect_timeout 3 # 3秒无反应超时
nb_get_retry 3
delay_before_retry 3
connet_port 443
}
}
real_server 10.203.13.46 443 {
weight 100
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connet_port 443
}
}
}
------- 参考文件:
3)配置ipvsadm(DR模式)
# vim /etc/keepalived/lvs_dr.sh
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/sbin/ipvsadm
vip=10.203.13.83 # vip
rs1=10.203.13.37 # 后端节点
rs2=10.203.13.46 # 后端节点
$ipv -C
$ipv -A -t $vip:80 -s wrr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
$ipv -A -t $vip:443 -s wrr
$ipv -a -t $vip:443 -r $rs1:443 -g -w 1
$ipv -a -t $vip:443 -r $rs2:443 -g -w 1
------- 参考文件:
4)配置网卡内核参数
# vim /etc/keepalived/lvs_rs.sh
#! /bin/bash
#指定vip是在回环地址地址上;子网掩码全设255,表明只发不回
vip=10.203.13.83 # vip
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
#添加路由
route add -host $vip 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
------ 参考文件:
5)重启keepalived/LVS
/etc/init.d/keepalived restart
/etc/init.d/ipvsadm restart
6) 查看ipvsadm转发列表
#ipvsadm -Ln
[root@cnsz22VLK7775:/etc/keepalived]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.203.13.83:80 wrr
-> 10.203.13.37:80 Route 1 0 0
-> 10.203.13.46:80 Local 1 0 0
TCP 10.203.13.83:443 wrr
-> 10.203.13.37:443 Route 1 0 0
-> 10.203.13.46:443 Local 1 0 0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
2019-01-14 Vuejs2.9.6安装启动demo