1.基于四层+七层的负载均衡
实现负载均衡的方式有很多,例如基于DNS的负载均衡、基于四层交换技术的负载均衡、基于七层交换技术的负载均衡,其中nginx大家不陌生,我们可以通过配置实现负载均衡,可是问题也很明显,如果nginx宕机了,那么如何进行负载?这个时候会想多来几台nginx,综合考虑,今天介绍一种基于四层+七层交换技术的负载均衡,以虚拟ip来负载给我们多台nginx,再由nginx来实现负载均衡过程。本文采用CentOS 7.6作为操作系统示例。
2.nginx部署安装
2.1.环境准备
VMware创建2台虚拟机,XShell工具连接虚拟机进行操作,以下操作集群2台设备都需要完成:
- 2、为机子安装环境,采用yum源安装,注意设置yum源:
2.2.安装
- 下载“nginx-1.8.0.tar.gz”文件并解压:
- 在
/var/
下创建temp目录和nginx目录::
- 注意:执行./nginx启动nginx,这里可以-c指定加载的nginx配置文件,如下:
./nginx -c /usr/local/nginx/conf/nginx.conf
如果不指定-c,nginx在启动时默认加载conf/nginx.conf文件,此文件的地址也可以在编译安装nginx时指定./configure的参数(--conf-path= 指向配置文件(nginx.conf))
3.lvs部署安装
3.1.环境准备
VMware创建1台虚拟机,XShell工具连接虚拟机进行操作:
- 2、安装依赖,静等安装成功出现“Complete”即可:
3.2.安装
- LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
- centos6.5自带lvs,本系统采用centos7.6,检查linux内核是否集成lvs模块::
4.lvs实现四层负载DR模式与Nginx七层进行整合
- 在lvs虚拟机的eth33(自己网卡名字)上绑定虚拟ip假设为:192.168.1.200:
- 启用系统的包转发功能,参数值为1时启用ip转发,为0时禁止ip转发:
- -s rr表示采用轮询策略
- :80表示负载转发的端口是80
- 给虚拟IP中添加服务规则(1.13和1.14为两台nginx服务器):
- 在新加虚拟IP记录中添加两条新的Real Server记录,-g表示指定LVS 的工作模式为直接路由模式。lvs进行负载转发需要保证lvs负载的端口要和nginx服务的端口的一致,这里都为80
- 重启lvs
- 在lvs的DR和TUn模式下,用户的访问请求到达真实服务器后,是直接返回给用户的,而不再经过前端的Director Server,因此,就需要在每个Real server节点上增加虚拟的VIP地址,这样数据才能直接返回给用户
- 回环设备(nginx)上绑定了一个虚拟IP地址:
- arp_announce :定义不同级别:当ARP请求通过某个端口进来是否利用这个接口来回应。 0 -利用本地的任何地址,不管配置在哪个接口上去响应ARP请求; 1 - 避免使用另外一个接口上的mac地址去响应ARP请求; 2 - 尽可能使用能够匹配到ARP请求的最佳地址。
- arp_ignore:当ARP请求发过来后发现自己正是请求的地址是否响应; 0 - 利用本地的任何地址,不管配置在哪个接口上去响应ARP请求; 1 - 哪个接口上接受ARP请求,就从哪个端口上回应。
- 验证,通过vip是否可以访问到两台nginx
- 还可以通过七层部署负载几台tomcat来测试:
- 验证效果,此时通过lvs即可对Tomcat进行访问了,不管哪一台Tomcat宕机,或哪一台nginx宕机,都不会影响访问。那么如果lvs所在的机器宕机了呢?入口没了就找不到nginx了,这个时候可以通过keepalived的心跳机制来实现lvs的主备操作,以此来检测主机是否还存活,如果宕机,备机就作为主机使用了,几台先讲到这,下次有机会继续说部署方案。
文章转载自公众号:GreatSQL社区