LVS-NAT四层+nginx七层
1. 环境准备
多线程CPU和Vmware,虚拟机操作系统限ubuntu和centos,具体看命令配置即可知道,架构图如下
IP分配无
注意事项
- 关闭selinux和防火墙还有把默认表清空一下,实际生产案例可能会配置专有端口,这个自己注意
- NAT和仅主机仅仅是模拟内外网不同网段,一定要理解含义
- 这里只使用了LVS-NAT负载均衡转发,DR多网段和tunnel模式可参考我前面写的修改,删除和增加部分网络参数即可
- 默认使用ROOT用户
- 一步一步来,喝杯咖啡
普及下LVS和Nginx
- 四层转发不握手
- 七层转发需要握手
- LVS只支持四层转发
- nginx支持七层和虚拟四层转发
- LVS基于内核转发,LVS适合高并发,大规模的网络负载均衡场景
- nginx更适合HTTP转发
2. LVS配置
1 | systemctl stop firewalld |
3. LVS-BAK配置
1 | hostnamectl set-hostname LVS-BAK |
4. Nginx-1配置
1 | hostnamectl set-hostname Nginx-1 |
5. Nginx-2配置
1 | hostnamectl set-hostname Nginx-2 |
6. LNP-1配置
1 | hostnamectl set-hostname LNP-1 |
7. LNP-2配置
1 | hostnamectl set-hostname LNP-2 |
8. mysql-Mast配置
1 | hostnamectl set-hostname Mysql-Mast |
9. mysql-Slave-1配置
1 | hostnamectl set-hostname Slave-1 |
10. mysql-Slave-2配置
1 | hostnamectl set-hostname Slave-2 |
11. NFS配置
1 | #nfs配置 |
11. NFS-BAK配置
1 | hostnamectl set-hostname NFS-BAK |
13. Tomcat-1配置
1 | hostnamectl set-hostname Tomcat-1 |
14. Tomcat-2配置
1 | hostnamectl set-hostname Tomcat-2 |
15. 配置小坑总结
到这里我们的高服务大致就完成了,但是还是有点小问题,因为 keepalived 配置是轮询,而jpress又有验证码,导致登录不进去,我只好把 keepalived 的 persistence_timeout 开启(自定义多长时间访问同一台机器配置项),但是这个也不能完全解决问题,得使用 sieesion 会话保存解决,感兴趣的可自行尝试。同时浏览器会有缓存,导致轮询不正常,我还以为是权重问题,发现自己是 rr 算法(跟nginx搞混了),要配置成wrr,权重才会生效….然后也出现了很多小问题,比如rhel系列必须关闭 selinux,否则 nginx 无法配置转发,机器重启后还是得 iptables -F 刷一下,我忘记 disable 防火墙,机器重启后导致防火墙自启等等。然后那个后端nginx proxy我临时配的下一跳地址,老是会自动删除,导致 user 访问时无法接收到回包,我一度认为是LVS配置出问题,甚至把 keepalived 删除了,直接使用 ipvsadm 配置……这个 IP 配置建议还是写配置文件。所以很多细节一定要注意,敲多了,可根据实际生产环境写流水线脚本。这个 VPN 和 jumpserver 因为时间问题就先不看了,jumpserver 环境其实很简单,官方文档讲的很清晰(ps:主要是有脚本,真舒服),最后说的就是这个NFS其实是存在较大隐患的,建议采用其他分布式文件系统解决,如 Ceph,HDFS,GlusterFS 等等。然后就是域名访问wordpress访问的时候会出现IP地址,是因为我在初始主机配置的时候填写的IP,这个要注意,如果想是用域名访问,请填写域名。文中的vim请敲 :wq保存文件。
16. 架构总结优缺点
优点:
1. 高可用性:通过 Keepalived 实现主备切换,提供持续的服务可用性,减少因服务器故障而导致的服务中断时间。
2. 负载均衡:通过 LVS-NAT 和 Nginx 实现负载均衡,合理分配请求负载,提高系统的整体性能和响应能力。
3. 扩展性:通过主从复制和负载均衡的方式,可以方便地扩展服务器数量,增加系统的处理能力和容量。
4. 弹性和容错性:当某个服务器故障时,系统可以自动切换到备份服务器,保证服务的持续可用性。
缺点:
1. 复杂性:这个架构涉及到多个组件和配置,需要一定的技术知识和经验来正确配置和管理。复杂性可能增加系统的部署和维护的难度。
2. 单点故障:虽然采用了主备切换和负载均衡的方式提高了系统的可用性,但是NFS和mysql始终是一个单点故障,需要值得深思。
3. 数据同步延迟:在主从复制的环境下,从服务器可能存在一定的数据同步延迟,这意味着在主服务器发生故障时,从服务器可能会丢失一部分数据。
4. 配置和管理复杂性:由于涉及多个组件和配置,需要更多的时间和精力来配置、监控和管理整个系统。
建议:
1. 建议mysql集群采用MHA解决单点故障,再加上mycat或者proxymysql等数据库中间件,更进一步提高高可用
2. NFS方案可替换
3. 因地制宜,提前规划,根据生产环境实际情况进行符合未来发展的架构
4. 少个普罗米修斯,缺个深信服,差个存储session的数据库,如果还需要内部仓可使用Nexus
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 破站!