haxproxy+lvs+keepalived

三者区别

http://www.webzuan.cn/szk/5485.html

lvs认识

https://baijiahao.baidu.com/s?id=1698090190624697503&wfr=spider&for=pc
https://www.zsythink.net/archives/2134

lvs+keepalived高可用

https://blog.csdn.net/Ryougi_Shiki_uio/article/details/119112435,https://www.linuxprobe.com/linux-lvs-build.html

目前网站一般采用haproxy/nginx+keepalived,如果是web建议使用nginx,mysql、mycat等其他应用建议使用haproxy,负载均衡性能方面lvs>haproxy>nginx

ipvsadm是lvs的管理工具(lvs一般采用nat模式下的wrr算法),keepalived基于lvs实现,但是lvs只是做了负载均衡,keepalived做故障转移

21531KJ6-0

配置

参考:https://www.cnblogs.com/blxt/p/13099424.html

1.因为lvs是基于内核的,因此先查看内核是否加载了ipvs模块

#查看结果lsmod |grep ip_vs
ip_vs                 125220  0
libcrc32c               1246  1 ip_vs
ipv6                  317340  78 ip_vs,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6
#如果没有上述信息,使用modprobe ip_vs进行加载

2.lvs服务器下载ipvsadm模块:yum install ipvsadm

3.在lvs服务器配置vip(可使用ip addr add xxx命令,也可直接添加网卡文件)

4.lvs服务器配置命令如下:

ipvsadm -At 172.168.11.12:80 -s rr      #添加虚拟服务(这个ip是3中得到的),rr为轮询算法

ipvsadm -at 172.168.11.12:80 -r 192.168.11.253:80 -m    #增加一个realserver

ipvsadm -at 172.168.11.12:80 -r 192.168.11.252:80 -m    #再增加一个realserver

5.客户机(任意)测试连通性

#1.测试连通性(ping不通需要添加路由,因为这个ip是虚拟的,ip route add 100.222.111.1 via 1.65.15.141 dev ens32)
ping -c 172.168.11.12:80

6.验证service

[root@cli ~]# curl -m 15 --retry 1 -sSL 172.168.11.12:80`
curl: (28) Connection timed out after 15001 milliseconds
[root@cli ~]#

此时会抓包会发现丢包现象(正常情况:客户机-vip-rip,rip-vip-客户机,且seq不为0)

7.iptables配置地址伪装(修改后如下图),伪装vip为源ip,因为抓包过程中vip无法正常到达rip节点

[root@lvs ~]# iptables -t nat -A POSTROUTING -m ipvs --vaddr 100.222.111.1 --vport 8000 -j MASQUERADE
[root@lvs ~]# iptables -t mangle -A POSTROUTING -m ipvs --vaddr 100.222.111.1 --vport 8000 -j LOG --log-prefix '[k8svip ipvs]'
[root@lvs ~]# sysctl net.ipv4.vs.conntrack=1

常用配置参数

ipvsadm 常用配置参数
-A 添加虚拟服务VIP
-D 删除虚拟服务VIP
-L 查看虚拟服务VIP
-C 清除所有虚拟服务VIP
-t 指定虚拟服务及端口 VIP:Port
-r 指定真实服务及端口 RS:Port
-s 指定算法,rr(轮询)、wrr(加权轮询)、lc(最少连接)、sh(源地址散列)、dh(目标地址散列) 等等
-w 指定权重
-m 指定转发模式为NAT
-g 指定转发模式为DR(此处的真实服务器要添加LVS中相同的vip)
-i 指定转发模式为IPIP隧道

如果lvs服务器上有80端口的http服务,lvs是会覆盖的,因为LVS的优先级>http

问题:

  1. 配置好之后只能在lvs所在服务上curl,浏览器包括其他linux服务器无法curl通(已解决:上述iptables地址伪装)
  2. 启动之后netstat -tunlp无法查到对应端口(基于内核,只做端口ip转发,不走流量)
posted @ 2023-02-26 16:42  MISF  阅读(21)  评论(0编辑  收藏  举报
     JS过度和变形效果演示   
  
    html5.png