ipvsadm
最编程
2024-08-10 21:16:41
...
主节点暴露ip
配置虚拟 ip 这里的主节点用来配置lvs ifconfig ens33:2 192.168.1.100/24
ifconfig ens33:2 down 关闭虚拟ip
其他节点影藏vip 需要设置arp协议 先改内核再改ip cd /proc/sys/net/ipv4/conf/ens33
一个是arp_ignore
一个是arp_announce
修改arp_ignore
echo 1 > arp_ignore 这里不要用vim
echo 2 > arp_announce
返回上一层 进入
cd all/
echo 1 > arp_ignore
echo 2 > arp_announce
设置环卫ip
ifconfig lo:2 192.168.1.100 netmask 255.255.255.255
这里一定要设置4个255的掩码 不能使用/来显示掩码
ip地址和掩码要进行按位与的操作 来生成路由条目 假如输入成3个255一个0 那么生成的路由条目和real 地址生成的路由条目一样 切环卫ip离内核进,会先进入环卫ip 又发回给自己,例如链接xshell 进入的是real ip 但是出来都可以出来但是环卫ip 离内核进,内核又将数据发送环卫ip,无线循环 所以这个包永远发布出去 设置4个255 规避死循环的风险
------------------------------------------------------
另一台也是要这样设置
echo > 1 /proc/sys/net/ipv4/conf/ens33/arp_ignore
echo > 1 /proc/sys/net/ipv4/conf/all/arp_ignore
echo > 2 /proc/sys/net/ipv4/conf/ens33/arp_announce
echo > 2 /proc/sys/net/ipv4/conf/all/arp_announce
再配置ip
ifconfig lo:2 192.168.1.100 netmask 255.255.255.255
两台配置httpd yum install httpd -y
service httpd start
创建一个主页
vi /var/www/html/index.html
在主节点下载 ipvsadm yum install ipvsadm -y
配置入口规则 -A 是入口规则 -t tcp协议 ip+端口 -s 轮询
ipvsadm -A -t 192.168.1.100:80 -s rr
查看规则
ipvsadm -ln
进入到A 入口的
配置出口规则 -a 出口规则 -t tcp 协议 ip+端口号 -r real ip ip+端口号 -g 轮询 -w 权重为1
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.6 -g -w 1
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.8 -g -w 1
刷新页面可以看到负载
node02-node03
netstat -natp 可以看到很多链接
node01
netstat -natp 看不到链接
node01 ipvsadm -lnc 查看偷窥记录
如果node02 down掉 就会出现 syn-recv 此时访问节点 只有一个能访问 另一个无法访问 握手发送但是没有收到确认的包
ipvsadm -C 清除配置
ifconfig ens33:2 down
关闭虚拟ip
在node01 和 node04安装
yum install keepalived ipvsadm -y
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
复制一个副本 避免出错
vim keepalived.conf
vrrp_instance VI_1 虚拟冗余协议
vrrp_instance VI_1 {
state MASTER //node04 BACKUP
interface eth0
virtual_router_id 51
priority 100 //node04权重 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24 dev ens33 label ens33:3
}
}
80 http 443 https
lb_kind DR 将NAT 改成DR模式
persistence_timeout 0 当一个用户访问之前访问过的 keepalive会根据曾经的记录 转给之前的服务器内存有直接相应 而不是重新转给新的 节省开销
测试时 写50 那么页面不跳转 生产环境改成合适时间
dG 删除光标后所有
光标定位到real_server
shift+: . 代表光标所在位置 ,到哪 $文件最后一行 -1 就是倒数第二行 去掉最后一层大括号 y 是复制的意思
:.,$-1y
在倒数第二行按p 粘贴刚才复制的内容
只需要该real_server ip 就可以了
vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100/24 dev ens33 label ens33:3 } } virtual_server 192.168.1.100 80 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 0 protocol TCP real_server 192.168.1.12 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }
real_server 192.168.1.13 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
将上述文件拷贝到另一台备机上
在修改内容
状态是BACKUP
权重是50
启动node01的keepalived
ifconfig
------------------------------
down掉物理网卡 node01
此时查看node04 ifconfig 虚拟vip成功显示
启动node01 时 因为master 权重较高
node04 的vip 会下线
但是这是因为数据比较少得时候 能同步的过来 node01并不是每次都能正常转换成master
当数据较多时 node01 会抢主 但是同步数据会消耗时间 会使服务器拒绝服务 无法正常访问
但是最好将主备的配置一样,一旦主发生宕机,备机直接顶上,
有些支持抢主ipvsadm 有些不支持